Nimply Developers
Examples

Post to TikTok

Check the account's creator info, then publish a video or photo post with privacy and interaction settings.

Scopes: channels:read, media:write, posts:write, posts:publish.

TikTok requires every post to declare a privacy level the account is actually allowed to use, so posting is a two-step flow: fetch the channel's creator info, then create the post with POST /v1/posts/tiktok.

1. Check the channel's creator info

curl https://api.nimply.io/v1/channels/423e4567-e89b-12d3-a456-426614174003/tiktok/creator-info \
  -H "Authorization: Bearer $NIMPLY_API_KEY"
{
  "nickname": "nimply.io",
  "avatarUrl": "https://…",
  "privacyLevelOptions": ["PUBLIC_TO_EVERYONE", "MUTUAL_FOLLOW_FRIENDS", "SELF_ONLY"],
  "commentDisabled": false,
  "duetDisabled": false,
  "stitchDisabled": true,
  "maxVideoDurationSec": 600
}

The channel must be a TikTok channel (from GET /v1/channels); any other type returns 400.

2. Create the post

curl -X POST https://api.nimply.io/v1/posts/tiktok \
  -H "Authorization: Bearer $NIMPLY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: tt-launch-video-001" \
  -d '{
    "channelId": "423e4567-e89b-12d3-a456-426614174003",
    "mediaIds": ["d5e6f7a8-2b3c-4d5e-af90-1b2c3d4e5f6a"],
    "privacyLevel": "PUBLIC_TO_EVERYONE",
    "title": "Three rewrites later…",
    "content": "How we shipped scheduled carousels #buildinpublic",
    "allowComments": true,
    "allowDuet": true,
    "schedule": "next_slot"
  }'
{
  "id": "8c467f68-…",
  "channelId": "423e4567-e89b-12d3-a456-426614174003",
  "title": "Three rewrites later…",
  "contentType": "POST",
  "status": "SCHEDULED",
  "scheduledAt": "2026-07-23T09:00:00.000Z",
  "mediaIds": ["d5e6f7a8-2b3c-4d5e-af90-1b2c3d4e5f6a"]
}

Gotchas

  • mediaIds is required — TikTok has no text-only posts. Send 1 video or up to 35 photos (a photo-mode post), uploaded first via POST /v1/media. Videos must fit within the account's maxVideoDurationSec.
  • privacyLevel is required and must be one of the account's privacyLevelOptions from step 1 — sending a level the account can't use fails at publish time.
  • Comments, Duet, and Stitch are off by default; opt in with allowComments / allowDuet / allowStitch. If creator info reports one as disabled for the account (like stitchDisabled above), enabling it has no effect. Duet and Stitch apply to video posts only.
  • Disclosure toggles: brandContent marks a paid third-party partnership, brandOrganic marks self-promotion. brandContent cannot be combined with privacyLevel: "SELF_ONLY" — the API rejects it at request time.
  • title is capped at 100 characters, the content caption at 2200. schedule works like createPost, and an Idempotency-Key header makes retries safe.

On this page