> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markifact.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Manage Account Spending Limits

> Manage OpenAI Ads account-wide daily or date-range spending limits

Manage OpenAI Ads account-wide daily or date-range spending limits. Read Get Ad Account first. Requires manage-billing permission and postpaid invoice eligibility. New daily limits start tomorrow or later; delivery can take time to stop after reaching a limit.

| | |
| - | - |
| **App** | OpenAI Ads |
| **Operation ID** | `openai_ads_manage_account_spending_limits` |
| **Type** | Action |
| **Connection** | `openai_ads` (required) |
| **Credits per run** | 1 |
| **Agent / MCP tool** | Yes |
| **Requires approval** | Yes (write operation) |

## Inputs

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `action` | enum (`set_daily`, `remove_daily`, `create_date_range`, `update_date_range`, `remove_date_range`) | Yes | - | Set or remove a daily allowance, or create, update or remove a date-range total allowance. Read openai\_ads\_get\_ad\_account first. Postpaid invoice billing and manage-billing permission are required; existing daily limits can still be viewed/removed after billing changes. |
| `amount` | number | No | - | Allowance in account currency, not micros (75 means NZD75 for an NZD account). Required for set\_daily and create\_date\_range; optional for update\_date\_range. Zero is supported. Campaign budgets still apply; limits do not pace delivery or guarantee an immediate stop. |
| `expected_revision` | integer | No | - | Required for set\_daily/remove\_daily: use spending\_limits.revision from the latest Get Ad Account response. Use 0 only when revision is absent, never when the limits read failed. After a conflict, read again and review before retrying. |
| `window_id` | string | No | - | Required for update\_date\_range/remove\_date\_range: window\_id from spending\_limits.data in Get Ad Account. |
| `start_date` | string | No | - | YYYY-MM-DD in the account timezone. New daily limits start tomorrow or later: use earliest\_daily\_start\_date. Omit when editing an existing daily limit. Required for create\_date\_range; honor earliest\_dated\_start\_date when provided. |
| `end_date` | string | No | - | Exclusive end date, YYYY-MM-DD in the account timezone. Required for create\_date\_range. Omitted/null retains an existing date; use clear\_end\_date=true to remove a daily limit's end date. |
| `clear_end_date` | boolean | No | `False` | set\_daily only: send an explicit null end\_date to remove the end date. Omitted/null/false leaves it unchanged. Cannot be combined with end\_date. |
| `name` | string | No | - | Optional date-range limit label. Omitted/null leaves unchanged; clear\_name=true removes it when updating. |
| `io_id` | string | No | - | Optional date-range insertion-order reference. Omitted/null leaves unchanged; clear\_io\_id=true removes it when updating. |
| `clear_name` | boolean | No | `False` | update\_date\_range only: remove the name. Cannot be combined with name. |
| `clear_io_id` | boolean | No | `False` | update\_date\_range only: remove the insertion-order reference. Cannot be combined with io\_id. |

## Output

**Type**: `Dict`

Native mutation result. Daily actions return spend\_limits with saved configuration and revision; date-range create/update returns the window, removal returns its deletion receipt. Amounts are micros. Read Get Ad Account to verify limits after an ambiguous failure; never assume an immediate hard shutoff.

**Fields**: dynamic (depend on the inputs)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.