Push notifications and webhooks
Enable push, copy your API token, test notifications, send custom webhook alerts, and fan out agent pushes across devices on the same license.
Moshi supports push notifications from two sources: custom webhooks and agent events from moshi-hook.
Enable push
Open Settings -> Push Notifications and turn notifications on. iOS may ask for system permission. If permission is denied, open iOS Settings and enable notifications for Moshi.
After registration succeeds, Moshi shows an API token in the settings screen.
Pause and resume
The notifications switch can pause Moshi delivery without deleting your token. Turn it back on when you want events to resume.
Test notifications
Use the test action in the notification settings screen to send a normal notification or an image notification. Test notifications are unavailable on the iOS simulator.
Webhook API
Use the copied token with Moshi's webhook endpoint:
$curl -X POST https://api.getmoshi.app/api/webhook \$ -H "Content-Type: application/json" \$ -d \'{"token":"YOUR_API_TOKEN","title":"Done","message":"Build finished"}'
This is useful from shell scripts, CI jobs, cron tasks, and agent prompts.
Unified push
By default, /api/webhook sends to the device that owns the token. To reach every opted-in device joined to the same Moshi license, include unified: true on the webhook payload.
$curl -X POST https://api.getmoshi.app/api/webhook \$ -H "Content-Type: application/json" \$ -d \'{"token":"YOUR_API_TOKEN","title":"Done","message":"Build finished","unified":true}'
With unified: true, Moshi looks up the license joined by the token's device and fans the push out to every device on that license whose unified-push setting is on. Devices that only restored the store purchase but have not joined the Moshi license are not included.
Events sent by moshi-hook use unified push automatically when the host is attached to a license. The hook cannot choose one specific target device; delivery goes to all opted-in devices on that license. To stop receiving shared host pushes on one device, turn unified push off for that device in Settings -> Your License.
Legacy agent-events endpoint
POST /api/v1/agent-events is a direct-only compatibility endpoint for older third-party harnesses that send structured agent events with a user token. It does not support unified: true; use /api/webhook for custom unified pushes, or /api/v1/hosts/:hostId/events from a paired host daemon.
This legacy endpoint is scheduled for retirement on June 15, 2026. After that date, it returns 410 legacy_agent_events_retired.
Agent notifications
For coding agents, prefer moshi-hook over hand-written webhook prompts. Hooks can distinguish approvals, turn completion, session starts, and tool activity without relying on the agent remembering to call curl.
Images
Webhook payloads can include image data when supported by the endpoint. In the app's test flow, Moshi sends a sample image URL so you can verify rich notification behavior.
Token handling
Treat the API token like a notification secret. Anyone with the token can send notifications to your device. If a token leaks, disable and re-register notifications from the app.