Skip to Content
API ReferenceContent Views

Content Views

Reminder: All queries on this page require the WORKSPACE-ID header. See Getting Started for setup.

Content Views are saved filters in your Social Listening section. They let you quickly access a specific slice of your content — for example, “Influencer-Generated Content”, “High-Engagement UGC”, or custom views you’ve created like “Wedding” or “Unboxing”.

In the Archive UI, these appear under Social Listening → Content Views in the sidebar. Looking for Collections instead? See Collections — those are static groups of items you manually curate, while Content Views are dynamic filters that update automatically.

Learn more: Creating, Deleting, and Renaming Content Views 


List your Content Views

The dedicated contentViews query returns every Content View in the workspace, including its full filter definition and sort order — everything you’d need to recreate or audit the view:

query ListContentViews { contentViews { id name filters sort showReportingStats group { id name } } }

Example response:

{ "data": { "contentViews": [ { "id": "c1d2e3f4-a5b6-7890-cdef-012345678901", "name": "High-Engagement UGC", "filters": { "engagement": [{ "range": { "from": 1000 }, "field": "like_count" }] }, "sort": [{ "field": "taken_at", "direction": "desc" }], "showReportingStats": true, "group": null } ] } }
FieldTypeDescription
idIDView identifier — also valid as presetId in an items query.
nameStringDisplay name, as shown in the sidebar.
filtersJSONThe view’s filter definition. Same shape as the filter argument on items.
sortJSONDefault sort order applied in the UI.
showReportingStatsBooleanWhether the reporting header is shown in the UI.
groupObjectThe sidebar group the view belongs to, or null.

Using with AI:

“List my Content Views with their filter definitions” “Which of my views filter by engagement?”

If you only need id + name, the lighter filterPresets query also returns Content Views, with accessor: MEDIA_DECK:

query ListContentViews { filterPresets { id name accessor } }

Example response:

{ "data": { "filterPresets": [ { "id": "c1d2e3f4-a5b6-7890-cdef-012345678901", "name": "Influencer-Generated Content", "accessor": "MEDIA_DECK" }, { "id": "d2e3f4a5-b6c7-8901-defa-123456789012", "name": "High-Engagement UGC", "accessor": "MEDIA_DECK" }, { "id": "e3f4a5b6-c7d8-9012-efab-234567890123", "name": "Unboxing", "accessor": "MEDIA_DECK" } ] } }

This query returns both Content Views (MEDIA_DECK) and Collections (COLLECTIONS). Filter by accessor to separate them.

Using with AI:

“List all my Content Views” “Show me only my saved views, not collections”


Get items from a Content View

Use the view’s id as presetId in an items query:

query ItemsFromView { items(first: 20, presetId: "c1d2e3f4-a5b6-7890-cdef-012345678901") { totalCount nodes { id caption type provider takenAt currentEngagement { likes comments views } socialProfile { accountName followers } } } }

Example response:

{ "data": { "items": { "totalCount": 1250, "nodes": [ { "id": "a4b1c2d3-e5f6-7890-abcd-ef1234567890", "caption": "Summer linen set — obsessed with this look for travel", "type": "REEL", "provider": "INSTAGRAM", "takenAt": "2026-03-28T14:30:00Z", "currentEngagement": { "likes": "8420", "comments": "213", "views": "94000" }, "socialProfile": { "accountName": "lauramendez", "followers": 312000 } } ] } } }

Using with AI:

“Show me all items in my ‘Unboxing’ view” “How many items are in my ‘High-Engagement UGC’ view?”


Sort items within a Content View

You can sort the results from a Content View using sorting:

query ViewMostLiked { items( first: 10 presetId: "c1d2e3f4-a5b6-7890-cdef-012345678901" sorting: { sortKey: LIKE_COUNT, sortOrder: DESC } ) { totalCount nodes { id type provider currentEngagement { likes } socialProfile { accountName } } } }

Example response:

{ "data": { "items": { "totalCount": 1250, "nodes": [ { "id": "a4b1c2d3-e5f6-7890-abcd-ef1234567890", "type": "POST", "provider": "INSTAGRAM", "currentEngagement": { "likes": "21390" }, "socialProfile": { "accountName": "lauramendez" } } ] } } }

Using with AI:

“Show me the most liked items in my ‘Unboxing’ view” “Rank content in my ‘Influencer-Generated Content’ view by EMV” “What are the top 10 most viewed posts in my ‘High-Engagement UGC’ view?”


Get a specific Content View by name

If you know the name of the view you want, list all presets and match by name:

query FindView { filterPresets { id name accessor } }

Then use the id of the matching preset as presetId in your items query.

Using with AI:

“Find my Content View called ‘Unboxing’ and show me the items in it” “What’s the ID of my ‘High-Engagement UGC’ view?”


Count items in a Content View

A quick way to see how much content a view contains without fetching all items:

query ViewCount { items(first: 1, presetId: "c1d2e3f4-a5b6-7890-cdef-012345678901") { totalCount } }

Example response:

{ "data": { "items": { "totalCount": 1250 } } }

Using with AI:

“How many items are in each of my Content Views?” “Which of my views has the most content?”


