> ## 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.

# Update Campaign

> Low-level update for an OpenAI Ads campaign using a raw update payload

Low-level update for an OpenAI Ads campaign using a raw update payload. Use focused campaign nodes first when available, such as status, budget, or rename.

|                       |                              |
| --------------------- | ---------------------------- |
| **App**               | OpenAI Ads                   |
| **Operation ID**      | `openai_ads_update_campaign` |
| **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                                                                                                                                                                                                                                                                                                                                                                                      |
| ---------------- | -------------------------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `campaign_id`    | string or SelectableOption | Yes      | -       | Campaign ID to update (from openai\_ads\_list\_campaigns). Do not include this inside update\_payload.                                                                                                                                                                                                                                                                                           |
| `update_payload` | object or string           | Yes      | -       | OpenAI Ads campaign update payload as a JSON object. Only the fields provided here are sent to OpenAI Ads. If you include budget, send the full budget object. Use focused operations first when they exist, for example openai\_ads\_update\_campaign\_status, openai\_ads\_update\_campaign\_budget, or openai\_ads\_rename\_campaign. Do not include identity fields like campaign\_id or id. |
| `dry_run`        | boolean                    | No       | `False` | When true, return the resolved update payload without calling OpenAI Ads.                                                                                                                                                                                                                                                                                                                        |

### SelectableOption

| Field   | Type   | Required | Default | Description |
| ------- | ------ | -------- | ------- | ----------- |
| `value` | string | Yes      | -       |             |
| `label` | string | Yes      | -       |             |

## Output

**Type**: `Dict`

Returns the updated campaign object exactly as returned by the OpenAI Ads API. In dry\_run mode, returns the resolved payload without calling the API.

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

**Example**:

```json theme={"dark"}
{
  "id": "cmpn_...",
  "name": "Spring launch v2",
  "status": "paused",
  "budget": {
    "lifetime_spend_limit_micros": 30000000
  },
  "updated_at": 1735862400
}
```
