Input object
CreateCampaignInput
Input for the createCampaign mutation.
Fields
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.
- campaignType CampaignType! required
- What kind of campaign to create. It decides which dates are required and which settings member applies.
- BRAND_MONITORING
- Brand Monitoring: Archive captures native content (Instagram Reels, TikTok, YouTube) between dateStart (required) and dateEnd (optional; omitted means open-ended). One created through the API captures workspace-wide (the app's default "any creator" mode), so its roster does not narrow what is captured. One built in the app may instead be scoped to its roster, in which case adding creators decides what is captured. updateCampaign changes its name, end date, roster and posts; its tag, content and source narrowing are kept as stored. updateCampaign(posts:) adds specific posts on top of automatic capture, and capture never removes posts. Adding a post puts its creator on the roster, which can capture more of that creator's in-window posts from brand-listening sources. A post taken out with posts.remove can be captured again by a later replay (a creator added, a date edit) when it is in-window and from a brand-listening source. Read the posts with items(filter: { campaignsIds: [<campaign id>] }). An open-ended campaign cannot be given a dateEnd through updateCampaign. No options: send no
settings. - CONTENT_CAPTURE
- Content Capture: one created through the API has no capture triggers, so Archive adds no posts on its own and it holds exactly the posts you add with updateCampaign(posts:). One built in the app keeps the capture triggers the app gave it, so Archive can still add posts to it; it is updatable the same way. Read the posts 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. - VETTING_WORKFLOW
- Vetting Workflow: AI brand safety review of the posts each rostered creator published. The window is dateStart to dateEnd, both required. dateEnd may not be more than 24 hours from now. A creator's posts are pulled once, when they are added. Roster: INSTAGRAM and TIKTOK profiles. Options:
settings.vettingWorkflow. Available only in a workspace whose Archive app lists Vetting Workflow campaigns; elsewhere they are neither listed nor created. - dateEnd DateTime
- End of the campaign's window (UTC), not before dateStart. Required for CREATOR_MONITORING and VETTING_WORKFLOW; omit it on BRAND_MONITORING for an open-ended campaign. On VETTING_WORKFLOW it may not be more than 24 hours from now. Uses the supplied instant at whole-second precision; choose your timezone and day boundaries, then convert to UTC before sending it. Must be between 2000-01-01T00:00:00Z and 2100-01-01T00:00:00Z.
- dateStart DateTime
- Start of the campaign's window (UTC). Required for CREATOR_MONITORING, VETTING_WORKFLOW and BRAND_MONITORING; for CREATOR_MONITORING and VETTING_WORKFLOW, creators added later have their posts pulled back to it. Uses the supplied instant at whole-second precision; choose your timezone and day boundaries, then convert to UTC before sending it. Must be between 2000-01-01T00:00:00Z and 2100-01-01T00:00:00Z.
- externalId String! required
- The caller's key for this campaign, at most 255 characters (surrounding whitespace is trimmed). A workspace holds one campaign per key: sending a key again returns the campaign it first created, as stored (nothing is changed), so a retried request never creates a second campaign. The repeat must carry the dateStart, dateEnd and settings the first request with this key sent (not the campaign's current values, so it still works after updateCampaign); a difference is a userError on that field (["input","dateStart"], ["input","dateEnd"] or ["input","settings",<member>,<field>]).
- name String! required
- Campaign name as shown in Archive. Stored with surrounding whitespace and invisible characters removed and NFC-normalized; that stored form must be unique among the workspace's campaigns of this campaignType (compared exactly, so names differing only in case are distinct). Blank, longer than 255 characters, or holding control or bidirectional text characters is a userError on input.name. Not checked on an externalId replay.
- settings CampaignSettingsInput
- Type-specific options; omit to use the type defaults.
- creatorMonitoring CreatorMonitoringSettingsInput
- Options for a CREATOR_MONITORING campaign.
- pullLogic CampaignPullLogic default HAS_ANY
- Whether a post needs any of the tagNames (the default) or all of them.
- HAS_ALL
- Capture a post only when it carries every one of the tag names.
- HAS_ANY
- Capture a post that carries any of the tag names.
- tagNames [String!] default []
- Hashtags or mentions that narrow capture to posts carrying them, combined per pullLogic. Empty (the default) captures every post the roster publishes in the window. Note: a creator's tracking mode is shared across the workspace — one campaign capturing everything widens it for all of them. Each entry is a #hashtag or @mention. Entries are trimmed, lowercased and split on whitespace, trailing commas are dropped and duplicates count once. An entry that is blank, or holds a token that is not # or @ followed by the tag, is a userError on its index.
- vettingWorkflow VettingWorkflowSettingsInput
- Options for a VETTING_WORKFLOW campaign.
- excludeCreatorsInOtherVettingCampaigns Boolean
- When true (the default), a creator already on another VETTING_WORKFLOW campaign of the workspace is skipped when added to this one.
- maxMediaItemsPerCreator Int
- Most posts per creator that Archive pulls and reviews, from 1 to 1000000 (1000000 means no limit). Defaults to 5000. Out of range is a userError on this field.