The API uses standard HTTP status codes. Error bodies come in a few shapes depending on the endpoint family.
Status codes
Error shapes
Arena (chat & battles)
Threads, votes, models
Authentication
Unexpected
Battles and chat use an ai.error envelope: Other endpoints use a success: false envelope:Common codes: INVALID_REQUEST, UNAUTHORIZED, FORBIDDEN, NOT_FOUND, VOTE_ERROR, THREADS_ERROR, MODELS_ERROR. Token problems return 401 with an empty body. Read the WWW-Authenticate header: Unhandled errors return 500 as application/problem+json:
Model failures aren’t errors
If a model fails or takes longer than 60 seconds, the battle still succeeds with 200. That side’s answer comes from a fallback model and starts with a note:
If the fallback also fails, the answer text says the model is temporarily unavailable. Check message for these prefixes if you aggregate results.
Handling errors
Include the X-Correlation-Id response header when you contact support@dualmindlab.tech. It lets us find your request in the logs. Last modified on October 18, 2026