Get engagement data from a Content View

Pull engagement metrics for the content in a view — useful for reports:

query ViewEngagement { items( first: 20 presetId: "c1d2e3f4-a5b6-7890-cdef-012345678901" sorting: { sortKey: EARNED_MEDIA_VALUE, sortOrder: DESC } ) { totalCount nodes { id caption type provider takenAt currentEngagement { likes comments shares views impressions earnedMediaValue } socialProfile { accountName followers } } } }

Using with AI:

“Show me the EMV breakdown for my ‘Influencer-Generated Content’ view” “What’s the total engagement across all items in my ‘Unboxing’ view?” “Give me a performance summary of my ‘High-Engagement UGC’ view”


Create a Content View

The createContentView mutation saves a new view — the API equivalent of clicking + next to Content Views in the sidebar. filters takes the same shape as the filter argument on items, so any search you’ve already built can be saved as a view in one call:

mutation CreateView { createContentView(input: { name: "High-Engagement UGC" filters: { engagement: [{ range: { from: 1000 }, field: "like_count" }] } }) { contentView { id name filters } userErrors { field message } } }

Example response:

{ "data": { "createContentView": { "contentView": { "id": "f4a5b6c7-d8e9-0123-fabc-345678901234", "name": "High-Engagement UGC", "filters": { "engagement": [{ "range": { "from": 1000 }, "field": "like_count" }] } }, "userErrors": [] } } }

Both name and filters are required. The view appears in the Archive UI sidebar immediately, and its id works as presetId in items queries right away.

Using with AI:

“Save my current search as a view called ‘Q3 Micro-Influencers’” “Create a Content View for Reels with more than 10,000 likes”


Update a Content View

updateContentView edits an existing view. Partial updates are supported — any field you omit keeps its current value, so you can rename a view without re-sending its filters:

mutation RenameView { updateContentView( id: "f4a5b6c7-d8e9-0123-fabc-345678901234" input: { name: "Q3 High-Engagement UGC" } ) { contentView { id name filters } userErrors { field message } } }

The response echoes the full view — in this example, filters comes back unchanged even though the input only carried name.

Using with AI:

“Rename my ‘Unboxing’ view to ‘Unboxing 2026’” “Change the like threshold on my ‘High-Engagement UGC’ view to 5,000”


Delete a Content View

mutation DeleteView { deleteContentView(id: "f4a5b6c7-d8e9-0123-fabc-345678901234") { __typename } }

Deletion only affects the view definition — the items it filtered stay in your workspace. Note that the payload carries no success field; the absence of errors in the response is the success signal.

Using with AI:

“Delete my ‘Old Campaign’ Content View”


View groups

Views can be organized into sidebar groups (the Groups header in Social Listening). The viewGroups query lists them:

query ListViewGroups { viewGroups { id name } }

Workspaces with no custom groups return an empty array. The group field on contentViews / socialProfileViews / creatorViews / collections links each entry to its group, and ViewGroup.collections lists the Collections inside a group.

Using with AI:

“List my view groups”

Move something into a group

Each view kind has its own move mutation, and Collections have one too — Collections live in groups by the same mechanism as views:

MutationMovesId argument
moveContentViewToGroupa Content ViewviewId
moveSocialProfileViewToGroupa Social Profile ViewviewId
moveCreatorViewToGroupa Creator ViewviewId
moveCollectionToGroupa CollectioncollectionId
mutation MoveCollectionIntoGroup { moveCollectionToGroup( collectionId: "3f7c1a92-5d84-4e63-b0a7-91f2c8e4d5b6" groupId: "c18d64f0-2a3b-4c9e-8571-6be0d4a37f92" ) { collection { id name group { id name } } userErrors { field message } } }
{ "data": { "moveCollectionToGroup": { "collection": { "id": "3f7c1a92-5d84-4e63-b0a7-91f2c8e4d5b6", "name": "Holiday UGC", "group": { "id": "c18d64f0-2a3b-4c9e-8571-6be0d4a37f92", "name": "Q4 Campaigns" } }, "userErrors": [] } } }

Response fields

FieldDescription
collectionThe moved Collection, with group reflecting where it ended up. null when the move failed
userErrorsEmpty on success. On failure, field is a path array — ["collectionId"] or ["groupId"] — and the write did not happen

Three things to know:

  • One group at a time. Moving something into a group implicitly removes it from whatever group it was in — you don’t need to un-group it first.
  • Omit groupId (or pass null) to un-group. That takes the Collection out of any group and leaves it loose in the sidebar.
  • Use the right mutation for the entity. Passing a Content View id to moveCollectionToGroup returns a not_found error on ["collectionId"] rather than moving it. Unknown ids and ids from another workspace return that same error on purpose, so the API never reveals whether an id exists elsewhere.

Using with AI:

“Move the Holiday UGC collection into my Q4 Campaigns group” “Take that collection out of its group”


Important notes

Filters cannot be combined with presets. When you use presetId, the view’s own filters are applied. Adding filter parameters to the query will not narrow the results further. Use sorting to change the order instead.

Deleting a view never deletes content. Views are saved filters; removing one leaves every item in the workspace untouched.

Last updated on