The latest full sync's progress
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.
bearerAuth brand:readAuthorizationBearer <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: brand:read
brandId*stringA brand id from GET /me or GET /creator/brands.
1 <= lengthSuccess.
application/json- response
status*string"running""success""incomplete""failed""stalled""none"trigger*|Who started it: "api", "app", "scheduled" (nightly), or "other". Null when status is "none".
startedAt*string|nullfinishedAt*|When the creators were done; null while running.
lastActivityAt*|When the sync last started a creator.
creators*curl -X GET 'https://example.com/api/v1/brands/string/sync'{ "status": "running", "trigger": "api", "startedAt": "string", "finishedAt": "string", "lastActivityAt": "string", "creators": { "total": 0, "done": 0, "failed": 0 }}List support tickets GET
The support tickets creators sent the brand, newest first, as on Support Tickets. Filter by `status`.
Start a full sync POST
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.