Skip to main content
TikTok is the place for short-form video. The API is powerful but comes with specific restrictions around music, privacy, and image formats that will surprise you.

Supported Content Types

  • Videos: 1 video, up to 10 minutes. The bread and butter.
  • Photo Mode (Images): 1-10 images. JPG/JPEG only. If you’re thinking “surely PNG works too” - it doesn’t.

Quirks & Gotchas

If you set a video’s privacy to SELF_ONLY (Private), the API cannot return a public permalink immediately.
  • The permalink field will be null or internal-only.
  • We can’t give you a link to something that doesn’t publicly exist. Physics still applies.
TikTok is extremely strict about music rights.
  • Trending Audio: You generally cannot use TikTok’s “trending audio” library directly via API.
  • Royalty-Free: You can use the autoAddMusic flag to let TikTok assign royalty-free music, but you lose control over the specific track. It’s a gamble.
  • Best Practice: Burn your audio into the video file before uploading.

Image Format (Photo Mode)

TikTok only accepts JPG and JPEG files for Photo Mode posts. PNG, WebP, and everything else will be rejected. Convert before uploading.

The REVIEW Status

TikTok is the most common platform to put posts into a REVIEW status. This means TikTok wants to review the content before publishing. We periodically re-check and re-attempt publishing. Tell your users to be patient.

Media Limits

See Platform Limits for the full breakdown.

Analytics

For general analytics concepts (refresh rates, data retention, what “Returns 0” means), see the Analytics Overview. TikTok provides some of the richest analytics data among all platforms. Demographics, audience splits, the works. Check the raw analytics for the detailed breakdowns.

Profile Analytics

Period: Rolling window (30 days). Aggregated from daily metrics.
MetricDescriptionNote
impressionsVideo views
impressionsUniqueUnique video views
viewsVideo viewsSame as impressions for TikTok
viewsUniqueUnique video viewsSame as impressionsUnique
likesTotal likesAggregated across all videos
commentsTotal comments
postCountTotal videos
followersFollowers
followingFollowing

Post Analytics

Period: Lifetime (Snapshot).
MetricDescriptionNote
impressionsVideo views
impressionsUniqueUnique viewsTikTok doesn’t always distinguish; can equal impressions
viewsVideo viewsSame as impressions
viewsUniqueUnique viewsSame as impressionsUnique
likesLikes
commentsComments
sharesShares
saves-Returns 0 (not provided by TikTok API)

Quirks

  • Profile analytics aggregate daily metrics over a 30-day window.
  • Post analytics are lifetime values.
  • TikTok can take up to 48 hours to process some detailed analytics like audience demographics.
  • Views and unique views are tracked separately but can sometimes be 0 if the platform decides so.

Raw Analytics - Demographics & Audience Data

TikTok provides rich audience and engagement data via raw analytics. Here’s what the raw payload looks like when enabled for your organization:

Account-Level Raw Data

{
  "followers_count": 125400,
  "following_count": 342,
  "total_likes": 2891000,
  "videos_count": 287,
  "unique_video_views": 1450000,
  "video_views": 8920000,
  "comments": 45200,
  "audience_ages": [
    { "age_range": "18-24", "percentage": 42.3 },
    { "age_range": "25-34", "percentage": 31.7 },
    { "age_range": "35-44", "percentage": 14.2 },
    { "age_range": "45-54", "percentage": 7.1 },
    { "age_range": "55+", "percentage": 4.7 }
  ],
  "audience_cities": [
    { "city": "Los Angeles", "percentage": 8.2 },
    { "city": "New York", "percentage": 7.1 },
    { "city": "London", "percentage": 5.4 }
  ],
  "engaged_audience": [
    { "metric": "likes", "value": 89200 },
    { "metric": "comments", "value": 4520 },
    { "metric": "shares", "value": 12300 }
  ],
  "metrics": [
    {
      "date": "2026-01-15",
      "new_followers": 234,
      "video_views": 45600,
      "profile_views": 1230,
      "likes": 3400,
      "comments": 120,
      "shares": 890
    }
  ]
}

Video-Level Raw Data

{
  "item_id": "7123456789",
  "caption": "My viral video",
  "video_views": 1200000,
  "likes": 89000,
  "comments": 4500,
  "shares": 12000,
  "average_time_watched": 18.4,
  "full_video_watched_rate": 0.42,
  "total_time_watched": 22080000,
  "reach": 890000,
  "impression_sources": [
    { "source": "For You", "percentage": 72.1 },
    { "source": "Following", "percentage": 15.3 },
    { "source": "Search", "percentage": 8.4 }
  ],
  "audience_genders": [
    { "gender": "Male", "percentage": 45.2 },
    { "gender": "Female", "percentage": 52.1 },
    { "gender": "Other", "percentage": 2.7 }
  ],
  "audience_countries": [
    { "country": "US", "percentage": 35.2 },
    { "country": "GB", "percentage": 12.4 },
    { "country": "BR", "percentage": 8.9 }
  ]
}
TikTok raw data includes impression sources (For You, Following, Search), watch-through rates, audience gender/country splits, and daily metrics breakdowns. This is gold for content strategy - use it.