> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/tiktok/videos>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/tiktok/videos.mdx>

---

# TikTok video API

Resolve one public TikTok post by URL into structured video, author, music, metrics, and media fields in the shared Social Fetch envelope.

`GET /v1/tiktok/videos` takes a public TikTok `url` (full `/@user/video/…` links or short links). On a found lookup you get `data.video` (id, url, caption, createdAt, durationMs, mediaType, isAd), plus `data.author`, `data.music`, `data.metrics`, and `data.media` (download URLs, thumbnail, optional slideshow image list). Branch on `data.lookupStatus` (`found` / `not_found`) before you write rows. Optional query params: `region`, `trim` for a smaller payload, `getTranscript=true` to attach WebVTT when a caption track exists, and `downloadMedia=true` for hosted CDN assets in `data.downloads`.

Cost is 1 credit base. `downloadMedia=true` adds 10 credits (11 max on a successful lookup), even if `downloads` ends up empty. Prefer the dedicated transcript route when speech-to-text fallback matters; this route's `getTranscript` only returns a track when one is already available. Confirm billing with `meta.creditsCharged`.

## Request

- **Endpoint:** `GET /v1/tiktok/videos`
- **Credits:** 1 credit
+10 credits for downloadMedia
Max 11 credits
Failed requests are free
- **Input:** by video URL
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/tiktok/videos/get)
- **Platform page:** [/platforms/tiktok](https://www.socialfetch.dev/platforms/tiktok)

## FAQ

### How do I get TikTok video details by URL via API?

Call `GET /v1/tiktok/videos` with your Social Fetch API key (`x-api-key`) and a public post `url` query param. Read `data.lookupStatus`, then `data.video`, `data.author`, `data.metrics`, and `data.media`. See the API docs for parameters and examples.

### How much does the TikTok video endpoint cost?

1 credit base. `downloadMedia=true` adds 10 credits (11 total on a successful lookup). Check `meta.creditsCharged` on every response — that field is the billing source of truth.

### What does downloadMedia do on GET /v1/tiktok/videos?

When true, Social Fetch attempts to include hosted CDN URLs in `data.downloads` when media is available. The surcharge applies only when media is downloaded; if `downloads` is empty you pay the 1-credit base. Leave it off unless you need durable hosted assets.

### Can this endpoint return a transcript?

Yes, pass `getTranscript=true` to include WebVTT in `data.transcript` when a caption track exists. It does not run AI speech-to-text. For caption-or-AI fallback, use `GET /v1/tiktok/videos/transcript` with `useAiFallback`.

### Does GET /v1/tiktok/videos work for photo carousels?

Yes. Posts can resolve as `mediaType` `video` or `slideshow`. Slideshows may populate `data.media.slideshowImages` with ordered image URLs. Pass the public post URL the same way you would for a video.

### What URL formats does the TikTok video API accept?

Public TikTok video or photo post URLs, including `/@user/video/…` links and short links. Private or deleted posts resolve as `not_found` rather than a fake empty object.

### How is this different from listing a profile's videos?

This route resolves one post by URL. `GET /v1/tiktok/profiles/{handle}/videos` pages a creator's feed by handle. Use the list route to discover posts, then this route (or transcript / comments) when you need depth on a single clip.

### Do I need TikTok OAuth to look up a video?

No. You authenticate to Social Fetch with an API key. The route reads public post data; it does not act on behalf of a logged-in TikTok user.
