Endpoints
1 endpoint returns downloads on TikTok.
Schema
Every endpoint above returns this object as data. The standard meta comes with every response.
platformstringPlatform ID (tiktok, instagram, …).
idstringPlatform-native ID of the post (equals post.id).
urlstring uriCanonical URL of the post.
typestringThe post's content shape, as post.type. New values may be added; treat unknown values as other.
One ofvideoimagecarouselaudio
platform_typestringnullableThe platform's own product label, lowercase (reel, short, story, …), as post.platform_type.
titlestringnullableHeadline (Reddit title, Facebook video title); null on caption-only platforms.
textstringnullableCaption or body as plain text.
authorobjectThe posting account.
ShowHide 6 child fields
idstringnullablePlatform-native account ID; null when only the handle is known.
usernamestringnullableHandle without the @; null when the account has none.
display_namestringnullableDisplay name shown on the profile.
urlstring urinullableCanonical profile URL.
avatar_urlstring urinullableProfile picture URL. Platform CDN URLs can expire within hours.
is_verifiedbooleannullablePlatform verification badge; null where the platform has no badge.
published_atstring date-timenullableWhen the post went public, RFC 3339 UTC.
duration_msintegernullableLength of the post's primary video or audio in milliseconds; null for photo posts.
thumbnail_urlstring urinullableLargest cover or poster image URL of the post (the first attachment's; each file's own is files[].thumbnail_url); CDN links can expire within hours.
filesobject[]The post's files by item_index, the sound last; each item's best first (a url, the item's own kind before its separate audio, no watermark, with sound, not a manifest, then resolution). At least one has a url.
ShowHide 16 child fields
item_indexintegernullable0-based position of the file's attachment in display order (post.media[item_index]); null for the post's sound (a slideshow's soundtrack).
typestringKind of file, as media[].type. New values may be added; treat unknown values as other.
One ofvideoimageaudiogif
urlstring urinullableDirect CDN file URL, fetchable without cookies or headers; null when the platform serves it only with its cookie or to the IP that asked.
expires_atstring date-timenullableWhen url stops working, RFC 3339 UTC, read from its signature; null when unknown or it does not expire.
mime_typestringnullableIANA media type without parameters (video/mp4, image/jpeg, audio/mp4); application/vnd.apple.mpegurl (HLS) or application/dash+xml (DASH) for a streaming manifest.
size_bytesintegernullableFile size in bytes; an estimate from bitrate × duration is in approximate_fields.
widthintegernullableWidth in pixels (images and video).
heightintegernullableHeight in pixels (images and video).
duration_msintegernullableDuration in milliseconds (video and audio); null for images and when unknown.
bitrate_kbpsintegernullableAverage bitrate in kbit/s (video and audio), rounded; null when unknown.
frame_ratenumbernullableFrames per second (video and gif), to two decimals (an NTSC 30000/1001 is 29.97); null for images and audio and when unknown.
video_codecstringnullableVideo codec (h264 plays everywhere; h265, vp9 and av1 need newer players); null for images and audio. New values may be added; treat unknown values as other.
One ofh264h265vp9av1
audio_codecstringnullableAudio codec of the file's sound; null when it has none. New values may be added; treat unknown values as other.
One ofaacopusmp3
is_watermarkedbooleannullableThe platform's logo or the author's handle is burned into the picture (TikTok's download file); false: the clean original. Null for audio.
is_video_onlybooleannullableTrue: video without its sound, which is the audio file of the same item_index. False: it plays with its sound, or has none. Null for images and audio.
thumbnail_urlstring urinullableCover image of this file's attachment (post.media[item_index].thumbnail_url), built like url; null for images and audio and when unknown.
platform_specificobjectFields only this platform has, under its ID (platform_specific.<platform>); each null when unknown.
ShowHide 1 child field
tiktokobjectnullableA TikTok download's own fields.
ShowHide 1 child field
is_download_allowedbooleannullableThe creator lets viewers save the post in TikTok's app; false: saving is turned off (the files stay public). Null when TikTok does not say.
approximate_fieldsstring[]JSON paths of estimated or rounded values (a size from bitrate × duration, a duration in whole seconds). [] when all exact.
unknown_fieldsstring[]JSON paths of lists whose [] means unknown rather than none. [] when every list is known.
Item errors
Besides the request-level errors every endpoint can return, download endpoints return:
| Code | HTTP | Retry | Meaning | What to do |
|---|---|---|---|---|
not_found | 404 | No | The item does not exist or was deleted. On GET /v1/requests/{id}/response: the response was not kept (details.reason says why). | Check the link or ID. Do not retry. |
private_or_unavailable | 403 | No | The item exists but is not public: it is private, age- or region-restricted, or needs a login to view. It shares 403 with forbidden (which is about the key), so branch on the code. | Only public items can be fetched. Do not retry. |
no_media | 404 | No | The post exists but has no file to download: a text or link post, or one whose media the platform does not serve logged out. | Do not retry. Fetch the post itself for its text and links. |