Assign videos to campaign
Manually assign videos to a campaign (or unassign with campaignId: null). A video belongs to at most one campaign; manual assignments always win and are never moved by automation. By default the videos' crosspost groups follow (all copies carry the same campaign). Pass videoIds from list_videos and a campaignId from list_campaigns.
apiKeyAuthx-api-key<token>API key for authentication. Keys are prefixed with cops_.
application/json- body
videoIds*array<>1 <= items <= 1000campaignId*|nullapplyToCrosspostGroups?booleantrueResponse schema unavailable.
curl -X POST 'https://cops.app/api/brand/campaigns/assign-videos' \ -H 'Content-Type: application/json' \ -d '{ "videoIds": [ "string" ], "campaignId": "string"}'Archive campaign POST
Archive a campaign (soft delete): history stays queryable, but the campaign is hidden from default lists and account defaults pointing at it are cleared so no future videos route to it. Prefer this over delete_campaign. Pass an id from list_campaigns.
List campaign invites GET
List all invite links for a campaign in your organization. Each row includes `recipientEmail` (set for email-bound invites, null for open shareable links), `isActive`, `useCount`, `maxUses`, and `expiresAt`. The `token` (a join credential — anyone with it can join the campaign as a creator) is included only for write-capable callers; it is redacted (null) for read-only credentials. Use a returned invite `id` with delete_campaign_invite to deactivate it.