Errors
Errors
Every refusal has one shape, on every surface:
{
"error": {
"code": "conflict",
"message": "Someone saved this file first. Read it again, redo your change on the new version and save.",
"retryable": true,
"currentVersion": 4
}
}
- Where it appears. In a tool result with
isError: true, as the text of the result; in thedataof a JSON-RPC error, soerror.data.errorholds it and the JSON-RPCerror.codestays numeric; and as the body of an upload or download link answer, with the HTTP status that goes with the code. code. Lower snake_case, such asinvalid_arguments,unknown_tool,organization_inactive,rate_limited,credits_exhaustedorinternal. Branch oncode; the set is fixed.message. One plain sentence in the language of the request, ending with the next step. It never starts with the code.retryable. Alwaystrueorfalse. Whentrue, repeat the call, afterretryAfterSecondswhen it is present.- Details. Next to the three fields, a refusal may carry
currentVersion(the version to redo your change on),retryAfterSeconds,failingRecords(the records that failed, in a batch) andissues(each invalid field and what it expects).
A failure Siglata did not expect answers internal, retryable, with a generic message: it never carries database, provider or stack text.