DramaBox API endpoint
Returns the DramaBox Android app API's autocomplete suggestions for a partial query: book rows (kind "book", cover_url) and performer rows (kind "actor", avatar, series count). The keyword is trimmed and truncated to 80 characters like the app; a query with no match returns an empty items list. Only public catalog metadata is read; no playable video is returned.
/dramabox/suggestReturns the autocomplete suggestions DramaBox's Android app shows while the user types a query: mixed short-drama and performer rows.
This endpoint reads DramaBox's Android app API rather than its website pages. It needs no device, emulator or app at request time: the service reproduces the app's request signature and state header from public app material (the app's static signing key is a committed public constant, like the ReelShort signing keys) and keeps the anonymous guest session the app uses for catalogue calls internally. Only public catalog metadata is read, and no playable video is ever returned.
Query parameters:
keyword: required partial search text. It is trimmed and, like the app, truncated to its first
80 characters. A blank keyword is rejected with 400.Notable response behavior:
keyword echoes the normalized keyword that was suggested on.items holds the suggestion rows in the app's order. Each row has a kind:
kind: "book" — id (a DramaBox title id), name, cover_url (catalogue jpg). Pass the id to
dramabox-tag / use the title with dramabox-search.kind: "actor" — id (pass it to dramabox-performer), name, avatar (catalogue jpg) and
videos (how many series the performer appears in).lov returns titles starting "Love…" and performers whose names contain "Lovett"/"Love").200 with an empty items list.algorithmRecomDot /
bookSource tracking blobs and per-user data are never returned.Example response (keyword=lov, shortened):
{
"code": 200,
"msg": "OK",
"data": {
"keyword": "lov",
"items": [
{
"kind": "actor",
"id": "29450",
"name": "Kyle Lovett",
"avatar": "https://hwztchapter.dramaboxdb.com/data/cppartner/0x5/29450/29450.jpg?time=1781245424449",
"videos": 1
},
{
"kind": "actor",
"id": "29262",
"name": "Cameron Love",
"avatar": "https://hwztchapter.dramaboxdb.com/data/cppartner/2x6/29262/29262.jpg?time=1781159442136",
"videos": 1
},
{
"kind": "book",
"id": "41000107392",
"name": "Love Is My Paycheck",
"cover_url": "https://hwztchapter.dramaboxdb.com/data/cppartner/4x1/41x0/410x0/41000107392/41000107392.jpg?t=1730797030710&image_process=resize,h_300",
"videos": 0
},
{
"kind": "book",
"id": "42000021499",
"name": "Love In Lockup",
"cover_url": "https://hwztchapter.dramaboxdb.com/data/cppartner/4x2/42x0/420x0/42000021499/42000021499.jpg?t=1784619485068&image_process=resize,h_300",
"videos": 0
}
]
}
}
| Field | Filled in, of 12 checked | Values in the sample |
|---|---|---|
| kind | 12 | book (10), actor (2) |
| id | 12 | |
| name | 12 | “Kyle Lovett” and 11 other values |
| avatar | 2 | hwztchapter.dramaboxdb.com |
| videos | 12 | 0 to 1, median 0 |
| cover_url | 10 | hwztchapter.dramaboxdb.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| keyword | string | Yes | Partial search text, trimmed and truncated to 80 characters | lov | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/dramabox/suggest?keyword=lov" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"keyword": "lov",
"items": [
{
"kind": "actor",
"id": "29450",
"name": "Kyle Lovett",
"avatar": "https://hwztchapter.dramaboxdb.com/data/cppartner/0x5/29450/29450.jpg?time=1781245424449",
"videos": 1
},
{
"kind": "actor",
"id": "29262",
"name": "Cameron Love",
"avatar": "https://hwztchapter.dramaboxdb.com/data/cppartner/2x6/29262/29262.jpg?time=1781159442136",
"videos": 1
},
{
"kind": "book",
"id": "41000107392",
"name": "Love Is My Paycheck",
"cover_url": "https://hwztchapter.dramaboxdb.com/data/cppartner/4x1/41x0/410x0/41000107392/41000107392.jpg?t=1730797030710&image_process=resize,h_300",
"videos": 0
},
{
"kind": "book",
"id": "42000021499",
"name": "Love In Lockup",
"cover_url": "https://hwztchapter.dramaboxdb.com/data/cppartner/4x2/42x0/420x0/42000021499/42000021499.jpg?t=1784619485068&image_process=resize,h_300",
"videos": 0
}
]
}
}Request schema
No body schema
Response schema
#/definitions/dramabox.suggestResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | dramabox.SuggestResponse | No | ||||
| data.items | array | No | ||||
| data.items[].avatar | string | No | Avatar is the performer image (jpg) for kind "actor". | |||
| data.items[].cover_url | string | No | CoverURL is the book cover image (jpg) for kind "book". | |||
| data.items[].id | string | No | ||||
| data.items[].kind | string | No | ||||
| data.items[].name | string | No | ||||
| data.items[].videos | integer | No | Videos is the performer's series count for kind "actor". | |||
| data.keyword | string | No | ||||
| 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/suggest?keyword=lov" \
-H "x-api-key: $CRAWLORA_API_KEY"