LIVE chat
Decoded chat, gift and room events.
- Upstream
/webcast/im/fetch/- Access
- Every plan
- Runs on
- LeanPool · android · tiktok · 47.6.3
- Pagination
{ cursor, has_more }- Client
os,app_flavour,app_versionoverrides- Billing
- Failed calls are free
Authorization
Your API key. Create one in API keys.
Query parameters
The numeric LIVE room ID. For example 7705861000123456789.
The cursor from the previous page. Omit it for the first page.
Client and egress overrides
Optional. Leave them out to run as android · tiktok · 47.6.3 from the default pool. See Clients and versions.
android or ios. For example android.
Run as tiktok, lite, lite_coin, pro, studio, shop, tv, douyin. For example tiktok.
A release of that app. Defaults to the current default for (os, app_flavour). For example 47.6.3.
Two-letter country code for egress. For example US.
A supported city in that region. For example miami.
Response
A 200 returns JSON with stable field names. Every response carries x-credits-cost, x-credits-tier and x-credits-remaining.
Pagination
Pass cursor from the previous page and stop when has_more is false. Both sit at the top level of every page; the raw upstream cursor fields are still in the body. See Pagination.
{
"cursor": "1794158512000",
"has_more": true,
"items": [
"…"
]
}import os, requests
def pages(path, **params):
cursor = None
while True:
if cursor:
params["cursor"] = cursor
r = requests.get(f"https://api.tikultra.com{path}", params=params,
headers={"x-api-key": os.environ["TIKULTRA_KEY"]})
r.raise_for_status()
page = r.json()
yield page
if not page["has_more"]:
return
cursor = page["cursor"]
for page in pages("/v1/live/chat", room_id=7705861000123456789, count=50):
print(page["cursor"], page["has_more"])Errors
Errors return a JSON body with a stable code and cost 0 credits. See Errors and retries.