Skip to main content
Attesso fails closed. A timeout, infrastructure failure, or non-allow response never grants permission to execute.

Problem responses

When Attesso supplies an error body, it uses application/problem+json. The values below illustrate the response shape; use the exact codes returned by the API.
Branch on the returned code, retryable, and field pointers. Do not branch on human-readable title, detail, or message text.

Status codes

Edge-generated 429 responses may omit the problem body, request ID, and Retry-After header.

Idempotency keys

Every write requires Idempotency-Key.
Keys must be 16–255 characters and contain only letters, digits, ., _, :, or -.
  • Scope one key to one logical operation.
  • Persist the key with your operation state before sending the request.
  • Retry identical canonical input with the same key.
  • Use a new key for a different operation.
  • Reusing a key with different input returns 409.
A successful replay returns the same resource identity in its current state and includes Idempotency-Replayed: true.

Retry pattern

1

Classify the failure

Respect retryable when a problem body is present. Treat uncertain execution outcomes as non-permission.
2

Keep the original operation identity

Reuse the same idempotency key and byte-equivalent logical input.
3

Back off with jitter

Honor Retry-After when present. Otherwise use bounded exponential backoff.
4

Reconcile by reading

If a lifecycle transition remains uncertain, retrieve the mandate or authorization before taking another action.
Log Attesso-Request-Id for correlation. It is safe to share with Attesso support and does not contain credentials.