Post
Get one TikTok video.
GET | POST /v1/tiktok/postSend parameters as a query string with GET, or as a JSON body with POST. Both are equivalent.
What to Pass
| Pass | Reads | Notes |
|---|---|---|
id | The video | A numeric id, the URL or a share link |
Pass one source per call. Every identifier also takes the page URL.
Parameters
| Parameter | Type | Required | Notes |
|---|---|---|---|
id | string | Numeric video id, or the video URL / share link (vm.tiktok.com/…). |
Request
curl "https://gateway.apinoa.com/v1/tiktok/post?id=7698770783367171359" \
-H "x-api-key: $APINOA_API_KEY"Response
Returns Post in data. A real response, shortened: arrays keep their first entries and long text is cut.
{
"success": true,
"data": {
"platform": "tiktok",
"id": "7698770783367171359",
"url": "https://www.tiktok.com/@tiktok/video/769877078336…",
"author": {
"platform": "tiktok",
"id": "107955",
"handle": "tiktok",
"displayName": "TikTok",
"url": "https://www.tiktok.com/@tiktok",
"avatarUrl": "https://p19-common-sign.tiktokcdn-us.com/tos-usea…",
"verified": true,
"counts": {
"followers": 96400000,
"following": 1,
"posts": 1512
},
"ext": {
"secUid": "MS4wLjABAAAAv7iSuuXDJGDvJkmH_vz1qkDZYo1apxgzaxdBS…",
"signature": "Your next discovery is waiting on TikTok.",
"totalLikes": 466000000,
"likesGiven": 4377
}
},
"text": "The throwback sounds we didn’t know we were missi…",
"createdAt": "2026-10-20T15:23:03.000Z",
"lang": "en",
"media": [
{
"type": "video",
"url": "https://www.tiktok.com/aweme/v1/play/?faid=1988&f…",
"width": 720,
"height": 1280,
"thumbnailUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-usea…",
"durationSec": 105,
"variants": [
{
"url": "https://www.tiktok.com/aweme/v1/play/?faid=1988&f…",
"width": 720,
"height": 1280,
"bitrate": 1710350,
"contentType": "video/mp4"
}
],
"ext": {
"playAddr": "https://v16-webapp-prime.us.tiktok.com/video/tos/…",
"downloadAddr": "https://v16-webapp-prime.us.tiktok.com/video/tos/…",
"dynamicCover": "https://p19-common-sign.tiktokcdn-us.com/tos-usea…",
"definition": "720p",
"videoQuality": "normal",
"ratio": "720p",
"codec": "h264",
"format": "mp4",
"bitrate": 1710350,
"sizeBytes": 22592237,
"loudness": -23.6,
"peak": 0.53703,
"hasOriginalAudio": true,
"autoCaption": true,
"bitrateVariants": [
{
"gearName": "normal_720_0",
"fps": 30,
"codec": "h264",
"sizeBytes": 22592237
}
],
"subtitles": [
{
"lang": "eng-US",
"langId": "2",
"url": "https://v16m-webapp.tiktokcdn-us.com/33b86e5d3f3c…",
"format": "webvtt",
"source": "ASR"
}
]
}
}
],
"metrics": {
"likes": 5229,
"comments": 1640,
"shares": 503,
"views": 351700,
"reposts": 0,
"saves": 450
},
"entities": {
"mentions": [
{
"handle": "adambarrera",
"id": "6707847482024723461"
}
]
},
"audio": {
"id": "7698770883132853023",
"title": "original sound",
"artist": "TikTok",
"url": "https://v16m.tiktokcdn-us.com/c8470014c6bdd52cea2…"
},
"ext": {
"music": {
"original": true,
"coverUrl": "https://p19-common-sign.tiktokcdn-us.com/tos-usea…",
"durationSec": 105,
"isCommerceMusic": true
},
"duetEnabled": true,
"stitchEnabled": true,
"diversificationLabels": [
"Music"
],
"locationCreated": "US",
"suggestedWords": [
"nostalgia sounds"
]
}
}
}Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | INVALID_PARAMS | A parameter is missing, unknown or out of range. The message names it. |
| 401 | UNAUTHORIZED | The x-api-key header is missing, or the key is revoked or unknown. |
| 402 | INSUFFICIENT_BALANCE | The balance does not cover this call. Top up in the dashboard. |
| 404 | NOT_FOUND | The account, post or group does not exist, or is private, deleted or age-restricted. |
| 429 | MARKETPLACE_SATURATED | Too many concurrent calls. Retry after the Retry-After seconds. |
| 502 | UPSTREAM_ERROR | The platform answered with something unusable. Retry with backoff. |
Every code is listed in Errors. Failed calls are not billed.
Pricing
Price $0.001 per call. List price; the rate steps down above 1,000 calls a day.