Skip to main content
Every error response uses the same envelope. Branch on error.code, which never changes for a given condition. error.message is written for people and may change.

Handling errors

  • Retryable errors (retryable: true): wait for Retry-After when present, otherwise back off exponentially, and retry with the same Idempotency-Key. Blujay returns the original result instead of sending twice. Check the flag, not the status: most 409 codes are not retryable, and 429 and 503 usually are.
  • Everything else (retryable: false): retrying the same request returns the same error. Fix the request first. The sending rules errors are all in this group.
  • Support: when you contact support@blujay.io, include the trace_id and your X-Request-ID. Never send your API key.
A failed message is different from a failed request. A request can succeed (202 Accepted) and the message can fail later. Failed messages report failure_code on the message and in message.failed webhooks. See Message lifecycle.

All error codes

Request errors

Authentication

Idempotency

Rate limits and capacity

Sending messages

Chats and groups

Edit and unsend

Media

Contacts

Workflows

Webhooks

Server and availability