TikTok

TikTok Photo Post API

How to publish a photo post (not video) to TikTok via API.

Quick answer

Attach 1–35 JPEG or WEBP images (up to 20 MB each) to a POST /api/posts call and PostGate publishes a TikTok photo post automatically — there is no separate post type to select. Mixing photos with video is rejected, PNG is not accepted, and a direct-mode title is capped at 90 characters.

TikTok photo posts — the multi-image carousels users see interspersed with videos in the feed — go through a different endpoint on TikTok's Content Posting API than video, with different limits. PostGate detects a photo post automatically from the media you attach; you do not select a separate post type.

01

What makes a post a photo post?

PostGate treats a post as a TikTok photo post when every attached media item is an image — 1 to 35 of them. Attach even one video alongside images and it is rejected outright: TikTok does not allow mixing photos and video in a single Content Posting API request.

02

Which format limits don’t match video?

Photos must be JPEG or WEBP — PNG is rejected, unlike some other platforms' carousel APIs. Each image is capped at 20 MB. And the caption limit for a photo post's title is 90 characters under mode: "direct", far tighter than the 2,200-character title limit a direct video post gets.

03

The request

Attach multiple image media IDs in order; TikTok preserves that order in the published carousel. Use cover_image_index to pick which photo TikTok shows as the cover — it defaults to the first image.

Publish a TikTok photo postPostGate API
curl -X POST https://postgate.studio/api/posts \
  -H "Authorization: Bearer pg_live_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: launch-carousel-19" \
  -d '{
    "post": {
      "body": "Behind the scenes from today.",
      "options": {
        "tiktok": { "mode": "inbox", "cover_image_index": 0 }
      }
    },
    "profiles": ["pro_tiktok123"],
    "media": ["med_01JPH1", "med_01JPH2", "med_01JPH3"]
  }'
04

Direct mode still needs privacy and disclosure fields

Publishing a photo post with mode: "direct" requires the same creator-approved privacy level as video, plus commercial-content disclosure fields when the post promotes a brand. It does not require the music-usage confirmation or the duet/stitch toggles — those apply to video only. See direct post vs. inbox mode for the full field list.

Frequently asked questions

What image formats does the TikTok photo post API accept?

Photos must be JPEG or WEBP — PNG is rejected, unlike some other platforms’ carousel APIs. Each image is capped at 20 MB, and a post carries 1 to 35 images.

Can I mix photos and video in one TikTok post?

No. PostGate treats a post as a TikTok photo post when every attached media item is an image. Attach even one video alongside images and it is rejected outright — TikTok does not allow mixing photos and video in a single Content Posting API request.

How do I set the cover image for a TikTok photo post?

Use cover_image_index to pick which photo TikTok shows as the cover — it defaults to the first image. Attach the image media IDs in order; TikTok preserves that order in the published carousel.

What is the caption limit for TikTok photo posts?

The caption limit for a photo post’s title is 90 characters under mode: "direct" — far tighter than the 2,200-character title limit a direct video post gets.

Build it with PostGate

One API for every social platform your customers care about — sandboxed, documented, and ready today.

Start building Read the docs