Mutation
updateCampaign
Change a campaign: rename it, move its end date, and add or remove creators on its roster.
Arguments
Object, input and enum types open in place — use + to reveal their fields. A type that is already open above the row stops at a ↻ circular marker, and anything nested past the depth limit links out to its own page instead.
- input UpdateCampaignInput! required
- Mutation input.
- creators CampaignCreatorsPatchInput
- Creators to add to or remove from the campaign's roster.
- add [CampaignCreatorInput!] default []
- Creators to add. Asynchronous: each is queued for import and joins the roster once resolved (for CREATOR_MONITORING, Archive then pulls their posts back to dateStart and tracks new ones until dateEnd). One already on the roster is a no-op.
- handle String! required
- The profile's username. Whitespace and a leading '@' are stripped and case is ignored.
- provider Provider! required
- The profile's platform. Which platforms a roster takes is the campaign type's rule: INSTAGRAM and TIKTOK for CREATOR_MONITORING; any other is refused on this entry.
- Instagram platform integration, including posts, reels, stories, and profile data.
- INTERNAL
- Internal Archive-managed source used for synthetic or system-generated content.
- TIKTOK
- TikTok platform integration, including videos and creator profile data.
- YOUTUBE
- YouTube platform integration, including Shorts, videos, thumbnails, and profile data.
- remove [CampaignCreatorInput!] default []
- Creators to take off the roster, now. Their captured posts stay in the campaign; on a CONTENT_CAPTURE campaign, take them out with posts.remove. A creator is on the roster once, so any one of their profiles removes them. Also cancels an add of the same profile still waiting to import. One not on the roster is a no-op.
- handle String! required
- The profile's username. Whitespace and a leading '@' are stripped and case is ignored.
- provider Provider! required
- The profile's platform. Which platforms a roster takes is the campaign type's rule: INSTAGRAM and TIKTOK for CREATOR_MONITORING; any other is refused on this entry.
- Instagram platform integration, including posts, reels, stories, and profile data.
- INTERNAL
- Internal Archive-managed source used for synthetic or system-generated content.
- TIKTOK
- TikTok platform integration, including videos and creator profile data.
- YOUTUBE
- YouTube platform integration, including Shorts, videos, thumbnails, and profile data.
- dateEnd DateTime
- New end of the campaign's window (UTC), not before its dateStart. For CREATOR_MONITORING, moving it later also extends tracking for creators already on the roster. Uses the supplied instant at whole-second precision; choose your timezone and day boundaries, then convert to UTC before sending it.
- id ID! required
- UUID of the campaign to update. It must be of a type the API provisions (campaignType not null).
- name String
- New campaign name, under the same rules as CreateCampaignInput.name: a blank or invalid name is a userError on input.name. Omit it, or send the current name back unchanged, to keep the name as stored.
- posts CampaignPostsPatchInput
- Posts to add to or remove from a CONTENT_CAPTURE campaign; refused on any other type.
- add [ID!] default []
- Item ids to add, as items and itemIdsByUrl return them. Synchronous: each post is in the campaign when the call returns, and its creator joins the campaign's roster. An id already in the campaign is a no-op. An id that is not an item of this workspace, or that would exceed the campaign's post or creator limit, is refused at its index.
- remove [ID!] default []
- Item ids to take out of the campaign, now. The creator stays on the campaign's roster, and a removed post can be added back later. An id not in the campaign is a no-op.
Returns
- campaign Campaign
- The campaign after the call. Null only when the campaign-level change was refused.
- campaignType CampaignType
- What kind of campaign this is; null for a campaign whose type the API does not expose.
- CONTENT_CAPTURE
- Content Capture: Archive adds no posts on its own; the campaign holds exactly the posts you add with updateCampaign(posts:). Read them with items(filter: { campaignsIds: [<campaign id>] }); that list is search-indexed and catches up shortly after a change, so diff against it on a later run, not right after patching. dateStart and dateEnd are optional. No options: send no
settings. - CREATOR_MONITORING
- Creator Monitoring: Archive captures the posts every creator on the roster publishes between dateStart and dateEnd (both required). Options:
settings.creatorMonitoring. - createdAt DateTime!
- When the campaign was created (UTC).
- creatorsCount Int!
- Creators currently on the roster. Creators added through updateCampaign join it once their background import resolves them.
- dateEnd DateTime
- End of the campaign's window (UTC); null when it has none.
- dateStart DateTime
- Start of the campaign's window (UTC); null when it has none.
- externalId String
- The key the campaign was created with through createCampaign; null for a campaign created in the Archive app.
- id ID!
- Unique identifier for the campaign in Archive's system.
- name String!
- Campaign name as shown in Archive.
- userErrors [UserError!]!
- List of user-facing validation errors; a refused roster or post entry is reported at its index path. Empty when everything applied.
- field [String!]
- Path to the input field that caused the error.
- message String!
- The error message.