DramaBox API endpoint
Returns the DramaBox app's category navigation as six groups: language, production type, dub mode, two genre rows (genre_1 and genre_2) and sort order. Each group lists the selectable options as display names and the values to pass to dramabox-category-books. The "All" pseudo-option is dropped because omitting a filter means all. Only public catalog metadata is read; no playable video is returned.
/dramabox/categoriesThis endpoint reads DramaBox's Android app API rather than its website pages, device-free. Only public catalog metadata is read; no playable video is returned.
Query parameters: none.
Groups and their values (the labels below are the app's own options; the "All" pseudo-option is not listed because omitting a filter means all):
language (type 1): 美国 (Local), 中国 (Chinese), 韩国 (Korean), 日本 (Japanese),
西语国家 (Spanish), 泰国,菲律宾,印度尼西亚,德国,葡语国家,阿拉伯国家 (Others)production (type 6): 3 (AI Drama), 1 (Live-Action), 2 (Anime)dub (type 2): 1 (Dubbed), 0 (Subtitles Only)genre_1 (type 4, row 0): 1357 (Romance), 1361 (Strong Heroine), 1323 (Powerful Male Lead)genre_2 (type 4, row 1): 1363,1659 (Werewolf), 1338,1395 (Hidden Identity), 1325,1364 (Mafia),
1359 (BL), 10070,10080 (Dragon), 1655,1438 (Young Adult), 1320,1354 (Sci-Fi),
1324,1362 (Billionaire), 1662,1379 (Forbidden Love), 1394,1337 (Revenge), 1392 (Second Chance),
1343,1403 (Mistaken Identity), 1658,1654 (All-Too-Late), 1423,1393 (Love After Marriage),
1348,1408 (Family Bonds), 1380,1413 (Love Triangle), 1680,1401 (Winning Her Back),
1350,1411 (Family Intrigue)sort (type 5): 1 (Trending), 2 (Latest), 3 (Unwatched)Notable response behavior:
groups is returned in the app's own order: language, production, dub, genre_1,
genre_2, sort. The two genre groups share upstream type 4; row tells them apart.name is the label to show a user; value is the exact string to pass back as the matching
dramabox-category-books query parameter.Example response (option lists shortened):
{
"code": 200,
"msg": "OK",
"data": {
"groups": [
{
"key": "language",
"type": 1,
"options": [
{ "name": "Local", "value": "美国" },
{ "name": "Chinese", "value": "中国" },
{ "name": "Korean", "value": "韩国" }
]
},
{
"key": "production",
"type": 6,
"options": [
{ "name": "AI Drama", "value": "3" },
{ "name": "Live-Action", "value": "1" },
{ "name": "Anime", "value": "2" }
]
},
{
"key": "dub",
"type": 2,
"options": [
{ "name": "Dubbed", "value": "1" },
{ "name": "Subtitles Only", "value": "0" }
]
},
{
"key": "genre_1",
"type": 4,
"options": [
{ "name": "Romance", "value": "1357" },
{ "name": "Strong Heroine", "value": "1361" },
{ "name": "Powerful Male Lead", "value": "1323" }
]
},
{
"key": "genre_2",
"type": 4,
"row": 1,
"options": [
{ "name": "Werewolf", "value": "1363,1659" },
{ "name": "Hidden Identity", "value": "1338,1395" },
{ "name": "Mafia", "value": "1325,1364" }
]
},
{
"key": "sort",
"type": 5,
"options": [
{ "name": "Trending", "value": "1" },
{ "name": "Latest", "value": "2" },
{ "name": "Unwatched", "value": "3" }
]
}
]
}
}
| Field | Filled in, of 6 checked | Values in the sample |
|---|---|---|
| key | 6 | |
| type | 6 | 1 to 6, median 4 |
| options | 6 | median 3 entries |
| row | 1 | 1 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/dramabox/categories" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"groups": [
{
"key": "language",
"type": 1,
"options": [
{
"name": "Local",
"value": "美国"
},
{
"name": "Chinese",
"value": "中国"
},
{
"name": "Korean",
"value": "韩国"
}
]
},
{
"key": "production",
"type": 6,
"options": [
{
"name": "AI Drama",
"value": "3"
},
{
"name": "Live-Action",
"value": "1"
},
{
"name": "Anime",
"value": "2"
}
]
},
{
"key": "dub",
"type": 2,
"options": [
{
"name": "Dubbed",
"value": "1"
},
{
"name": "Subtitles Only",
"value": "0"
}
]
},
{
"key": "genre_1",
"type": 4,
"options": [
{
"name": "Romance",
"value": "1357"
},
{
"name": "Strong Heroine",
"value": "1361"
},
{
"name": "Powerful Male Lead",
"value": "1323"
}
]
},
{
"key": "genre_2",
"type": 4,
"row": 1,
"options": [
{
"name": "Werewolf",
"value": "1363,1659"
},
{
"name": "Hidden Identity",
"value": "1338,1395"
},
{
"name": "Mafia",
"value": "1325,1364"
}
]
},
{
"key": "sort",
"type": 5,
"options": [
{
"name": "Trending",
"value": "1"
},
{
"name": "Latest",
"value": "2"
},
{
"name": "Unwatched",
"value": "3"
}
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/dramabox.categoriesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | dramabox.CategoriesResponse | No | ||||
| data.groups | array | No | ||||
| data.groups[].key | string | No | Key is language, production, dub, genre_1, genre_2 or sort. | |||
| data.groups[].options | array | No | ||||
| data.groups[].options[].name | string | No | ||||
| data.groups[].options[].value | string | No | ||||
| data.groups[].row | integer | No | Row is the genre row index for the two type-4 groups (0 then 1). It is zero/omitted for every other group. | |||
| data.groups[].type | integer | No | Type is the upstream classify type id (1, 6, 2, 4, 4, 5 respectively, in the order above). | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/dramabox/categories" \
-H "x-api-key: $CRAWLORA_API_KEY"