Skip to main content
The Mailbox API uses standard HTTP status codes and the same error envelope as the Management API.

Error response format

{
  "ok": false,
  "error": {
    "code": "invalid_parameter",
    "message": "A human-readable description of the error.",
    "param": "cursor",
    "doc_url": "https://sendmux.ai/docs/api/errors#invalid_parameter",
    "retryable": false
  },
  "meta": {
    "request_id": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx"
  }
}
FieldDescription
codeStable machine-readable code. Branch client logic on this value.
messageHuman-readable description. Wording may change.
paramPresent when the error maps to a specific request field.
doc_urlLink to the error reference.
retryabletrue when the same request may succeed later without changes.
errorsPresent on accumulated validation failures.

Common codes

HTTP statusError codeRetryableMeaning
400invalid_parameterfalseBad query parameter or malformed request body.
400missing_parameterfalseRequired parameter missing.
401authentication_requiredfalseMissing, invalid, expired, or revoked API key.
403insufficient_permissionsfalseThe key is valid but cannot call this endpoint.
404not_foundfalseThe mailbox or requested resource is absent or inaccessible.
409conflictfalseThe resource state prevents the operation.
409idempotency_conflictfalseAn Idempotency-Key was reused with a different request.
413payload_too_largefalseThe request body is too large.
422validation_errorfalseThe request parsed correctly but violates a semantic rule.
429rate_limit_exceededtrueRate limit hit. Honour Retry-After.
500internal_errortrueUnexpected server error.
503service_unavailabletrueA required service is temporarily unavailable. Honour Retry-After when present.

Retry handling

Retry only when retryable is true. For 429 and 503, use the Retry-After header before retrying.
HTTP/1.1 429 Too Many Requests
Retry-After: 30
Content-Type: application/json
For POST requests that support Idempotency-Key, send a unique key so a retry cannot perform the same operation twice.