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

# Update Campaign

> Update campaign application, reward, retainer, status, or max budget

Update application settings, reward type, retainer cadence, status, and/or owner `max_budget` on one of your team's campaigns. Does not create earnings. Requires `write:program`.

At least one updatable field is required. Foreign-team campaign IDs return 404.

## Path Parameters

**id** `string` *required*

Encoded campaign id

## Body Parameters

All body parameters are optional, but you must send at least one.

**application\_required** `boolean`

When true, affiliates must apply and be accepted before submitting proof. For retainer, omitted `application_required` is set to `true`; sending `false` returns `VALIDATION_ERROR` ("Retainer campaigns require an application").

**application\_prompt** `string | null`

Question shown to affiliates when they apply. Maximum 10,000 characters. Set to `null` to clear.

**reward\_type** `string`

Reward type. Valid values: `flat_rate`, `custom`, `range`, `retainer`. Switching to or from `retainer` is blocked when applications already exist.

**reward\_amount** `number | null`

Fixed reward amount. Required when switching to `flat_rate` or `retainer`. Minimum 0.01.

**reward\_amount\_min** `number | null`

Range minimum. Required when `reward_type` is `range`.

**reward\_amount\_max** `number | null`

Range maximum. Must be greater than or equal to `reward_amount_min`.

**max\_budget** `number | null`

Set, change, or clear (`null`) the owner-only spend cap. Ignored on retainer. Lowering below current spend does not close the campaign.

**retainer\_interval** `string | null`

`monthly` or `weekly`. Used when `reward_type` is `retainer`.

**retainer\_day\_of\_month** `integer | string | null`

Monthly day: `1`-`28` or `"last"`.

**retainer\_weekday** `string | null`

Weekly weekday: `monday` through `sunday`.

**status** `string`

Campaign status. Valid values: `DRAFT`, `SCHEDULED`, `ACTIVE`, `ENDED`, `ARCHIVED`. Only moving a retainer campaign from `ENDED` or `ARCHIVED` to `ACTIVE` sets `retainer_resumed_at`.

## Response

Returns the updated campaign object. Same structure as [Create Campaign](/api/endpoint/campaigns/create).

```bash cURL (retainer cadence) theme={null}
curl -X PATCH "https://api.affonso.io/v1/program/campaigns/cmretainer01camp0001" \
  -H "Authorization: Bearer sk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "retainer_interval": "monthly",
    "retainer_day_of_month": "last",
    "reward_amount": 600
  }'
```

```bash cURL (resume active) theme={null}
curl -X PATCH "https://api.affonso.io/v1/program/campaigns/cmretainer01camp0001" \
  -H "Authorization: Bearer sk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "ACTIVE"
  }'
```

```json Response theme={null}
{
  "success": true,
  "data": {
    "id": "cmretainer01camp0001",
    "name": "Creator Retainer",
    "description": "Monthly content retainer",
    "kind": "submission",
    "status": "ACTIVE",
    "reward_type": "retainer",
    "reward_amount": 600,
    "reward_amount_min": null,
    "reward_amount_max": null,
    "max_budget": null,
    "retainer_interval": "monthly",
    "retainer_day_of_month": "last",
    "retainer_weekday": null,
    "retainer_schedule_changed_at": "2026-10-12T15:00:00.000Z",
    "retainer_resumed_at": "2026-10-12T15:05:00.000Z",
    "start_date": "2026-11-01T00:00:00.000Z",
    "end_date": null,
    "application_required": true,
    "application_prompt": "Share your content plan and audience size",
    "max_submissions_per_user": null,
    "created_at": "2026-10-12T14:30:00.000Z",
    "updated_at": "2026-10-12T15:05:00.000Z"
  }
}
```

## Notes

* Requires `write:program`.
* Switching to or from retainer is blocked with a conflict when any applications exist for the campaign.
* Retainer ignores `max_budget`. For retainer, omitted `application_required` is set to `true`; sending `false` returns `VALIDATION_ERROR` ("Retainer campaigns require an application").


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