COPS

List videos

GET
/manager/videos

Returns a cursor-paginated page of individual videos. Each row carries the video's duration and a viralityMultiplier (this video's views ÷ the publishing account's median views — > 1 means above-average performance).

Drill chain: Leaves of the campaign → creator → account → video chain. Pass any combination of campaignIds, creatorIds, accountIds to scope.

Pagination: cursor-based. Use nextCursor to fetch the next page. Set limit: 0 for a count-only request.

Filtering: pass a filter array for structured constraints (views, engagement, duration, availability). Use q for free-text search on title/handle.

Authorization

apiKeyAuth
headerx-api-key<token>

API key for authentication. Keys are prefixed with cops_.

Query Parameters

cursor?|

Opaque pagination cursor returned in nextCursor from the previous page. Pass null (or omit) for the first page. Cursors are tied to the active sort + filters and become invalid if those change.

limit?integer

Page size, 0–200. Use 0 to skip row materialization and return only totalCount (useful for tab badges / count-only requests). Default 100.

Range0 <= value <= 200
Default100
dateRange?
platforms?array<>
campaignIds?array<|unknown>
creatorIds?array<>
accountIds?array<>
showExcluded?boolean
sort?string

Single-column sort. Format: <columnId> for ascending, -<columnId> for descending (e.g. -engagementRate, views, -publishedAt). Allowed columnIds match the entity's sort keys; invalid keys are ignored.

Lengthlength <= 60
q?string

Free-text search. Per-entity semantics: matches name/description for campaigns, name/email for creators, handle/name for accounts, title/handle for videos.

Lengthlength <= 200
includeColumns?array<>

Column ids the caller intends to render. When supplied, columns not listed may be skipped for performance and return as null, unless they're sorted or filtered. Unknown ids are silently ignored.

Itemsitems <= 100
filter?array<>

Filter constraints. Each entry is { columnId, variant, operator, value? }. Supported operators per variant: number/date accept gt/gte/lt/lte/between + isEmpty/isNotEmpty; multi-select accepts isAnyOf/isNoneOf + isEmpty/isNotEmpty; boolean accepts isTrue/isFalse + isEmpty/isNotEmpty; text accepts is/isNot/contains + isEmpty/isNotEmpty. Invalid pairs are silently dropped.

Itemsitems <= 40

Response Body

Response schema unavailable.

Example Request
curl -X GET 'https://cops.app/api/brand/manager/videos'
Example Response200
Empty