Skip to main content
Most Reflecto errors return JSON with a stable error.code you can switch on in client code; authentication failures (401) use a flat shape instead — see the auth shape below. The human-readable message may evolve; the codes will not.

Error shape

Most endpoints return:
details is populated on payload_too_large (413) as { size, max } (the serialized envelope size), and on the byte-length 400 errors (message_too_long, invalid_title, invalid_url, invalid_url_title, invalid_action) as { bytes, max } — the actual UTF-8 byte count of the offending field and the cap it exceeded. URL errors that fail for a non-length reason (malformed URL, non-http(s) scheme) carry no details.

Message-text changes from earlier API revisions

The error code values are stable wire contracts and have not changed. The human-readable error.message strings, however, were rewritten when validation moved to Zod schemas. Clients that match on .code are unaffected; clients that display .message verbatim will see new wording:

Auth failure shape

Auth failures use a flat shape so token problems don’t get masked behind nested structure. The full shape — both fields — is shown below:
message is optional. The invalid_token variant omits it (the code alone is actionable):

Status codes

Codes

Validation (400)

Auth (401)

Scope (403)

Size (413)

Rate limit (429)

Server errors (5xx)

Warnings vs errors

Some conditions are surfaced as warnings on a 200 response rather than errors, to keep long-running automations alive:
  • unknown device label: '…' — one of the names in device didn’t match any paired device.
  • device fallback: all entries unknown, delivering to every paired device — every entry was unknown; the send fell back to broadcast.
  • tags truncated to first 5 (got 7) — excess tags dropped.
  • tag #N truncated to 32 bytes — a tag exceeded the per-tag byte cap.
  • actions truncated to first 3 (got 5) — excess action buttons dropped.
  • no paired devices for this token's owner — the request succeeded but produced no enqueues. Useful for cron jobs run during transient unpairing.
  • token scope '…' dropped out-of-scope device(s): … — caller’s device parameter referenced devices outside the token’s scopeDevices.