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

StatusTypeDescription
requestedbrandYou asked for a video; the creator has not submitted yet.
submittedcreatorCreator submitted, awaiting your review.
resubmittedcreatorCreator resubmitted after a revision request.
revision_requestedbrandYou sent it back with feedback.
approvedbrandAccepted. Terminal.
rejectedbrandDeclined by you.
cancelledbrandYou withdrew the request (see cancelled_at).
declinedcreatorCreator refused the request (see decline_reason).

List deliverables

GET/v1/deliverables

ParameterTypeDescription
statusstringFilter by any lifecycle status above.
creator_emailstringFilter by creator.
page / limitintegerStandard 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.

FieldTypeDescription
titlestringRequired. What you are asking for.
creator_emailsstring[]Explicit recipients. Required unless all_hired is used.
all_hiredbooleanWith campaign_id: request from every creator hired on that campaign.
campaign_idstringCampaign to link the deliverables to (also used by all_hired).
countintegerVideos per creator. Default 1, max 10.
notestringInstructions included in the request card and email.
due_datestringISO date.
rate_centsintegerPayment 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}

FieldTypeDescription
statusstringRequired: approved, rejected, or revision_requested.
feedbackstringShown 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.