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
}'
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"
}'
{
"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"
}
}
Campaigns
Update Campaign
Update campaign application, reward, retainer, status, or max budget
PATCH
/
v1
/
program
/
campaigns
/
{id}
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
}'
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"
}'
{
"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"
}
}
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
string
required
Encoded campaign id
Body Parameters
All body parameters are optional, but you must send at least one.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”).string | null
Question shown to affiliates when they apply. Maximum 10,000 characters. Set to
null to clear.string
Reward type. Valid values:
flat_rate, custom, range, retainer. Switching to or from retainer is blocked when applications already exist.number | null
Fixed reward amount. Required when switching to
flat_rate or retainer. Minimum 0.01.number | null
Range minimum. Required when
reward_type is range.number | null
Range maximum. Must be greater than or equal to
reward_amount_min.number | null
Set, change, or clear (
null) the owner-only spend cap. Ignored on retainer. Lowering below current spend does not close the campaign.string | null
monthly or weekly. Used when reward_type is retainer.integer | string | null
Monthly day:
1-28 or "last".string | null
Weekly weekday:
monday through sunday.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.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
}'
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"
}'
{
"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, omittedapplication_requiredis set totrue; sendingfalsereturnsVALIDATION_ERROR(“Retainer campaigns require an application”).
Was this page helpful?
