Skip to main content
Signal returns errors as RFC 9457-style problem details with Content-Type: application/problem+json. The error document is not wrapped in an error object.

Problem fields

Branch application behavior on code and status. Do not parse title or detail strings as a programmatic contract.

Status map

Safe retries

Retry idempotent reads, deletes whose documented state semantics permit it, and email admissions carrying the same JSON-body idempotencyKey. For 429, wait at least the integer seconds in Retry-After when returned. Cap retry count and elapsed time. Do not automatically retry other 4xx failures unchanged. Do not create a new idempotency key for the same logical email.

Logging

Record code, status, requestId, instance, endpoint, UTC time, and your own operation ID. Never record the API key, Authorization header, attachment content, or sensitive message body.

Error contract

See the complete problem example and shared retry guidance.