SocialToAIStart freeConsole
POST/v1/call/douyin.kol_performancePreview

Douyin KOL metrics API (Xingtu)

Only on Douyin.

The Douyin KOL metrics API (Xingtu) returns how a Douyin creator's videos did over the last 30 or 90 days, by Xingtu creator ID: videos, median views, average likes, comments and shares, engagement and completion ratios, expected cost per thousand views and per interaction. 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
One objectreturned per call
2026-10-17last tested
1007 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_performance \  -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_performance",    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 metrics interface (douyin.kol_performance) with id: 6763236383382306828.# Your AI calls the call tool with:{  "id": "6763236383382306828"}
Change the requestThe code above follows.
window
Sign in to run3 creditsOpens in the Playground with these parameters after you sign in. It never runs by itself.
200 OK1007 B3 credits
{  "op": "douyin.kol_performance",  "platform": "douyin",  "status": "ok",  "items": [    {      "platform": "douyin",      "id": "…",      "ref": "…",      "approx": [],      "type": "entry",      "entry_type": "xingtu_creator_metrics",      "title": null,      "url": null,      "rank": null,      "heat": null,      "fields": {        "videos": 763,        "median_views": 237059,        "average_likes": 11712,        "average_comments": 993,        "average_shares": 938,        "engagement_rate": 0.0148,        "engagement_rate_percentile": 0.512,        "completion_rate": 0.2377,        "completion_rate_percentile": 0.7391,        "currency": "…",        "cpm_21_60s": "537.29",        "cpm_over_60s": "2238.73",        "cpe_21_60s": "36.92",        "cpe_over_60s": "153.84"      }    }  ],  "unavailable": [],  "cost_credits": 3}
entry_type
xingtu_creator_metrics
videos
763
median_views
237059
average_likes
11712
average_comments
993
average_shares
938
engagement_rate
0.0148

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

Sample dataFull response

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
windowstringOptional"30d"The period: the last 30 or the last 90 days
"30d""90d"

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.videosintegerVideos in the period.
items[].fields.median_viewsintegerMedian views per video.
items[].fields.average_likesintegerAverage likes per video.
items[].fields.average_commentsintegerAverage comments per video.
items[].fields.average_sharesintegerAverage shares per video.
items[].fields.engagement_ratenumberEngagement rate, 0 to 1.
items[].fields.engagement_rate_percentilenumberThe share of comparable creators this engagement rate beats, 0 to 1.
items[].fields.completion_ratenumberCompletion rate, 0 to 1.
items[].fields.completion_rate_percentilenumberThe share of comparable creators this completion rate beats, 0 to 1.
items[].fields.currencystringThe currency of the four costs below.
items[].fields.cpm_21_60sstringExpected cost per thousand views of a 21 to 60 second video.
items[].fields.cpm_over_60sstringExpected cost per thousand views of a video over 60 seconds.
items[].fields.cpe_21_60sstringExpected cost per interaction of a 21 to 60 second video.
items[].fields.cpe_over_60sstringExpected cost per interaction of a video over 60 seconds.
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 one object, with no pages, for 3 credits.

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 how a Douyin creator's videos did over the last 30 or 90 days, by Xingtu creator ID: 6763236383382306828.
    call {"op":"douyin.kol_performance","id":"6763236383382306828"}
    3 credits
  2. Get how a Douyin creator's videos did over the last 30 or 90 days, by Xingtu creator ID: 6763236383382306828, with window set to 90d.
    call {"op":"douyin.kol_performance","id":"6763236383382306828","window":"90d"}
    3 credits
  3. Search Douyin creators on Xingtu by words in their name: 美食, then for the first 3: get how a Douyin creator's videos did over the last 30 or 90 days, by Xingtu creator ID.
    call {"op":"douyin.kol_search","query":"美食"}call {"op":"douyin.kol_performance","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