TikTok API endpoint
Lists the "original sounds" groups of one creator unmodified in `groups`: each group carries the `music` sound object, a `similar_music_list` and the `source_music_id`; the envelope also carries the creator's `honor_label`, a flat `music` list and cursor paging (`cursor`/`has_more`). `user_id` must be the numeric uid (a `sec_user_id` alone is rejected upstream with `status_code 5`).
/tiktok/mobile/user/original-musicQuery parameters:
user_id: required. The creator's numeric uid. A sec_user_id alone is rejected upstream with
status_code 5.cursor: optional. Paging token from the previous response. Default: 0.count: optional. Groups per page, bounded at 50. Default: 10.Measured 2026-10-24, uid 107955 (@tiktok): count=10 -> HTTP 200, 102,428 B,
9 groups, cursor 10, has_more 1, honor_label present; cursor=10 -> 8 more groups, cursor 20,
has_more 1. Another creator -> 9,660 B, 1 group, has_more 0.
Example request:
GET /api/v1/tiktok/mobile/user/original-music?user_id=107955&count=10
Example response (truncated):
{
"code": 200,
"msg": "OK",
"data": {
"groups": [
{"id": "...", "music": {"id": 7613798254214187009, "title": "original sound", "author": "tiktok"},
"similar_music_list": [], "source_music_id": "..."}
],
"music": [],
"honor_label": {"text": "..."},
"cursor": 10,
"has_more": true,
"status_code": 0
}
}
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required | ||
| user_id | string | Yes | Creator's numeric uid | 107955 | |
| cursor | integer | No | Paging token from the previous response | ||
| count | integer | No | Groups per page (max 50) |
curl -X GET "https://api.crawlora.net/api/v1/tiktok/mobile/user/original-music?user_id=107955&count=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"groups": [
{
"id": "...",
"music": {
"id": 7613798254214187000,
"title": "original sound",
"author": "tiktok"
},
"similar_music_list": [],
"source_music_id": "..."
}
],
"music": [],
"honor_label": {
"text": "..."
},
"cursor": 10,
"has_more": true,
"status_code": 0
}
}Request schema
No body schema
Response schema
#/definitions/tiktokmobile.userOriginalMusicResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | tiktokmobile.UserOriginalMusicResponse | No | ||||
| data.cursor | integer | No | ||||
| data.extra | unknown | No | ||||
| data.groups | array | No | ||||
| data.has_more | boolean | No | ||||
| data.honor_label | unknown | No | ||||
| data.log_pb | unknown | No | ||||
| data.music | array | No | ||||
| data.status_code | integer | No | ||||
| data.status_msg | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Invalid input | #/definitions/app.Response |
| 429 | Rate limit exceeded | #/definitions/app.Response |
| 500 | Internal server error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/tiktok/mobile/user/original-music?user_id=107955&count=10" \
-H "x-api-key: $CRAWLORA_API_KEY"