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."
  }
}
StatusTypeMeaning
400invalid_requestThe body does not match the schema, or breaks a limit.
401authenticationThe key is missing, wrong or revoked.
402insufficient_creditThe balance cannot pay for the request.
409model_unavailableEevo-1 is not available in this mode right now (no serving endpoint). Retry later. Nothing is charged.
409revision_conflictThe decision in revises already has a revision. The message names the latest of its chain: revise that one. Nothing is charged.
429rate_limitedToo many requests for the key or the organization this minute.
400 (Default mode)too_many_overlap_pairsA stakeholder has more than 120 overlap pairs. List fewer consequences for it.
400 (Default mode)too_many_recordsThe request needs more than 450 model calls. Send fewer stakeholders or consequences.
503free_capacity_busyA 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.
5xxserver_errorEevo 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.