Developer Push API
Server-to-Server
Send a push to any user from your backend with one HTTP call. No dashboard, no campaigns needed. Perfect for transactional and real-time alerts.
The Developer API lets you trigger push notifications directly from your server. Use it for order updates, chat messages, payment confirmations, and any backend-triggered notification.
Endpoint
endpoint
http
POST https://api.smartapppush.ai/developer/pushAuthentication: X-Server-Keyheader with your app's server key.
Request Example
request body
json
{
"app_user_id": "user_123",
"title": "Your order has shipped!",
"body": "Order #4521 is on its way. Delivery: March 31.",
"extra_data": {
"order_id": "4521",
"screen": "order_detail",
"tracking_url": "https://track.example.com/4521"
},
"schedule_at": "2026-03-29T15:00:00Z",
"priority": 8,
"dedupe_key": "order-shipped-4521"
}cURL Example
terminal
bash
curl -X POST https://api.smartapppush.ai/developer/push \
-H "Content-Type: application/json" \
-H "X-Server-Key: your-server-key-uuid" \
-d '{
"app_user_id": "user_123",
"title": "New message from Sarah",
"body": "Hey, are you free for lunch tomorrow?",
"extra_data": {
"screen": "chat",
"chat_id": "conv_789"
}
}'Response
201 Created
json
{
"push_count": 1,
"app_user_id": "user_123",
"app_id": "your-app-uuid"
}Field Reference
| Field | Required | Description |
|---|---|---|
| app_user_id | Yes | The user to send the push to |
| title | Yes | Push notification title |
| body | Yes | Push notification body text |
| extra_data | No | Custom key-value data for deep linking and navigation |
| schedule_at | No | RFC 3339 timestamp. Defaults to immediately |
| priority | No | 1 (lowest) to 10 (highest). Default: 5 |
| dedupe_key | No | Prevents duplicate pushes within a 10-minute window |
Error Responses
| Status | Meaning |
|---|---|
| 400 | Missing required fields or invalid format |
| 401 | Missing or invalid X-Server-Key header |
| 404 | No devices with push permission found for this user |
| 429 | Rate limit exceeded (100 req/sec per IP). Check Retry-After header |
| 503 | Server overloaded. Retry after a short delay |
Important Notes
- The
app_user_idmust match exactly what your app sends in events - Pushes only deliver to devices with push permission enabled (404 if none found)
- The
extra_dataobject is included in the push payload for deep linking - For bulk sends, use campaigns instead of the Developer API