Posts are individual TikTok videos with stats, captions, hashtags, mentions, and music. Comments are paginated separately.
GET/v1/posts/:id#
Reads a single post from the local cache. :id is the TikTok video ID (the trailing number from a TikTok URL).
bash
curl "https://developers.tokfluence.com/v1/posts/7234567890123456789" \
-H "Authorization: Bearer $TOKEN"Response
json
{
"data": {
"post_id": "7234567890123456789",
"url": "https://www.tiktok.com/@wwe/video/7234567890123456789",
"caption": "Big match tonight #wwe #wrestling",
"published_at": "2026-04-12T19:00:00Z",
"cover_url": "https://...",
"duration": 28,
"views": 1240000,
"likes": 84000,
"comments": 1900,
"shares": 5400,
"saves": 720,
"hashtags": ["wwe", "wrestling"],
"mentions": [],
"music": {
"title": "original sound",
"author": "wwe",
"original": true
},
"is_sponsored": false
}
}Cached only
This endpoint reads from the local index; it does not trigger a fresh analysis. If you need fresh data, submit the post URL to
POST /v1/posts/analyze first, then read.
GET/v1/posts/:id/comments#
Cursor-paginated comments for a post.
Query parameters
| Param | Type | Notes |
|---|---|---|
cursor | int | Number of comments to skip. Defaults to 0. |
limit | int | Defaults to 50, max 200. |
bash
curl "https://developers.tokfluence.com/v1/posts/7234567890123456789/comments?limit=20" \
-H "Authorization: Bearer $TOKEN"Response
json
{
"data": [
{
"comment_id": "7234567890123456789-c-1",
"text": "Let's go!",
"published_at": "2026-04-12T19:08:11Z",
"likes": 42,
"reply_count": 3,
"parent_comment_id": null,
"author_username": "fan1",
"author_picture": "https://..."
}
],
"meta": {
"total": 1900,
"next_cursor": 20
}
}Loop until meta.next_cursor is null.
POST/v1/posts/analyze#
Submits a batch of TikTok post URLs to the analysis pipeline. The pipeline writes results back to the index, so you can read them via GET /v1/posts/:id after a short delay.
Live data — slower and more expensive than cached endpoints
Each URL fires a real fetch through our proxy network, so this is the most expensive endpoint we offer (25 credits per URL). A batch can take several seconds per URL on cold cache while we crawl. Plan accordingly:
- Dedupe URLs client-side. We can't pre-check cache cheaply, so duplicates are billed.
- Cap concurrent calls. The per-key throttle still applies on top of this.
- Use
GET /v1/posts/:idfirst if you only need cached data.
Body
| Param | Type | Notes |
|---|---|---|
urlsrequired | string[] | Up to 50 TikTok video URLs. |
force | bool | If true, bypasses the freshness window and re-analyzes even recent posts. |
bash
curl -X POST "https://developers.tokfluence.com/v1/posts/analyze" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"urls": [
"https://www.tiktok.com/@wwe/video/7234567890123456789",
"https://www.tiktok.com/@wwe/video/7234567890987654321"
]
}'Response
json
{
"data": [
{ "url": "...", "postId": "7234567890123456789", "status": "analyzed" },
{ "url": "...", "postId": "7234567890987654321", "status": "fresh" }
],
"meta": {
"submitted": 2,
"cost": 50
}
}