invalid_jsonHTTP 400 · not retryable | The body could not be parsed as JSON. |
idempotency_key_requiredHTTP 400 · not retryable | Creating an order requires an Idempotency-Key header. |
invalid_idempotency_keyHTTP 400 · not retryable | The Idempotency-Key header is empty, too long or contains spaces or non-ASCII characters. |
invalid_preconditionHTTP 400 · not retryable | If-Match is not a single entity tag. Send the ETag you received, e.g. "3". |
invalid_cursorHTTP 400 · not retryable | The pagination cursor was altered or truncated. Pass next_cursor back exactly as received. |
unauthorizedHTTP 401 · not retryable | The API key is missing, malformed, unknown or revoked, or its integration is disabled. |
forbiddenHTTP 403 · not retryable | The key does not have the scope this endpoint needs (sending customer also needs contacts:write), or the branch is disabled. |
not_foundHTTP 404 · not retryable | The branch, pager, order or endpoint does not exist, or your key cannot access it. Inaccessible resources always look like missing ones. |
no_active_orderHTTP 404 · not retryable | Invoice commands only: the invoice has no active order in this branch. details.last_status tells you what happened to its latest order (for example collected). If it is the state you wanted, treat it as success. |
invoice_activeHTTP 409 · not retryable | The invoice (or your external_id) already has an active order in this branch. details.pager_number shows which card holds it. |
invalid_transitionHTTP 409 · not retryable | The command does not apply to the order's current status, for example ringing an order that is still preparing or marking a collected order ready. |
ring_limitHTTP 409 · not retryable | An order can alert the customer at most 6 times, automatic reminders included. |
idempotency_conflictHTTP 409 · not retryable | The Idempotency-Key already belongs to a different request (method, path or body) that succeeded or is still running. Use a new key for a new operation. |
idempotency_in_progressHTTP 409 · retryable | The first request with this key has not finished yet. Retry after Retry-After seconds with the same key. |
version_conflictHTTP 412 · not retryable | If-Match did not match the order's current version. details.current_version holds the latest version; re-read the order and decide again. |
payload_too_largeHTTP 413 · not retryable | Request bodies are limited to 16 KB. |
validation_failedHTTP 422 · not retryable | A field or query parameter is missing or invalid. details.issues lists each problem with its path. |
ring_too_soonHTTP 429 · retryable | Rings must be at least 30 seconds apart. Retry after details.retry_after seconds (also in Retry-After). |
rate_limitedHTTP 429 · retryable | More than 600 requests in one minute for this integration. Retry after Retry-After seconds. |
internal_errorHTTP 500 · retryable | Something failed on our side. Retry with backoff and the same Idempotency-Key; read the order first if you are unsure whether the command applied. Quote request_id when reporting it. |