Sends a notification to one or every paired device for the user behind the bearer token. Accepts JSON, form-encoded, or text/plain bodies. When the body is text/plain (or has no Content-Type), the entire body becomes the message field.
Total serialized envelope size is hard-capped at 2048 bytes. Requests over that limit return 413 payload_too_large before any rate-limit counters are charged.
Unknown device labels in the device parameter are surfaced as warnings, not errors — long-running cron jobs do not break when a device is unpaired.
Documentation Index
Fetch the complete documentation index at: https://docs.reflecto.dev/llms.txt
Use this file to discover all available pages before exploring further.
Opaque bearer token created on your paired Android phone. The format is rfk_live_ followed by 32 URL-safe alphanumeric characters (≥160 bits of entropy). Test tokens use the rfk_test_ prefix.
Canonical send payload. Form-encoded and text/plain bodies are documented in the guides — the server normalises them to this shape.
Notification body. Required. 1–1500 bytes (UTF-8). maxLength is omitted from the schema because JSON Schema measures characters, not bytes — server enforces a byte cap to keep the 2 KB envelope budget honest across CJK / emoji content.
1"Backup finished in 12m"
Headline rendered above the body. 1–100 bytes (UTF-8). Schema omits maxLength because JSON Schema measures characters, not bytes.
1"Backup"
Notification priority. min/low use normal FCM; rest use high.
min, low, default, high, urgent "default"
Up to 5 tags rendered as labels. Oversize / overcount entries are truncated with a warning rather than rejected — maxItems is deliberately omitted so SDK generators don't client-side-reject valid-but-overcount inputs that the server will accept and trim.
Tag string. Oversize / overcount entries are truncated with a warning rather than rejected.
Clickable URL attached to the notification. http(s) only, ≤ 512 bytes.
"https://example.com/backup/123"
Display text for url. ≤ 32 bytes (UTF-8). Schema omits maxLength because JSON Schema measures characters, not bytes.
"View report"
Up to 3 action buttons. Each button opens its url when tapped. Overcount entries are truncated with a warning — maxItems is deliberately omitted so SDK generators don't client-side-reject.
Target device(s). all (default), mobile (alias phone), desktop, or a comma-separated list of device labels. Unknown labels become warnings.
256"all"
Render the body as Markdown on the extension. Ignored on Android in MVP.
false
Seconds the message stays in the per-device queue if not delivered live. Out-of-range values are silently clamped to the [0, 259200] range (72 hours, matching the Redis queue TTL).
0 <= x <= 259200259200