Sending Notifications via the Expo Push API
POST a notification payload to the Expo Push API from your server or a curl command, target a specific device token, and verify delivery in the Expo dashboard.
The Expo Push Notification Service
The Expo Push Notification Service (EPNS) is a relay that sits between your server and the platform-specific push gateways (Apple APNs and Google FCM). Instead of integrating with two separate services, you send one HTTP request to Expo's API and it handles the platform differences for you.
EPNS is free for apps using Expo's managed workflow and handles certificate management, token routing, batching, and error reporting. For production apps with high volume you can switch to direct APNs/FCM integration, but EPNS is an excellent starting point for most apps.
The Expo Push API Endpoint
Send a POST request to https://exp.host/--/api/v2/push/send with a JSON body containing one or more notification messages. Each message targets a specific Expo push token and includes the notification content.
The API accepts up to 100 messages per request for efficient batching. Always send from your server, never from the client — the client doesn't know other users' tokens and sending from the client exposes your server logic.
// From your backend server (Node.js example):
const response = await fetch('https://exp.host/--/api/v2/push/send', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
to: 'ExponentPushToken[AbCdEfGhIjKl...]',
title: 'New message',
body: 'Alice sent you a message!',
}),
});
const result = await response.json();
console.log(result);All lessons in this course
- Requesting Permission and Getting a Push Token
- Sending Notifications via the Expo Push API
- Handling Foreground and Background Notifications
- Notification Channels and Rich Content