EasyDown API Docs
Platform Video Downloader APIs

TikTok Download API

Parse public TikTok links into downloadable video, images, or audio plus sanitized platform data. See URL formats, fields, errors, and examples.

Normal video pages, photo posts, and TikTok share redirects all use the same authenticated REST request. EasyDown normalizes the result without discarding alternate qualities or gallery items.

Use it to add TikTok downloader and TikTok video download support without maintaining platform-specific extraction logic.

Use this endpoint when you need platform-specific fields in addition to stable downloadable media.

Endpoints

POST https://api.easydown.org/api/v1/platforms/tiktok/parse

Supported URL formats

  • tiktok.com/@{user}/video/{id}
  • tiktok.com/@{user}/photo/{id}
  • tiktok.com/t/{code}

Accepted examples

  • https://www.tiktok.com/@jesscreatescontent/video/7647557116596718861
  • https://www.tiktok.com/@creator/photo/7512345678901234567
  • https://www.tiktok.com/t/ZP8pT81pD/

What the platform response contains

Video posts may return several video qualities, cover images, and audio. Photo posts return every public gallery image exposed by the source response.

Published platform data fields

The API preserves additional public fields from the final target object after recursive sensitive-field filtering. The documented fields below remain stable for this platformDataVersion.

FieldTypeDescription
data.mediaobjectNormalized images, videos, audios, title, thumbnail, and duration.
data.platformDataVersionstringPublished data contract version for TikTok; currently 1.
data.platformData.aweme_idstringTikTok post identifier.
data.platformData.descstringPublic post caption.
data.platformData.authorobjectPublic creator profile fields.
data.platformData.videoobjectVideo metadata and playable renditions when the post is a video.
data.platformData.imagesarrayPhoto-post image objects when the post contains images.
data.platformData.statisticsobjectPublic engagement counters exposed for the post.
{
  "status": 200,
  "data": {
    "media": {
      "platform": "tiktok",
      "title": "Example public post",
      "thumbnail": "https://public-cdn.example/cover.jpg",
      "duration": 18,
      "images": [],
      "videos": [
        {
          "url": "https://public-cdn.example/video.mp4",
          "quality": "1080p",
          "mimeType": "video/mp4",
          "width": 1920,
          "height": 1080,
          "hasAudio": true,
          "source": "direct"
        }
      ],
      "audios": []
    },
    "platformData": {
      "aweme_id": "7647557116596718861",
      "desc": "Example public TikTok post",
      "author": {
        "unique_id": "creator",
        "nickname": "Example creator"
      },
      "video": {
        "width": 1080,
        "height": 1920,
        "duration": 12,
        "play_addr": {
          "url_list": [
            "https://media.example/video.mp4"
          ]
        }
      },
      "statistics": {
        "play_count": 1200,
        "digg_count": 84
      }
    },
    "platformDataVersion": "1"
  },
  "msg": "success"
}

Download and proxy guidance

Use a backend proxy with Referer: https://www.tiktok.com/ and a browser User-Agent. Some media requires a valid access cookie from your own browsing context, and availability can vary by server region.

Limits and behavior

Profiles, LIVE pages, sound pages, search results, TikTok Lite pages, private posts, deleted posts, and region-unavailable media are unsupported.

Only public content is supported. Private, deleted, age-restricted, region-restricted, live, or otherwise unavailable content can fail without a credit charge.

A response is charged only after downloadable media is returned. Each successful parse costs 1 credit. Authentication, validation, permission, unavailable-content, no-media, and upstream failures are not charged.

Troubleshooting

  • Resolve short share URLs before caching their final post URL.
  • Re-parse when a media URL returns 403 or 404 because TikTok links can expire.
  • Do not expose API tokens or source cookies in browser JavaScript.

Common questions

Does a failed request consume credits?

No. A credit is charged only after the API returns downloadable media.

The post can be deleted, private, region-restricted, live, missing media, or temporarily unavailable upstream.

Interactive API reference

The curl, JavaScript, and Python examples and schemas below are rendered from the production OpenAPI 3.1 contract.

The Try it panel sends requests directly to api.easydown.org. Its token is held in React memory only and disappears on reload.

POST

Try it

A successful response with downloadable media costs 1 credit. Failed requests are not charged.

The token stays only in this page memory and is cleared when the page is closed or reloaded.

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/api/v1/platforms/tiktok/parse" \  -H "Content-Type: application/json" \  -d '{}'
{  "status": 200,  "data": {    "media": {      "platform": "tiktok",      "title": "string",      "thumbnail": "string",      "duration": 0,      "images": [        {          "url": "http://example.com",          "width": 0,          "height": 0        }      ],      "videos": [        {          "url": "http://example.com",          "quality": "string",          "mimeType": "string",          "width": 0,          "height": 0,          "hasAudio": true,          "source": "direct",          "headers": {            "property1": "string",            "property2": "string"          }        }      ],      "audios": [        {          "url": "http://example.com",          "quality": "string",          "mimeType": "string",          "bitrate": 0,          "source": "direct",          "headers": {            "property1": "string",            "property2": "string"          }        }      ]    },    "platformData": {      "aweme_id": "string",      "desc": "string",      "author": {},      "video": {},      "images": [        null      ],      "statistics": {}    },    "platformDataVersion": "1"  },  "msg": "success"}