Errors
Every error has a status, a type your code can branch on, and a message to show.
An error is JSON with a type and a message:
{
"error": {
"type": "insufficient_credit",
"message": "Your balance is $0.00. Buy credits in the Eevo console."
}
}
| Status | Type | Meaning |
|---|---|---|
| 400 | invalid_request | The body does not match the schema, or breaks a limit. |
| 401 | authentication | The key is missing, wrong or revoked. |
| 402 | insufficient_credit | The balance cannot pay for the request. |
| 409 | model_unavailable | Eevo-1 is not available in this mode right now (no serving endpoint). Retry later. Nothing is charged. |
| 409 | revision_conflict | The decision in revises already has a revision. The message names the latest of its chain: revise that one. Nothing is charged. |
| 429 | rate_limited | Too many requests for the key or the organization this minute. |
| 400 (Default mode) | too_many_overlap_pairs | A stakeholder has more than 120 overlap pairs. List fewer consequences for it. |
| 400 (Default mode) | too_many_records | The request needs more than 450 model calls. Send fewer stakeholders or consequences. |
| 503 | free_capacity_busy | A request on free decisions found the model busy with other requests. Retry after the Retry-After seconds. Nothing is charged and no free decision is used. Requests paid from credit do not wait. |
| 5xx | server_error | Eevo could not answer. Retry with backoff. |
A 400 names the field and what is wrong with it, for example options.1.consequences: List at least one consequence for each option. Unknown fields are refused, so a misspelling does not go unnoticed. Nothing is charged for an error. Handle long runs, rate limits and timeouts says which to retry.