Update a campaign, or archive/unarchive it
Partial update — only provided fields change. Renaming re-checks the per-workspace uniqueness constraint (409 on conflict). Editing UTM values only affects links created (or re-pointed to this campaign) AFTER the change — every link created earlier keeps the immutable snapshot it was given at that time (EAS-73). archived=true stops the campaign from being selectable for new links without touching any link already using it; archived=false un-archives it.
View as MarkdownAuthorization
bearer In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/v1/campaigns/string" \ -H "Content-Type: application/json" \ -d '{}'{ "campaign": { "id": "string", "name": "string", "utmSource": "string", "utmMedium": "string", "utmCampaign": "string", "utmTerm": "string", "utmContent": "string", "archived": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }}Get a campaign
Not archived-filtered (unlike listCampaigns' default): an archived campaign stays readable forever so a link that still references it, and its analytics, keep resolving to something the caller can see.
Archive a campaign (does not delete it)
Archives rather than hard-deleting (EAS-73): a campaign is the reporting dimension for every click already recorded against links that used it, and a hard delete would either orphan those links' campaignId or erase campaign-level history. Existing links and their analytics are completely unaffected — this only stops the campaign from being selectable for new links. Idempotent.