List campaign invites
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.
apiKeyAuthx-api-key<token>API key for authentication. Keys are prefixed with cops_.
campaignId*string^prj_.+[\s\S]*$Response schema unavailable.
curl -X GET 'https://cops.app/api/brand/campaigns/string/invites'Assign videos to campaign POST
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.
Create a campaign invite link POST
Create a campaign invite. Omit `recipients` to get one shareable, multi-use link — the returned `token` is a join credential: anyone who opens /join/{token} while signed in can accept the invite and be added to the campaign as a creator, so treat it like a password. Optional `maxUses` caps how many creators may join and `expiresAt` sets a hard cutoff (links default to a 30-day lifetime). Passing `recipients` instead creates one email-bound invite per address AND emails each of them an invitation — use the shareable-link form (no recipients) for bulk/programmatic invites to avoid sending mail.