TikTok photo post limits: 20 MB per image, 1080p max, JPEG or WebP

TikTok's media guide caps photo-post images at 1080p and 20 MB each, in WebP or JPEG. Set Sume image output and video stills to match before you upload.

5 min readSume
All posts

For TikTok photo posts through the API, each image must be WebP or JPEG, at most 1080p, and at most 20 MB. AI image models usually return far more pixels than that, so ask Sume for the right shape up front instead of resizing later.

Sume's image route can output jpeg or webp and take a 9:16 aspect ratio, and video inspect can pull JPEG stills from a clip with a pixel cap. Neither sets a file-size target, so you verify the 20 MB limit yourself.

What are the image limits?

From TikTok's Media Transfer Guide:

TikTok API image limits (read 2026-10-02)
ItemLimit
FormatsWebP, JPEG
ResolutionMaximum 1080p
File sizeMaximum 20 MB per image

What does 1080p mean for a vertical image?

The page says only "maximum 1080p" and does not spell out which edge it measures. The cautious reading is a long edge of 1080 or less is certainly fine, and 1080x1920 is the common vertical 1080p frame. If an upload is refused, test with a smaller long edge before assuming something else is wrong.

Photos also differ from videos in how they get to TikTok. The upload guide says photos support only URL-based uploads from a verified domain, so the file has to sit on a domain you control.

How do I request the right size from Sume?

On Image 1.0, aspect_ratio accepts per-model native values and output_format accepts png, jpeg, jpg or webp. Choose jpeg or webp, never png, for TikTok. image_size takes WIDTHxHEIGHT only on models that accept custom pixels (GPT, Seedream, Flux, Qwen, Recraft); on GPT both edges must be multiples of 16, so 1080 itself is not valid there.

For stills from a video, ask video inspect for explicit timestamps as JPEG with a pixel cap. max_edge is the long-edge clamp, 64 to 2160, so 1080 stays inside the TikTok cap:

curl -X POST https://api.sume.com/v1/video-inspect \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: tiktok-stills-001" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/clip.mp4",
    "frames": { "at": [1, 4, 7], "format": "jpeg", "max_edge": 1080 }
  }'

What does Sume not check for you?

Neither route reports a file size or promises one under 20 MB. A JPEG at 1080 on the long edge is normally well below that, but measure the downloaded file before you send it. Sume also does not re-host the result on your verified domain: download the media.sume.com artifact and put it where TikTok can pull from.

Video inspect stills are unbilled with default probing; only the optional transcript is billed.

Pre-upload checklist

Before you queue a photo post:

  • Format is JPEG or WebP.
  • Long edge is 1080 or less.
  • Each file is under 20 MB when measured.
  • The files are served from a domain you have verified with TikTok.

Sources

Related posts

More in Integrations

All Integrations posts

Written by Sume