Brand key required · unmetered
Campaign workflow
Everything after discovery: brief, hire, contract, review, pay. These endpoints need a brand key (free with any Roster brand plan). A data key gets 403 BRAND_KEY_REQUIRED.
Endpoint groups
| Group | Type | Description |
|---|---|---|
| /v1/roster | GET · POST | Your working creator list. POST /v1/roster/add adds by handle (dedupes by handle). |
| /v1/briefs | GET · POST | Create briefs; send with POST /v1/briefs/{id} and body { "action": "send", "recipients": [{ "email": … }] }. |
| /v1/campaigns | GET · POST · PATCH | Create campaigns, read state and stats. |
| /v1/applications | GET · PATCH | Campaign applicants; approve or reject via PATCH /v1/applications/{id}. |
| /v1/contracts | GET · POST | Issue and send contracts. |
| /v1/deliverables | GET · PATCH | Promised vs delivered content and its review state. |
| /v1/messages | GET · POST | Conversations. GET /v1/messages/{conversationId} returns the full thread; POST body field is body. |
| /v1/payouts | GET · POST · PATCH | Record payments; PATCH { "status": "paid" } settles external ones. |
| /v1/content | GET · POST | Tracked posts and metrics; POST /v1/content/{id}/refresh re-pulls metrics. |
| /v1/affiliates/links | GET · POST · PATCH · DELETE | Tracked links and click attribution. |
| /v1/shipments | GET · POST | Product seeding with carrier tracking. |
| /v1/analytics | GET | Aggregate campaign and content performance. |
| /v1/assets | GET · PATCH | Content library files and folders (GET/POST /v1/assets/folders). |
| /v1/brand | GET · PATCH | The identity behind the key; useful as a smoke test. |
Example: brief a creator you found via search
1 · add to roster
curl -X POST "https://api.ugcroster.com/v1/roster/add" \
-H "Authorization: Bearer rsk_brand_key" \
-H "Content-Type: application/json" \
-d '{ "ig_handle": "creatorhandle" }'2 · send a brief
curl -X POST "https://api.ugcroster.com/v1/briefs/BRIEF_ID" \
-H "Authorization: Bearer rsk_brand_key" \
-H "Content-Type: application/json" \
-d '{ "action": "send", "recipients": [{ "email": "creator@example.com" }] }'3 · record the payout
curl -X POST "https://api.ugcroster.com/v1/payouts" \
-H "Authorization: Bearer rsk_brand_key" \
-H "Content-Type: application/json" \
-d '{ "creator_email": "creator@example.com", "amount": 150, "description": "1 UGC video" }'Complete field-level reference
This page is the map, not the territory. The full interactive reference documents every endpoint with request/response bodies, all fields, code samples in curl, JavaScript and Python, and the complete MCP tool list.
Notes that save you an hour
Brief send is POST /v1/briefs/{id} with an action field: there is no /send sub-route. Message bodies go in body, not message. The messages LIST endpoint truncates each thread to a 200-character preview; fetch the thread by id for full text. Creator messages containing emails or phone numbers are blocked with 403 by the contact-info guard.