Error codes and handling patterns specific to the Responses API.
Not yet available. The Responses API is on the roadmap. The page below documents the intended behavior.
The Responses API uses the same error envelope as the rest of OpenDunes, with a small set of additional codes for thread management.
All errors return a JSON body:
retry_after is only present on rate_limited and temporary_unavailable responses.
| HTTP | error code | Meaning |
|---|---|---|
| 400 | invalid_request | Malformed JSON or missing required field |
| 401 | unauthenticated / invalid_api_key | Missing or invalid Authorization header |
| 402 | insufficient_credits | Balance too low — deposit more DA at /dashboard |
| 403 | account_suspended / model_not_allowed | Action forbidden for your account tier |
| 404 | model_not_found | Unknown model slug |
| 404 | response_not_found | The previous_response_id does not exist or belongs to another key |
| 410 | response_expired | Thread was deleted or has aged out of retention |
| 422 | (validation payload) | Invalid parameter values |
| 429 | rate_limited | Too many requests — back off for retry_after seconds |
| 503 | temporary_unavailable | Retry shortly |
| 502 | upstream_error / upstream_timeout | Upstream provider failed or timed out |
response_not_found and response_expired are unique to the Responses API. Both mean the thread ID is no longer valid. To recover, start a new thread from the last known state on your client.
When streaming, an error mid-response arrives as a data event before [DONE]:
Parse every data event for an error key before treating the stream as complete.