Skip to content

Guides

How to post a video to TikTok through the SkedCast API

Post a video to TikTok through the API by setting one required override: privacyLevel. TikTok's own Content Sharing Guidelines require an explicit visibility choice on every video post — there's no default — and the value is further constrained by whatever visibility set the connected creator account itself allows.

Browse docs

6 min read

Before you publish#

You need one already-connected account for the platform. Connect it yourself in the Agency Console, or — if a client owns the account — mint a self-serve connect link with POST /clients/:id/connect-invites and send it to them; they authorize from that page without ever getting a SkedCast login.

GET /v1/accounts lists what's connected, with each account's id — that id is what you pass in targets.accountIds below.

Compose and schedule#

bash
curl -X POST https://api.skedcast.com/v1/posts \
  -H "Authorization: Bearer sked_live_YOUR_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "clientId": "<clientId>",
    "content": "Launch day is here 🚀",
    "mediaIds": ["<mediaAssetId>"],
    "targets": { "mode": "selection", "accountIds": ["<tiktokAccountId>"] },
    "schedule": { "type": "at", "scheduledAt": "2026-07-01T15:00:00Z" }
  }'
A minimal tiktok post, scheduled for a specific time.

The TikTok API fields to post a video#

Everything platform-specific goes in one variants entry with "platform": "tiktok" and an overrides object. The adapter reads only the keys it declares (below) and ignores the rest — send tiktok keys on a tiktok variant, nothing more.

FieldTypeValues / defaultNotes
privacyLevelenum — RequiredPUBLIC_TO_EVERYONE \| MUTUAL_FOLLOW_FRIENDS \| FOLLOWER_OF_CREATOR \| SELF_ONLYNo default. Also constrained by the connected creator account's allowed visibility set.
yourBrandbooleanfalseCreator promoting their OWN brand/business (brand_organic_toggle).
brandedContentbooleanfalseA paid partnership / third-party promotion (brand_content_toggle). Cannot combine with privacyLevel: "SELF_ONLY".
disableCommentbooleanfalse
disableDuetbooleanfalse
disableStitchbooleanfalse

Verbatim from the REST API reference's TikTok table.

With the platform-specific overrides#

json
{
  "clientId": "<clientId>",
  "content": "Day in the life 🎬",
  "mediaIds": ["<videoAssetId>"],
  "coverFrameMs": 2500,
  "targets": { "mode": "selection", "accountIds": ["<tiktokAccountId>"] },
  "variants": [
    {
      "platform": "tiktok",
      "overrides": { "privacyLevel": "PUBLIC_TO_EVERYONE", "disableDuet": true, "yourBrand": true }
    }
  ],
  "schedule": { "type": "at", "scheduledAt": "2026-07-01T15:00:00Z" }
}
The same POST /posts body, with a variants entry added.

Checking the result#

Publishing fans out into one post target per account. GET /post-targets/:id (or GET /posts/:id) reports status, plus externalId (tiktok's own post id) and permalink (its public URL) once published. Subscribe to the target.published / target.failed webhooks instead of polling if you can accept inbound HTTP — see the webhooks guide.

tiktokapipublish

FAQ

Why does publishing to TikTok fail without any overrides set?
`privacyLevel` is required — TikTok's Content Sharing Guidelines mandate an explicit visibility choice, so SkedCast has no default to fall back to. Set it to one of `PUBLIC_TO_EVERYONE`, `MUTUAL_FOLLOW_FRIENDS`, `FOLLOWER_OF_CREATOR`, or `SELF_ONLY` on the tiktok variant.
Can I combine brandedContent with a private post?
No — `brandedContent: true` cannot be combined with `privacyLevel: "SELF_ONLY"`. TikTok requires branded/paid-partnership content to be visible.

Ready to broadcast everywhere?

Sign up free — no credit card. You land on the Free plan, and you can start a one-time 7-day Studio trial from your workspace whenever you are ready. Connect your first accounts, import a batch, and watch one post fan out across every platform.