Quick start
Send your first notification with one HTTP request.
Create a channel and token
- Open the console and create a
signupschannel. - Create an API token under Workspace settings → API tokens. Copy it and keep it on your server.
You are the channel's first push recipient. Add others in channel settings.
Send a message
Replace YOUR_API_TOKEN below. The optional project must already exist; create revos or omit that field.
curl 'https://appkeepr.com/api/messages' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
--data '{
"channel": "signups",
"project": "revos",
"title": "New user registered",
"message": "jane@example.com created an account.",
"icon": "🎉"
}'The message appears in your Inbox. To receive push notifications, sign in on your phone and enable notifications.
A successful request returns 201:
{
"notificationId": "8f28c961-8129-4219-9601-02cf564ca737",
"outcome": "created"
}For JavaScript or TypeScript, use the Node.js SDK.
Request details
POST /api/messages accepts JSON with a Bearer API token. Only channel and message are required.
| Field | Description |
|---|---|
channel | Existing channel name. No whitespace; max 120 characters. |
message | Message text. Max 4,000 characters. |
project | Optional project name. Lowercase letters, numbers, and single hyphens; max 120 characters. |
title | Max 180 characters. Defaults to Message. |
icon | A single emoji. |
fields | Up to 10 { label, value } pairs. Max 80 characters per label and 1,000 per value. |
actions | Up to 3 { label, url } links. Max 40 characters per label and 2,048 per HTTP(S) URL. |
Channel and project names must match existing names in your token's workspace. The JSON body limit is 32 KiB.
Retries
Send an Idempotency-Key header with a stable event ID (1–220 characters). Within the same channel, repeating the same key and request returns the original message with 200 and outcome: "duplicate". Changing the content or project returns 409.
Errors
Errors return { code, error }.
| Status | Meaning |
|---|---|
400 | Invalid input |
401 | Invalid or revoked token |
404 | Channel or project not found |
409 | Idempotency key reused with different content or project |
413 | Request body too large |
415 | Content type must be application/json |
A successful response confirms the message was saved. Push delivery happens separately.