---
title: "Change a Meta ad set budget"
method: POST
path: "/api/v1/tools/meta_update_adset_budget/execute"
tags: ["Meta Ads"]
---

# Change a Meta ad set budget

`POST /api/v1/tools/meta_update_adset_budget/execute`

## Request

- Base URL: `https://adako.ai`
- URL: `https://adako.ai/api/v1/tools/meta_update_adset_budget/execute`
- Auth: HTTP bearer

Changes the daily or lifetime budget of one ad set. The preview shows the current and new amounts as decimals in the account currency and the percentage change, so the user approves a real number rather than a raw platform value.
Use when: the user has decided to scale an ad set up or down and named the ad set and the amount.
Do not use on an ad set whose campaign holds the budget — campaign budget optimisation means Meta manages ad set budgets and this call will be rejected. Change the campaign instead.
Do not change the budget of an ad set that is still learning unless the user accepts that learning restarts: a large change resets what Meta has learned and delivery gets worse before it gets better.
Returns the ad set read back from Meta after the change so the new budget is confirmed, not assumed.
Amounts are decimals in the account currency. For currencies Meta treats as whole units (yen, won, forint and similar) the conversion is handled here — never send minor units.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object, required
    - `ad_account_id` string: Meta ad account id such as act_1234567890. Omit it to use the primary account; if several accounts are active and none is primary the call fails and lists the valid ids.
    - `ad_set_id` string, required: The ad set to re-budget, from meta_list_ad_sets.
    - `daily_budget` number: New daily budget, decimal in the account currency.
    - `lifetime_budget` number: New lifetime budget, decimal in the account currency. The ad set must already have an end date.
    - `idempotency_key` string: Optional caller-supplied key; identical keys never execute twice.
    - `raw_data` boolean: Return compact JSON only (no markdown). Use when you will compute on the result.

## Response `200`

The tool ran. A write returns proposal_id and approve_url while the change waits for approval.

- SuccessEnvelope
  - `success` unknown, required
  - `tool` string, required
  - `data` object, required: Machine-readable result.
  - `markdown` string, required: The same result written for a person or a model.
  - `quota` Quota: Task usage for the current billing period.
    - `plan` string
    - `used` integer
    - `limit` integer
    - `period_end` string
    - `upgrade_url` string
  - `proposal_id` string: Present for writes. Nothing changes on the ad platform until it is approved.
  - `approve_url` string: Where a person approves the proposal.
  - `request_id` string, required

## Other responses

- `400`: Invalid arguments, or the ad account could not be resolved.
- `401`: Missing, invalid, revoked or expired API key.
- `402`: Monthly task quota used up, or the plan does not include this tool.
- `403`: The connected ad account lacks the access level this tool needs.
- `404`: Unknown tool name.
- `409`: Not connected, reconnect needed, confirmation required, a proposal already pending or no longer pending, an identical create that failed earlier today (proposal_failed_before), a create that duplicates an approved one (duplicate_create), the ad-account limit of the plan reached (account_limit), or an Idempotency-Key reused with different arguments.
- `429`: Rate limited by Adako or by the ad platform. See Retry-After.
- `500`: Unexpected error inside Adako.
- `502`: The ad platform returned an error.

---

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