tools/integrations/onesignal.md
Push notification, email, SMS, and in-app messaging platform for customer engagement at scale.
| Integration | Available | Notes |
|---|---|---|
| API | ✓ | Notifications, Users, Segments, Templates, Apps |
| MCP | - | Not available |
| CLI | ✓ | onesignal.js |
| SDK | ✓ | JavaScript, Node.js, Python, Java, PHP, Ruby, Go, .NET |
Authorization: Basic {REST_API_KEY}app_id in request bodiesPOST https://api.onesignal.com/api/v1/notifications
Headers:
Authorization: Basic {REST_API_KEY}
Content-Type: application/json
{
"app_id": "YOUR_APP_ID",
"included_segments": ["Subscribed Users"],
"headings": { "en": "New Feature!" },
"contents": { "en": "Check out our latest update." },
"url": "https://example.com/feature"
}
POST https://api.onesignal.com/api/v1/notifications
Headers:
Authorization: Basic {REST_API_KEY}
Content-Type: application/json
{
"app_id": "YOUR_APP_ID",
"include_aliases": { "external_id": ["user-123", "user-456"] },
"target_channel": "push",
"contents": { "en": "You have a new message." }
}
POST https://api.onesignal.com/api/v1/notifications
Headers:
Authorization: Basic {REST_API_KEY}
Content-Type: application/json
{
"app_id": "YOUR_APP_ID",
"included_segments": ["Subscribed Users"],
"contents": { "en": "Scheduled notification" },
"send_after": "2025-12-01 12:00:00 GMT-0500"
}
GET https://api.onesignal.com/api/v1/notifications?app_id={APP_ID}&limit=50&offset=0
Headers:
Authorization: Basic {REST_API_KEY}
GET https://api.onesignal.com/api/v1/notifications/{notification_id}?app_id={APP_ID}
Headers:
Authorization: Basic {REST_API_KEY}
DELETE https://api.onesignal.com/api/v1/notifications/{notification_id}?app_id={APP_ID}
Headers:
Authorization: Basic {REST_API_KEY}
GET https://api.onesignal.com/api/v1/apps/{APP_ID}/segments
Headers:
Authorization: Basic {REST_API_KEY}
POST https://api.onesignal.com/api/v1/apps/{APP_ID}/segments
Headers:
Authorization: Basic {REST_API_KEY}
Content-Type: application/json
{
"name": "Active Users",
"filters": [
{ "field": "session_count", "relation": ">", "value": "5" }
]
}
GET https://api.onesignal.com/api/v1/apps/{APP_ID}/users/by/external_id/{external_id}
Headers:
Authorization: Basic {REST_API_KEY}
POST https://api.onesignal.com/api/v1/apps/{APP_ID}/users
Headers:
Authorization: Basic {REST_API_KEY}
Content-Type: application/json
{
"identity": { "external_id": "user-789" },
"subscriptions": [
{ "type": "Email", "token": "[email protected]" }
],
"tags": { "plan": "pro", "signup_source": "organic" }
}
GET https://api.onesignal.com/api/v1/templates?app_id={APP_ID}
Headers:
Authorization: Basic {REST_API_KEY}
successful - Number of successful deliveriesfailed - Number of failed deliveriesconverted - Users who clicked/convertedremaining - Notifications still queuederrored - Count of errorsopened - Notification open countsession_count - Total user sessionslast_active - Last activity timestamptags - Custom key-value metadatasubscriptions - Active subscription channelsapp_id - Application ID (required)included_segments - Target segments arrayexcluded_segments - Excluded segments arrayinclude_aliases - Target specific users by aliastarget_channel - Channel: push, email, smscontents - Message content by language codeheadings - Notification title by language codeurl - Launch URL on clickdata - Custom key-value data payloadsend_after - Scheduled send time (UTC string)ttl - Time to live in secondssession_count - Number of sessionsfirst_session - First session datelast_session - Last session datetag - Custom tag valuelanguage - User languageapp_version - App versioncountry - User country codeRetryAfter header with seconds to wait