Your first push notification in 10 minutes
Set up an app, register a device, and send a notification.
Set up with your agent
Copy a prompt with the quickstart, SDK guides and MCP connection. Sign in or create your account when the agent opens the browser.
Copy setup promptRead the prompt
Help me send my first mobile push with Carillon in this project.
Read https://app.carillon.dev/docs/llms.txt, then https://app.carillon.dev/docs/quickstart and the SDK guide matching this codebase:
React Native: https://app.carillon.dev/docs/sdks/react-native
Swift: https://app.carillon.dev/docs/sdks/swift
Kotlin: https://app.carillon.dev/docs/sdks/kotlin
Connect the hosted MCP at https://app.carillon.dev/mcp using OAuth. Open the browser so I can sign in or create an account; never ask for my password.
List my organizations and select the appropriate workspace.
Reuse a matching app or create one after checking the existing apps.
Inspect the code and use the installed SDK API. Get an active mobile key with key_list. Never put a secret key in the mobile app.
Check provider credentials and guide me through any Apple/Firebase steps or device actions you cannot perform. Keep credential files and secrets out of chat and version control.
Configure the SDK, native capabilities and notification permission, then rebuild. Verify the device registration, send one notification only to my chosen test device, and inspect its trace. A provider acceptance is not proof of display on the phone. Report what was verified and what still needs my action.
Read the current MCP tool list; use the documented API or dashboard when a required action is not available as a tool.Prerequisites
- Access to the Carillon dashboard. You can create an account with your email and password.
- An iOS or Android app you can build and run.
- An APNs
.p8key for iOS, a Firebase service account JSON for Android, or both.
Samples on this page show placeholders. Sign in to the dashboard in this browser and they fill in with your own organization, app and mobile key.
1. Create an app
In the dashboard, create an app in your workspace. A workspace is created automatically when you sign up. Use one Carillon app for the iOS and Android versions of the same application.
Open API keys. Copy the mobile key created with the app, then create a secret key.
| Key | Where to use it |
|---|---|
carillon_mk_live_… | In your mobile app, to register devices |
carillon_sk_live_… | On your backend, to send notifications and read delivery results |
Copy the secret key before closing the dialog. It is shown only once.
2. Upload a provider credential
Open the app's Credentials page and upload the credential for each platform you use.
| Platform | Required values |
|---|---|
| iOS / APNs | .p8 file, Key ID, Team ID, and the app's Bundle ID |
| Android / FCM | Service account JSON from the same Firebase project as your Android app |
Check the credential status after upload. See provider credentials for setup and validation errors.
3. Register your device
Follow the setup guide for your platform. Each guide includes installation, configuration, and the native callbacks required for registration and open tracking.
Configure the SDK with the mobile key, then run the app. configure() starts registration
without displaying a permission prompt. Call requestPermission() when your app should ask to
show notifications.
Open Devices in the dashboard and copy the registered device's ID. Use that ID in the request below. If the device is missing, check registration troubleshooting.
For iOS, development builds register in sandbox; TestFlight and App Store builds use
production. The SDK detects the environment.
4. Send a notification
Replace the example device ID and secret key with your values. Put the mobile app in the background so the operating system can display the notification.
curl -X POST https://api.carillon.dev/v1/messages \-H "Authorization: Bearer carillon_sk_live_your_secret_key" \-H "Content-Type: application/json" \-H "Idempotency-Key: 018f2c8a-6f3f-7a2b-9f1e-2c9b0f4d5a11" \-d '{ "audience": { "device_ids": ["01937b1e-0000-7000-8000-000000000000"] }, "payload": { "title": "Hello from Carillon", "body": "Your first notification." }}'Expected response: 202 Accepted, with a campaign id, status: "sending", and a
deliveries list containing the device and delivery IDs.
Reuse the same Idempotency-Key and unchanged request body when retrying this send. Use a new key
for a new notification.
5. Check delivery
Replace the example campaign ID with the id returned by the send request.
curl https://api.carillon.dev/v1/messages/01937b20-0000-7000-8000-000000000000 \-H "Authorization: Bearer carillon_sk_live_your_secret_key"Check outcomes for the campaign totals and deliveries for individual results.
| Delivery status | Next step |
|---|---|
queued or in_flight | Check again; the outcome is pending. |
sent | APNs or FCM accepted the notification. If it is not displayed, check device permission and notification settings. |
failed | Read error_code and follow troubleshooting. |
For complete request and response examples, see send a notification. To handle a tap, follow track opens.