---
title: "Replace usage budgets"
method: PUT
path: "/v1/accounts/{accountId}/business-agent/budget"
tags: ["Business Agent"]
---

# Replace usage budgets

`PUT /v1/accounts/{accountId}/business-agent/budget`

The full desired set: budgets left out are removed, an empty list returns to unlimited. Pass `budget_id` to edit one in place. When a cap is hit the agent finishes its turn, stops answering and hands the thread to a human until the window rolls over.

## Path parameters

- `accountId` string, required

## Request body

- object
  - `budgets` BusinessAgentBudget[], required
    - `budget_id` string — Pass it back to edit an existing budget; omit to add one.
    - `unit_type` 'token' | 'ai_turn', required — Tokens count across the Business Manager, AI turns per conversation.
    - `time_window` 'one_day' | 'seven_days' | 'fourteen_days' | 'thirty_days', required — Rolling window in the WABA timezone.
    - `max_budget` integer, required

## Response `200`

Budgets after the update

- object
  - `budgets` BusinessAgentBudget[], required
    - `budget_id` string — Pass it back to edit an existing budget; omit to add one.
    - `unit_type` 'token' | 'ai_turn', required — Tokens count across the Business Manager, AI turns per conversation.
    - `time_window` 'one_day' | 'seven_days' | 'fourteen_days' | 'thirty_days', required — Rolling window in the WABA timezone.
    - `max_budget` integer, required

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `403` — Inbox add-on required, the WhatsApp token lacks the Business Agent permissions (code reconnect_required), or the merchant has not accepted the Meta Business Agent terms in WhatsApp Manager (code business_agent_terms_not_accepted).
- `404` — Account not found, or no agent exists on the number yet or the referenced item does not exist (code business_agent_not_found).

## Changes

- **2026-09-16** `3e6ddf2a99ea` — 3 info
  - added the optional property `details/budgetScope` to the response with the `400` status
  - added the optional property `details/budgetScope` to the response with the `403` status
  - added the optional property `details/budgetScope` to the response with the `404` status
- **2026-09-15** `0dba7d004d75` — 6 info
  - added the optional property `details/quotaExhausted` to the response with the `400` status
  - added the optional property `details/quotaExhausted` to the response with the `403` status
  - added the optional property `details/quotaExhausted` to the response with the `404` status
  - added the optional property `details/quotaScope` to the response with the `400` status
  - …2 more
- **2026-09-09** `41eff0cffb2d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/accounts/:accountId/business-agent/budget/put.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/eded32b62823?raw)
