Open in ChatGPT
Coding with AI?
Connect your agent to our MCP and let it integrate any endpoint for you in one shot.

TikTok User Stories

Get a user’s currently live stories (the 24-hour posts shown on their profile) by username, numeric user ID, or profile URL. Returns the same fields as User Videos for each story. A user with no live stories returns an empty list.

Endpoint

GET /v1/tiktok/user/stories

Price: $0.006 per page Free tier: 50 requests/month

Parameters

Provide exactly one of username, user_id, or url.

Parameter Required Description
username One required TikTok username, with or without leading @ (max 100 characters).
user_id One required Numeric TikTok user ID, as returned by Search Users or User Profile.
url One required TikTok profile URL, e.g. https://www.tiktok.com/@tiktok (max 500 characters).
pages No Number of pages to fetch, 1-1000 (default: 1). Each page returns up to 30 stories.
get_sentiment No Set to true to add AI emotion analysis (Plutchik’s Wheel) to each result. Adds +$0.001 per page to the cost. Returns emotion scores, dominant emotion, intensity, and polarity.

Response Fields

Field Type Description
stories array Array of the user’s live stories
stories[].video_id string Numeric video ID
stories[].title string Video caption
stories[].url string Direct link to the video
stories[].date string Publication date and time
stories[].date_timestamp integer/null Publication date as a Unix timestamp
stories[].author string Author’s TikTok username
stories[].source string "TikTok"
stories[].domain string "tiktok.com"
stories[].snippet string Video caption text
stories[].region string 2-letter region code the video was posted from
stories[].play_count integer Number of plays/views
stories[].likes integer Number of likes
stories[].comments integer Number of comments
stories[].shares integer Number of shares
stories[].downloads integer Number of downloads
stories[].saves integer Number of saves (favorites)
stories[].duration integer Video duration in seconds (0 for photo posts)
stories[].is_ad boolean Whether the video is an ad
stories[].is_pinned boolean Whether the video is pinned to the author’s profile
stories[].author_name string Author’s display name
stories[].author_id string Author’s numeric user ID
stories[].author_avatar string Author’s avatar URL
stories[].author_url string Link to the author’s profile
stories[].cover string Video cover/thumbnail URL
stories[].dynamic_cover string Animated cover URL
stories[].origin_cover string Original cover frame URL
stories[].video_url string Watermark-free playback/download URL (temporary)
stories[].video_url_watermarked string Watermarked playback URL (temporary)
stories[].size integer File size of the watermark-free video in bytes
stories[].size_watermarked integer File size of the watermarked video in bytes
stories[].images string[] Image URLs for photo posts; empty for videos
stories[].music_id string ID of the sound used
stories[].music_title string Title of the sound used
stories[].music_author string Artist of the sound used
stories[].music_url string Playback URL of the sound
stories[].music_cover string Cover image of the sound
stories[].music_album string Album of the sound, or empty string
stories[].music_original boolean Whether the sound is an original sound
stories[].music_duration integer Sound duration in seconds
stories[].mentioned_user_ids string[] Numeric IDs of the users mentioned in the caption
stories[].sentiment object/null Emotion analysis results. Only present when get_sentiment=true. Returns null if analysis fails.
stories[].sentiment.emotions object Plutchik emotion scores (0-100) for: joy, trust, fear, surprise, sadness, disgust, anger, anticipation.
stories[].sentiment.dominant_emotion string The emotion with the highest score.
stories[].sentiment.emotional_intensity integer Overall emotional intensity on a scale of 0-10.
stories[].sentiment.polarity string Overall sentiment polarity: positive, negative, or neutral.
username string The user’s username
pages integer Number of pages returned
count integer Number of results returned

Example Request

cURL

curl "https://apidirect.io/v1/tiktok/user/stories?username=jamescharles" \
  -H "X-API-Key: YOUR_API_KEY"

Python

import requests

response = requests.get(
    "https://apidirect.io/v1/tiktok/user/stories",
    headers={"X-API-Key": "YOUR_API_KEY"},
    params={"username": "jamescharles"}
)
print(response.json())

Example Response

{
  "stories": [
    {
      "video_id": "7695841671082216717",
      "title": "",
      "url": "https://www.tiktok.com/@jamescharles/video/7695841671082216717",
      "date": "2026-10-12 17:56:33",
      "date_timestamp": 1791827793,
      "author": "jamescharles",
      "source": "TikTok",
      "domain": "tiktok.com",
      "snippet": "",
      "region": "US",
      "play_count": 55471,
      "likes": 1352,
      "comments": 0,
      "shares": 25,
      "downloads": 0,
      "saves": 0,
      "duration": 7,
      "is_ad": false,
      "is_pinned": false,
      "author_name": "James Charles",
      "author_id": "190068318278651904",
      "author_avatar": "https://p16-common-sign.tiktokcdn-eu.com/.../avatar.jpeg",
      "author_url": "https://www.tiktok.com/@jamescharles",
      "cover": "https://p16-common-sign.tiktokcdn-eu.com/.../cover.jpeg",
      "dynamic_cover": "https://p16-common-sign.tiktokcdn-eu.com/.../dynamic_cover.webp",
      "origin_cover": "https://p16-common-sign.tiktokcdn-eu.com/.../origin_cover.jpeg",
      "video_url": "https://v19.tiktokcdn-eu.com/.../video.mp4",
      "video_url_watermarked": "https://v19.tiktokcdn-eu.com/.../video_wm.mp4",
      "size": 10246341,
      "size_watermarked": 9402354,
      "images": [],
      "music_id": "7695565970584193805",
      "music_title": "original sound - darth.amidalaa",
      "music_author": "darth amidala",
      "music_url": "https://sf16-music.tiktokcdn-eu.com/.../music.mp3",
      "music_cover": "https://p16-common-sign.tiktokcdn-eu.com/.../music_cover.jpeg",
      "music_album": "",
      "music_original": true,
      "music_duration": 7,
      "mentioned_user_ids": []
    }
  ],
  "username": "jamescharles",
  "pages": 1,
  "count": 3
}