Start a full sync
Start a full sync of the brand, the same as the Full sync button in the app: fetch every active and trial creator's latest posts and views from their platforms, pair the videos into sets, recalculate pay on every unpaid payout cycle, and refresh eligibility. It takes minutes (longer for big brands), so it runs in the background: this answers 202 as soon as it's started. Follow it with brand.sync.get (GET /brands/{brandId}/sync). A sync already running for the brand (including the nightly one, or one started in the app) answers 409 conflict. A new start within 15 minutes of the last sync finishing answers 429 rate_limited with Retry-After. Takes no body.
bearerAuth sync:writeAuthorizationBearer <token>Personal access token. Scopes: account:read, creator:read, creator:earnings, managed:read, coach:read, brand:read, creators:read, videos:read, analytics:read, onboarding:read, onboarding:signatures, engagement:read, support:read, integrations:read, payouts:read, funds:read, billing:read, groups:write, videos:write, onboarding:write, sync:write, payouts:write.
Scope: sync:write
brandId*stringA brand id from GET /me or GET /creator/brands.
1 <= lengthSuccess.
application/json- response
started*booleanbrandId*stringrequestedAt*stringWhen this start was accepted.
progress*Where to follow the sync. The new run shows there within a few seconds.
curl -X POST 'https://example.com/api/v1/brands/string/sync'{ "started": true, "brandId": "string", "requestedAt": "string", "progress": { "operation": "brand.sync.get", "path": "string" }}The latest full sync's progress GET
The brand's latest brand-wide sync, whoever started it (`trigger`: "api", "app" for the app's Full sync or Sync all creators buttons, "scheduled" for the nightly sync): its status, when it started and finished, and how many creators it has done. `status` covers fetching the creators' posts: "running"; "success" (every creator synced); "incomplete" (some failed); "failed" (none synced, or it crashed); "stalled" (it stopped making progress and won't finish); "none" (no sync in the last two weeks). After the creators are done, a full sync goes on to pair videos into sets and recalculate the unpaid cycles' pay, and that last step isn't tracked: when `status` turns "success" or "incomplete", allow a few minutes before reading sets and pay.
Put a tag on many sets POST
Put one tag on up to 200 sets at once, the same as brand.set.tags.add on each: every video in those sets gets the tag too. Sets that already have it are unchanged, so `tagged` can be lower than `matched`. Set ids that aren't the brand's are ignored (`matched` counts the brand's). An unknown tag answers 404.