Find the account
GET /v1/accounts lists the TikTok accounts connected to your Stratos account. Requires schedules:read or schedules:write.
id or openId works as tiktokAccountId below. connected: false means the account needs reconnecting in Stratos before it can post (null: that couldn’t be checked just now). An account with an appId only takes that app’s content.
Create a schedule
string
required
Must reference content with
approvalStatus: "approved" that has finished slide images (see below).string
required
The account’s
id or openId from GET /v1/accounts.string
required
ISO 8601. The post goes out at this time; a time that is now or already past sends at once.
string
default:"draft"
string
Required when
mode: "publish": one of PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY, and one this TikTok account currently allows. Ignored for drafts (the creator picks visibility when they finish the post in TikTok).schedules:write (and schedules:publish for mode: "publish"). An Idempotency-Key header is honored: a retry with the same key gets the first response back instead of a second post.
201
delivery says where the post actually lands: "drafts" (the creator’s TikTok drafts, for a final tap in the TikTok app) or "profile" (live).
What can be scheduled
Only content whose slides are finished images on the server: aslideshow created with brief.templateId: "quote-card". A plain slideshow is text only, an illustrated deck’s stored images are the bare artwork (the Stratos app lays the words over them when you open the deck), and hook_video clips aren’t postable from the API yet. Each of those gets a 409 that says so; post them from the Stratos app.
This posts through the same TikTok queue the Stratos app itself uses — not a separate reimplementation, so drafts vs. direct post, the compliance fields, pacing and the drafts-box limits match the app exactly.
Statuses
Status is brought up to date when you read the schedule (
GET /v1/schedules/{id}, or a list). Schedule webhooks (schedule.sent_to_drafts, schedule.published, schedule.failed) are not delivered yet — see Webhooks — so poll.
Error responses to handle explicitly
Read
GET /v1/schedules—schedules:read. Up to 100, latestscheduledForfirst.GET /v1/schedules/{id}—schedules:read.
Delete
DELETE /v1/schedules/{id} — schedules:write. While the post is still waiting (scheduled) it is taken out of the TikTok queue and the schedule is deleted. A post that is already being sent (409 already_sending) or already went out (409 already_sent) can’t be taken back from here — delete it in the TikTok app. Failed and cancelled schedules can always be deleted.