Mutation
createContentView
Create a saved Content View for the current workspace.
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 CreateContentViewInput! required
- Mutation input.
- customAttributeConditions [CustomAttributeConditionInput!] default []
- Custom-attribute conditions to narrow the filter set.
- field String! required
- Key of the custom attribute to filter on, as returned by customAttributeSchemas (e.g. "sentiment").
- operator FilterOperator! required
- Comparison operator. The valid set depends on the attribute type; see FilterOperator.
- BETWEEN
- Inclusive range match for number and date types; value is { from, to }.
- CONTAINS
- For text-like types: substring match. For multi-select and list types: matches records containing ANY of the provided values (OR semantics).
- CONTAINS_ALL
- For multi-select custom attributes: matches records whose value array contains ALL of the provided values (AND semantics).
- DOES_NOT_CONTAIN
- For text-like types: excludes substring matches. For multi-select and list types: excludes records containing any of the provided values.
- ENDS_WITH
- Suffix match, for text-like types.
- EQUAL
- Equality, for number and date types.
- IS
- Exact match. For text and single-select types (for selects, value is the option ID) and BOOLEAN (value is true/false).
- IS_EMPTY
- Matches records with no value set. Value is ignored; pass null.
- IS_NOT
- Exact non-match, for text and single-select types.
- IS_NOT_EMPTY
- Matches records with any value set. Value is ignored; pass null.
- IS_RELATIVE_TO_TODAY
- Matches date values in a period relative to today; value is { relation: "past"|"this"|"next", period: "day"|"week"|"month"|"year" } (offset optional: a whole number of periods, at most 100 years; tz optional: an IANA time zone).
- LESS_THAN
- Strictly less than, for number and date types.
- LESS_THAN_OR_EQUAL
- Less than or equal, for number and date types.
- MORE_THAN
- Strictly greater than, for number and date types.
- MORE_THAN_OR_EQUAL
- Greater than or equal, for number and date types.
- NOT_EQUAL
- Inequality, for number and date types.
- STARTS_WITH
- Prefix match, for text-like types.
- type CustomAttributeType! required
- Type of the custom attribute, as returned by customAttributeSchemas. Determines the expected value shape and the valid operators.
- BOOLEAN
- True/false value.
- BOOLEAN_LIST
- List of true/false values.
- DATE
- Calendar date value (ISO 8601, no time component).
- DATETIME
- Date-and-time value (ISO 8601).
- DATETIME_LIST
- List of date-and-time values (ISO 8601).
- DATE_LIST
- List of calendar date values (ISO 8601, no time component).
- Email address value.
- MULTIPLE_SELECT
- Multiple choices from a predefined option list; the stored value is an array of option IDs.
- MULTIPLE_SELECT_V2
- Multiple choices from a predefined option list; the stored value is an array of option IDs. Successor revision of MULTIPLE_SELECT with identical filtering behavior.
- NUMBER
- Numeric value.
- NUMBER_LIST
- List of numeric values.
- PHONE
- Phone number value.
- SHIPPING_ADDRESS
- Structured shipping address. Not filterable: conditions with this type are rejected with a validation error; read the value from the record's customAttributes instead.
- SINGLE_SELECT_V2
- Single choice from a predefined option list; the stored value is an option ID.
- SINGLE_SELECT_V3
- Single choice from a predefined option list; the stored value is an option ID. Successor revision of SINGLE_SELECT_V2 with identical filtering behavior.
- TEXT
- Free-form text value.
- TEXT_LIST
- List of free-form text values.
- URL
- URL value.
- value JSON
- Comparison value; the shape depends on type: a string for text-like types, an option ID for single-selects, a number for NUMBER, an ISO 8601 string for dates, true/false for BOOLEAN, an array for multi-select and list types. BETWEEN takes { from, to }. Pass null for IS_EMPTY / IS_NOT_EMPTY.
- filter ItemFilterInput
- Typed filter defining which items belong to the view: the same ItemFilterInput
items(filter:)takes. Preferred when composing a view. Stored as the equivalentfiltersblob (snake_case keys, stored enum values). Provide exactly one offilterorfilters. - accountNames [String!] default []
- Filter by social profile account names/handles.
- campaignsIds [ID!] default []
- Filter to items associated with any of the given campaign IDs.
- collectionsIds [ID!] default []
- Filter to items that belong to any of the given collection IDs in the current workspace. Pass the IDs the
collectionsquery returns; the ID values inItem.customAttributes.collectionsare accepted too. An empty list (the default) applies no collection filter, like every other list filter here; an ID that names no collection matches no items. - contentTypes [MediaContentType!]
- Filter by media content type (IMAGE, VIDEO).
- IMAGE
- Static image content (for example photos, thumbnails, frames).
- VIDEO
- Video content (for example Reels, TikToks, Stories, YouTube videos).
- creatorLocations [LocationCanonicalInput!]
- Filter by the creator's location. Format: an array of objects, each with optional
country,region,city(canonical names from Archive's Geo normalization pipeline; case-sensitive exact match, e.g. "United States", "California", "Los Angeles"). Within a single entry, populated components are AND-ed together. Multiple entries OR together, which is useful for disambiguating same-named cities (e.g. Portland, Oregon vs. Portland, Maine). Omit a component to leave it unconstrained. Example:[{ country: "United States", region: "California" }, { city: "London" }]matches creators in California, USA OR in any city named "London". - city String
- Canonical city name (e.g. "Portland"). Matches creator.city_canonical exactly.
- country String
- Canonical country name (e.g. "United States"). Matches creator.country_canonical exactly.
- region String
- Canonical region/state name (e.g. "Oregon"). Matches creator.region_canonical exactly.
- engagement [FilterEngagementRangeInput!]
- Filter by engagement metric ranges (likes, comments, views, etc.).
- field FilterEngagementField! required
- Engagement metric to filter on.
- COMMENT_COUNT
- Total number of comments.
- EARNED_MEDIA_VALUE
- Estimated earned media value (EMV) in cents.
- ENGAGEMENTS_RATE
- Engagement rate: total engagements divided by the creator's follower count. Bounds are whole percent (5 = 5%); values below 1% are not expressible.
- IMPRESSIONS_RATE
- Impressions rate: views, plays, or estimated impressions divided by the creator's follower count. Bounds are whole percent (5 = 5%); values below 1% are not expressible.
- LIKE_COUNT
- Total number of likes.
- MERGED_VIEW_PLAY_COUNT
- Number of views, plays, or estimated impressions.
- SHARE_COUNT
- Total number of shares.
- range FilterIntegerRangeInput! required
- Inclusive numeric range the metric value must fall within.
- from Int
- Inclusive lower bound. Omit for no lower bound.
- to Int
- Inclusive upper bound. Omit for no upper bound.
- followersCount FilterIntegerRangeInput
- Filter by social profile follower count range.
- from Int
- Inclusive lower bound. Omit for no lower bound.
- to Int
- Inclusive upper bound. Omit for no upper bound.
- ids [ID!] default []
- Filter to specific item IDs (maximum 1000).
- importType FilterImportType
- Filter by how the item was imported (manual or automatic).
- AUTOMATIC
- Item was captured automatically (e.g. by social listening).
- MANUAL
- Item was imported on request by a user.
- instagramWhitelistingStatus [FilterContractStatus!]
- Filter by Instagram whitelisting request status.
- APPROVED
- Contract has been approved by the creator.
- EXPIRED
- Contract approval has expired.
- IN_QUEUE
- Contract request is queued for processing.
- REJECTED
- Contract request was rejected by the creator.
- REQUESTED
- Contract has been requested but not yet responded to.
- itemTypes [FilterItemType!]
- Filter by item type (POST, REEL, STORY, TIKTOK, TIKTOK_STORY, YOUTUBE, YOUTUBE_SHORT). Each value names a platform and a format together, unlike
Item.type: a TikTok post readstype: POSTbut matchesTIKTOKhere, andPOSTmatches Instagram feed posts only. - POST
- Instagram feed post.
- REEL
- Instagram Reel.
- STORY
- Instagram Story.
- TIKTOK
- TikTok video post.
- TIKTOK_STORY
- TikTok Story.
- YOUTUBE
- YouTube video.
- YOUTUBE_SHORT
- YouTube Short.
- provider Provider
- Filter by source platform (INSTAGRAM, TIKTOK, YOUTUBE, INTERNAL).
- 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.
- shopifyProductsIds [String!] default []
- Filter by associated Shopify product IDs.
- socialProfileAccountTypes [SocialProfileAccountType!] default []
- Filter by the social profile's account type. Values currently reflect Instagram-only typing (Personal / Creator / Business); profiles on platforms without a comparable concept are excluded when this filter is supplied. Mirrors
Influencer.account_type. OR semantics across multiple values; empty/omitted skips the filter. - BUSINESS
- Instagram Business account (business features and insights enabled).
- CREATOR
- Instagram Creator account (creator features enabled, distinct from Business).
- PERSONAL
- Personal Instagram account (consumer profile, no business/creator features).
- socialProfileIds [ID!] default []
- Filter by social profile IDs.
- sourcesIds [ID!] default []
- Filter by source IDs.
- superSearch FilterSuperSearchInput
- Visual or semantic search parameters.
- fileName String
- Name of an uploaded file to use for visual similarity search.
- imageUrl String
- URL of an external image to use for visual similarity search. Must be a public http(s) URL; private or local hosts, a malformed URL, or an image that cannot be downloaded return an
INVALID_INPUTerror. - mode FilterSuperSearchMode
- Search mode determining how the query is processed.
- EMBEDDING_CONTENT
- Search by visual/semantic similarity using content embeddings.
- FUZZY_CAPTION
- Search by fuzzy matching against post captions.
- FUZZY_TRANSCRIPTION
- Search by fuzzy matching against video/audio transcriptions.
- searchQuery String
- Text query to search captions, transcriptions, or semantic content.
- similarMediaContentId ID
- ID of a media content to find visually similar items (the numeric
MediaContent.id). Any other value returns anINVALID_INPUTerror. - tagsNames [String!] default []
- Filter by hashtag or mention tag names (maximum 100).
- takenAt FilterDateRangeInput
- Filter by publication date range.
- from DateTime
- Inclusive lower bound (ISO 8601). Omit for no lower bound.
- to DateTime
- Inclusive upper bound (ISO 8601). Omit for no upper bound.
- tiktokSparkCodeStatus [FilterContractStatus!]
- Filter by TikTok Spark Code request status.
- APPROVED
- Contract has been approved by the creator.
- EXPIRED
- Contract approval has expired.
- IN_QUEUE
- Contract request is queued for processing.
- REJECTED
- Contract request was rejected by the creator.
- REQUESTED
- Contract has been requested but not yet responded to.
- tiktokWhitelistingEligibility FilterTikTokWhitelistingEligibility
- Filter to items authored by TikTok creators eligible for whitelisting.
- ALL
- Match items authored by TikTok creators reachable via manual DM for whitelisting.
- ugcLocations [LocationCanonicalInput!]
- Filter by the location tagged on the content itself (UGC location). Format: same as
creatorLocations: an array of objects with optionalcountry,region,city(canonical, case-sensitive exact match). Within a single entry the populated components AND together; multiple entries OR together. Example:[{ country: "United Kingdom", city: "London" }]matches items whose tagged location resolves to London, UK. - city String
- Canonical city name (e.g. "Portland"). Matches creator.city_canonical exactly.
- country String
- Canonical country name (e.g. "United States"). Matches creator.country_canonical exactly.
- region String
- Canonical region/state name (e.g. "Oregon"). Matches creator.region_canonical exactly.
- usageRightsStatus [FilterContractStatus!]
- Filter by usage rights request status.
- APPROVED
- Contract has been approved by the creator.
- EXPIRED
- Contract approval has expired.
- IN_QUEUE
- Contract request is queued for processing.
- REJECTED
- Contract request was rejected by the creator.
- REQUESTED
- Contract has been requested but not yet responded to.
- verified [Boolean!]
- Filter by social profile verification status.
- viralityScore [FilterViralityScore!] default []
- Filter by virality score categories.
- HIGH
- Content that significantly outperforms its expected reach. Typically corresponds to a view-to-follower ratio of 4.0 or higher.
- LOW
- Content performing close to expected baseline relative to audience size. Typically corresponds to a view-to-follower ratio between ~1.0 and 2.0.
- MEDIUM
- Content performing above average relative to audience size. Typically corresponds to a view-to-follower ratio between ~2.0 and 4.0.
- NOT_VIRAL
- Content performing below expected reach, with low relative visibility. Typically corresponds to a view-to-follower ratio below ~1.0.
- filters JSON
- Opaque filter blob defining which items belong to the view. Use it to clone an existing view's
filtersverbatim; preferfilterotherwise. Provide exactly one offilterorfilters. - name String! required
- Display name for the new content view. Stored trimmed of surrounding whitespace and invisible characters and NFC-normalized; a blank, over-255-character or control-character name is a userError on input.name.
- showReportingStats Boolean default true
- Whether reporting stats should be surfaced. Defaults to true.
- sort JSON default []
- Sort directives applied when listing items via this view. Defaults to []. Provide at most one of
sortingorsort. Each entry is { field, direction }:fieldis one oftaken_at,merged_view_play_count,like_count,comment_count,share_count,earned_media_value,linear_virality,exponential_virality,resolved_virality,account_name,followers_count;directionis ASC or DESC (case-insensitive). - sorting [ItemSortingInput!]
- Typed sort applied when listing items via this view: the same list
items(sorting:)takes. Stored assort([{field, direction}]). Provide at most one ofsortingorsort; with neither, the view stores []. - sortKey ItemSortKey! required
- Which field to sort items by.
- ACCOUNT_NAME
- Sort by creator account name.
- COMMENT_COUNT
- Sort by total number of comments.
- EARNED_MEDIA_VALUE
- Sort by earned media value (EMV).
- EXPONENTIAL_VIRALITY
- Sort by exponential virality score.
- FOLLOWERS_COUNT
- Sort by number of followers on the posting account.
- LIKE_COUNT
- Sort by total number of likes.
- LINEAR_VIRALITY
- Sort by linear virality score.
- MERGED_VIEW_PLAY_COUNT
- Sort by the combined view/play count across platforms.
- RESOLVED_VIRALITY
- Sort by the virality score the Archive app shows and sorts by.
- SHARE_COUNT
- Sort by number of shares.
- TAKEN_AT
- Sort by when the content was originally posted on the social platform.
- sortOrder SortOrder! required
- Whether to sort ascending (ASC) or descending (DESC).
- ASC
- Sort in ascending order (for example oldest date or smallest number first).
- DESC
- Sort in descending order (for example newest date or largest number first).
Returns
- contentView ContentView
- The newly created content view. Null on validation failure.
- createdAt DateTimeWithZone!
- When the view was created.
- customAttributeConditions JSON!
- Custom-attribute conditions narrowing the filter set, as stored:
operatorandtypehold the lowercase stored values (e.g. "is_not_empty", "text_list"), not the FilterOperator / CustomAttributeType names. The view create and update mutations accept this list back unchanged ascustomAttributeConditionswhen it is passed through variables, so a view can be cloned verbatim. - filters JSON!
- Opaque filter blob defining which items belong to the view.
- group ViewGroup
- Group this view belongs to, or null when the view is ungrouped. Populated by
moveContentViewToGroup. - collections [Collection!]!
- Collections that belong to this group, ordered by their position within the group.
- createdAt DateTimeWithZone!
- When the Collection was created.
- group ViewGroup ↻ circular view ViewGroup →
- Group this Collection belongs to, or null when ungrouped. Populated by
moveCollectionToGroup. Always null for workspaces whose Collections use the older storage. - id ID!
- Unique identifier of the Collection in this workspace. Pass it to
addItemToCollections/removeItemFromCollectionsand tocollection(id:). - itemCount Int!
- Number of items in this workspace tagged with the Collection.
- name String!
- Display name of the Collection.
- updatedAt DateTimeWithZone!
- When the Collection was last updated.
- contentViews [ContentView!]! ↻ circular view ContentView →
- Content Views that belong to this group, ordered by their position within the group.
- createdAt DateTimeWithZone!
- When the group was created.
- creatorViews [CreatorView!]!
- Creator Views that belong to this group, ordered by their position within the group.
- createdAt DateTimeWithZone!
- When the view was created.
- customAttributeConditions JSON!
- Custom-attribute conditions narrowing the filter set, as stored:
operatorandtypehold the lowercase stored values (e.g. "is_not_empty", "text_list"), not the FilterOperator / CustomAttributeType names. The view create and update mutations accept this list back unchanged ascustomAttributeConditionswhen it is passed through variables, so a view can be cloned verbatim. - filters JSON!
- Opaque filter blob, stored and echoed back but not applied when reading the view: creators(presetId:) narrows only by this view's customAttributeConditions and sort. Use customAttributeConditions to filter which creators the view returns.
- group ViewGroup ↻ circular view ViewGroup →
- Group this view belongs to, or null when the view is ungrouped. Populated by
moveCreatorViewToGroup. - id ID!
- Unique identifier of this saved view. Use the returned id with
creators(presetId:)to fetch the view's creators. - name String!
- Display name of the view.
- showReportingStats Boolean!
- Whether reporting stats are surfaced in the UI for this view.
- sort JSON!
- Sort directives applied when listing creators via this view.
- updatedAt DateTimeWithZone!
- When the view was last updated.
- id ID!
- Unique identifier.
- name String!
- Display name of the group.
- socialProfileViews [SocialProfileView!]!
- Social Profile Views that belong to this group, ordered by their position within the group.
- createdAt DateTimeWithZone!
- When the view was created.
- customAttributeConditions JSON!
- Custom-attribute conditions narrowing the filter set, as stored:
operatorandtypehold the lowercase stored values (e.g. "is_not_empty", "text_list"), not the FilterOperator / CustomAttributeType names. The view create and update mutations accept this list back unchanged ascustomAttributeConditionswhen it is passed through variables, so a view can be cloned verbatim. - filters JSON!
- Opaque filter blob, stored and echoed back but not applied when reading the view: socialProfiles(presetId:) narrows only by this view's customAttributeConditions and sort. Use customAttributeConditions to filter which social profiles the view returns.
- group ViewGroup ↻ circular view ViewGroup →
- Group this view belongs to, or null when the view is ungrouped. Populated by
moveSocialProfileViewToGroup. - id ID!
- Unique identifier of this saved view. Use the returned id with
socialProfiles(presetId:)to fetch the view's social profiles. - name String!
- Display name of the view.
- showReportingStats Boolean!
- Whether reporting stats are surfaced in the UI for this view.
- sort JSON!
- Sort directives applied when listing social profiles via this view. Each entry is { field, direction }:
fieldis one ofmedia_items_taken_at_max,followers_count,source_tracking,source_content,source_tracking_until,source_last_pulled_at,account_name;directionis ASC or DESC (case-insensitive). - updatedAt DateTimeWithZone!
- When the view was last updated.
- updatedAt DateTimeWithZone!
- When the group was last updated.
- id ID!
- Unique identifier (FilterPreset UUID). Use this with
items(presetId:). - name String!
- Display name of the view.
- showReportingStats Boolean!
- Whether reporting stats are surfaced in the UI for this view.
- sort JSON!
- Sort directives applied when listing items via this view. Each entry is { field, direction }:
fieldis one oftaken_at,merged_view_play_count,like_count,comment_count,share_count,earned_media_value,linear_virality,exponential_virality,resolved_virality,account_name,followers_count;directionis ASC or DESC (case-insensitive). - updatedAt DateTimeWithZone!
- When the view was last updated.
- userErrors [UserError!]!
- List of user-facing validation errors. Empty on success.
- field [String!]
- Path to the input field that caused the error.
- message String!
- The error message.