Brand key required
Deliverables
A deliverable tracks one piece of content from request to approval. Request videos in bulk, let creators submit (with or without an account), then approve or send back for revision.
Lifecycle
| Status | Type | Description |
|---|---|---|
| requested | brand | You asked for a video; the creator has not submitted yet. |
| submitted | creator | Creator submitted, awaiting your review. |
| resubmitted | creator | Creator resubmitted after a revision request. |
| revision_requested | brand | You sent it back with feedback. |
| approved | brand | Accepted. Terminal. |
| rejected | brand | Declined by you. |
| cancelled | brand | You withdrew the request (see cancelled_at). |
| declined | creator | Creator refused the request (see decline_reason). |
List deliverables
GET/v1/deliverables
| Parameter | Type | Description |
|---|---|---|
| status | string | Filter by any lifecycle status above. |
| creator_email | string | Filter by creator. |
| page / limit | integer | Standard pagination. |
request
curl "https://api.ugcroster.com/v1/deliverables?status=submitted" \
-H "Authorization: Bearer rsk_brand_key"response 200
{
"data": [
{
"id": "deliv_001",
"brief_id": "brief_001",
"brief_title": "Summer Skincare Reel",
"title": "Summer Skincare Reel",
"request_note": "Focus on the morning routine",
"campaign_id": "form_xyz789",
"conversation_id": "conv_001",
"creator_uid": "user_123",
"creator_email": "emma@example.com",
"creator_name": "Emma Chen",
"files": [ { "name": "reel-v1.mp4", "url": "https://…" } ],
"links": ["https://drive.google.com/…"],
"note": "First cut attached!",
"status": "submitted",
"revision_feedback": null,
"revision_count": 0,
"payment_status": "unpaid",
"due_date": "2026-06-25T00:00:00Z",
"requested_at": "2026-06-10T09:00:00Z",
"submitted_at": "2026-06-20T16:00:00Z",
"reviewed_at": null,
"approved_at": null
}
],
"pagination": { "page": 1, "limit": 20, "total": 22, "has_more": true }
}Request videos
POST/v1/deliverables/request
Creates requesteddeliverables for one or more creators, posts a video-request card into each creator’s conversation, and emails them an upload link. Creators without a Roster account get a public tokenized submit page.
| Field | Type | Description |
|---|---|---|
| title | string | Required. What you are asking for. |
| creator_emails | string[] | Explicit recipients. Required unless all_hired is used. |
| all_hired | boolean | With campaign_id: request from every creator hired on that campaign. |
| campaign_id | string | Campaign to link the deliverables to (also used by all_hired). |
| count | integer | Videos per creator. Default 1, max 10. |
| note | string | Instructions included in the request card and email. |
| due_date | string | ISO date. |
| rate_cents | integer | Payment per video in cents. Positive integer ≤ 5,000,000. |
request
curl -X POST "https://api.ugcroster.com/v1/deliverables/request" \
-H "Authorization: Bearer rsk_brand_key" \
-H "Content-Type: application/json" \
-d '{
"title": "Fall unboxing video",
"creator_emails": ["emma@example.com"],
"campaign_id": "form_new456",
"count": 2,
"due_date": "2026-09-15",
"rate_cents": 30000,
"note": "Natural light, no filters."
}'response 200
{
"success": true,
"created": [
{
"deliverableId": "deliv_new001",
"creatorEmail": "emma@example.com",
"creatorUid": "user_123",
"conversationId": "conv_001",
"url": "https://www.ugcroster.com/…"
}
]
}Note the response shape: this endpoint returns { success, created } directly (no data envelope), one entry per video per creator.
Review a submission
PATCH/v1/deliverables/{id}
| Field | Type | Description |
|---|---|---|
| status | string | Required: approved, rejected, or revision_requested. |
| feedback | string | Shown to the creator on revision requests and rejections. |
request
curl -X PATCH "https://api.ugcroster.com/v1/deliverables/deliv_001" \
-H "Authorization: Bearer rsk_brand_key" \
-H "Content-Type: application/json" \
-d '{ "status": "revision_requested", "feedback": "Great start. Please add a close-up of the texture." }'response 200
{ "data": { "id": "deliv_001", "status": "revision_requested", "updated_at": "2026-06-21T10:00:00Z" } }Only deliverables in submitted, resubmitted, or revision_requested can be reviewed. Anything else returns 422(“Nothing to review yet”), as does re-approving an already-approved deliverable. Each review posts a chat card in the creator conversation and emails the creator.