Guides / Working with data / IDs and the resolver

IDs and the resolver

TikTok IDs are 64-bit Snowflakes; the top 32 bits are the creation time. The resolver turns any link into typed IDs.

Resolve any link

GET /v1/resolve?input=… takes a video, profile, LIVE or Shop link (tiktok.com, vm.tiktok.com, vt.tiktok.com) or an @username and returns its kind, canonical URL, every ID it can find and the decoded creation time.

Response
{
  "kind": "video",
  "canonical_url": "https://www.tiktok.com/@acme/video/7705852133855161377",
  "aweme_id": "7705852133855161377",
  "uid": "6970000000000000001",
  "sec_uid": "MS4wLjABAAAAq8V3xLm2pR9wQ8mN4vK1zH7tB2yX",
  "unique_id": "acme",
  "room_id": null,
  "product_id": null,
  "music_id": "7569924403851462401",
  "snowflake_timestamp_utc": "2026-11-08T17:21:52Z"
}

Resource endpoints still take typed IDs first (aweme_id, username, room_id, product_id); many also take an optional url.

Reading the timestamp

Shift an ID right by 32 bits to get Unix seconds. 7705852133855161377 >> 32 is 1794158512, which is Nov 8, 2026 17:21:52 UTC.

JavaScript
const id = 7705852133855161377n
const seconds = Number(id >> 32n)
console.log(new Date(seconds * 1000).toISOString())

sec_uid

sec_uid is the stable account ID used by the mobile API. The resolver returns it for any profile link or @handle.