Skip to content

budget_exceeded

The agent used its budget for the current period.

HTTP 429 · rate_limit_error · retry after the time in Retry-After

The agent used its budget for the current period. The response carries Retry-After in seconds, and the message says when the period resets. On POST /v1/actions the message is the budget decision’s own sentence, verbatim, and the refusal is recorded and sealed: the envelope carries the sealed action in error.action. A budget another request reserved first becomes a recorded budget_exceeded too. A replay of the same Idempotency-Key answers with the same refusal, and its Retry-After counts down to the same reset.

Wait until the time in the message, or ask an admin to raise the budget. A 429 is not a reason to retry at once: the next attempt is refused and recorded the same way until the window resets.

HTTP 429 · budget_exceeded
{
"error": {
"type": "rate_limit_error",
"code": "budget_exceeded",
"message": "Budget \"agent-rate\" reached: 60 of 60 calls this minute. Try again in 14 s.",
"param": null,
"action": {
"object": "action",
"id": "act_01k6w4a2c4e6g8j0m2p4r6t8v0",
"state": "sealed",
"status": "denied",
"deed": "deed_01k6w4a4e6g8j0m2p4r6t8w0y2",
"…": "…"
},
"request_id": "req_01j9zr3m5k8q2w7x4t6v0b1c9d",
"doc_url": "https://docs.deedglass.com/errors/budget_exceeded"
}
}

The message is for a person and can get more exact over time: branch on type and code, never on the message.

SDK Raised as
TypeScript (@deedglass/sdk) BudgetExceededError with code === "budget_exceeded"
Python (deedglass) deedglass.BudgetExceededError with .code == "budget_exceeded"