Create an app in the OneSignal dashboard and configure the platform credentials (APNs certificate/key for iOS, FCM server key for Android); obtain the app_id and REST API key.
Integrate the OneSignal SDK in the client app to register devices; each device registration creates a player/subscription record with a unique player_id or subscription_id.
To target specific users, use external_id to associate your own user identifiers with OneSignal subscriptions via the SDK or by calling the Update Subscription endpoint.
Send a notification by POSTing to https://onesignal.com/api/v1/notifications with Authorization: Basic {REST_API_KEY}, app_id, contents (localized message map), and a targeting parameter such as include_external_user_ids, filters, or included_segments.
Check delivery results via GET https://onesignal.com/api/v1/notifications/{notification_id}?app_id={app_id} which returns successful, failed, and converted counts.
Known gotchas
The REST API key (used server-side) and the App ID are different credentials; using the User Auth Key instead of the REST API Key for notification sends is a common mistake that returns a 400 error.
Targeting by player_id is being deprecated in favor of subscription_id and external_id; new integrations should use the newer identifiers to avoid future breakage.
iOS notifications require APNs to be correctly configured and the app to have notification permissions granted by the user; a misconfigured APNs key causes iOS deliveries to silently fail while Android succeeds.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp