SocialToAIStart freeConsole
POST/v1/call/douyin.kol_videosPreview

Douyin KOL video performance API (Xingtu)

Only on Douyin.

The Douyin KOL video performance API (Xingtu) returns a page of a Douyin creator's videos by Xingtu creator ID, newest first, with the figures Xingtu gives for each: views, likes, completion and engagement ratios, length. One call costs 3 credits ($0.006 to $0.01 depending on the pack); failed calls are free. Call it over HTTP or from your AI client over MCP. Last tested 2026-10-17.

100 credits on sign-up, no card needed
3 creditsper call
Up to 20 per pageone page per call
2026-10-17last tested
936 Bsample response, 1 item

Last updated:

Preview: this interface is not marked stable yet, so its parameters and fields may still change. It is charged like any other call, and a failed call is not charged.

Request and response

curl https://api.socialtoai.com/v1/call/douyin.kol_videos \  -H "Authorization: Bearer $SOCIALTOAI_KEY" \  -H "Content-Type: application/json" \  -d '{    "id": "6763236383382306828"  }'
import osimport requestsresponse = requests.post(    "https://api.socialtoai.com/v1/call/douyin.kol_videos",    headers={"Authorization": f"Bearer {os.environ['SOCIALTOAI_KEY']}"},    json={        "id": "6763236383382306828",    },)print(response.json())
# Connected over MCP? Ask in plain words.Use the Douyin Xingtu creator video performance interface (douyin.kol_videos) with id: 6763236383382306828.# Your AI calls the call tool with:{  "id": "6763236383382306828"}
Sign in to run3 creditsOpens in the Playground with these parameters after you sign in. It never runs by itself.
200 OK936 B3 credits
{  "op": "douyin.kol_videos",  "platform": "douyin",  "status": "ok",  "items": [    {      "platform": "douyin",      "id": "…",      "ref": "…",      "approx": [],      "type": "entry",      "entry_type": "xingtu_creator_post",      "title": "…",      "url": "https://example.com/…",      "rank": null,      "heat": null,      "fields": {        "published_at": "2026-10-09T09:00:01.000Z",        "duration": 222.207,        "views": 96840,        "likes": 1370,        "comments": 91,        "completion_rate": 0.020132,        "engagement_rate": 0.02032      }    }  ],  "unavailable": [],  "page": {    "has_more": true,    "cursor": "cur_…",    "cursor_expires_at": "2026-10-12T22:38:13.000Z"  },  "cost_credits": 3}
entry_type
xingtu_creator_post
published_at
2026-10-09T09:00:01.000Z
duration
222.207
views
96840
likes
1370
comments
91
completion_rate
0.020132

Names and text were removed from the sample; the numbers are as recorded.

Sample data1 of the 20 items recorded

2 parameters.
1 required.

Send them as a JSON body with POST. Your key goes in the Authorization header, never in the URL.

NameTypeRequiredDefaultDescription
idstringRequired—Xingtu creator ID, a string of digits; not the Douyin account ID: take it from the Xingtu creator search
cursorstringOptional—Pass page.cursor from the last response to get the next page.

Where to get what you send.

id

Xingtu creator ID, a string of digits; not the Douyin account ID: take it from the Xingtu creator search (e.g. 6763236383382306828)

Every item these return carries its ref; send it as it is:

The fields of each item.
What Douyin cannot give is marked.

FieldTypeMeaning
items[].titlestringThe entry's title or name.
items[].urlstringA link that opens it; null where the platform's list has none.
items[].rankintegerPosition on a board, from 1.
items[].heatintegerThe platform's heat score.
items[].fields.published_atstringWhen it was published.
items[].fields.durationnumberLength of the video, in seconds.
items[].fields.viewsintegerViews.
items[].fields.likesintegerLikes.
items[].fields.commentsintegerComments.
items[].fields.completion_ratenumberCompletion rate, 0 to 1.
items[].fields.engagement_ratenumberEngagement rate, 0 to 1.
nullFields Douyin cannot give

Douyin gives every field of this call. Where one item lacks a value, that field is null.

Every item also has platform, id, ref, approx and type; the response around the items is the same on every call. Response format

What to expect.

One call returns a page of up to 20 items. When page.has_more is true, send page.cursor back as cursor for the next page; each page costs 3 credits and a cursor works for 30 minutes.
A call that runs and finds nothing is a successful call: status is "empty", items is empty, and it costs 3 credits.
On this call Douyin cannot tell a video that does not exist from one with no data: both come back as empty, and both are charged.

1 call per second per key, 5 after a purchase; going over is not charged. Rate limits

A failed call costs 0 credits and is never retried on its own. Error codes

Once connected over MCP, these questions use it.

  1. Get a page of a Douyin creator's videos by Xingtu creator ID, newest first, with the figures Xingtu gives for each: 6763236383382306828.
    call {"op":"douyin.kol_videos","id":"6763236383382306828"}
    3 credits
  2. Search Douyin creators on Xingtu by words in their name: 美食, then for the first 3: get a page of a Douyin creator's videos by Xingtu creator ID, newest first, with the figures Xingtu gives for each.
    call {"op":"douyin.kol_search","query":"美食"}call {"op":"douyin.kol_videos","id":"<ref>"} × 3
    12 credits

Questions.
Short answers.

Everything on Douyin
Do I need a Douyin account or Douyin's own API access?
No. You only need a SocialToAI key. The call returns content and account information publicly visible on Douyin; you never sign in to Douyin or apply for anything there.
What does “Preview” mean here?
Preview: this interface is not marked stable yet, so its parameters and fields may still change. It is charged like any other call, and a failed call is not charged.

Your AI is one URL away
from all of social media.

100 credits on sign-up, no card needed