BEASTMODE-DRACIN API
One unified endpoint for catalogs, episodes, and short-drama streaming — across 45+ platforms (including DramaWave, ReelShort, NetShort).
Introduction
All endpoints share one base URL and return JSON. Auth is a Bearer token (issued by the admin). Playback URLs are served directly by the CDN — this server only returns metadata + signed URLs.
# base URL
https://hermes-ckplhi-8080.eu3.sumopod.my.id
play endpoint is fetched directly by the customer's player (CORS is open). Video bandwidth never touches this server.Authentication
Every request requires the header Authorization: Bearer <key>. Keys are issued per customer by the admin.
# example request
curl -s "https://hermes-ckplhi-8080.eu3.sumopod.my.id/v1/catalog?platform=dramawave" \
-H "Authorization: Bearer beast_live_xxxxxxxxxxxxxxxx"
No key, or an invalid/revoked key → 401.
Platforms
List all available platforms with their title counts.
curl -s https://hermes-ckplhi-8080.eu3.sumopod.my.id/v1/platforms -H "Authorization: Bearer <key>"
{ "data": [ { "platform": "dramawave", "titles": 3251 }, ... ] }Languages
Available languages (optional ?platform= filter).
Catalog
Browse titles by platform.
| Param | Type | Description |
|---|---|---|
platform | string | slug from /v1/platforms |
lang | string | language code (e.g. id, en) |
page | int | page number (default 1) |
limit | int | results per page |
curl -s "https://hermes-ckplhi-8080.eu3.sumopod.my.id/v1/catalog?platform=dramawave&lang=id&limit=10" \
-H "Authorization: Bearer <key>"
{ "data": [ {
"id": "dramawave:hHGRtK0nNn",
"title": "Membangun Kerajaan...",
"episode_count": 76,
"poster": "https://cdn.../poster-360.jpg"
} ], "meta": { "page": 1 } }Search
Search dramas across all platforms.
curl -s "https://hermes-ckplhi-8080.eu3.sumopod.my.id/v1/search?q=love" -H "Authorization: Bearer <key>"Title detail
Full metadata for one title. The ID format is {platform}:{id} (e.g. dramawave:hHGRtK0nNn).
curl -s https://hermes-ckplhi-8080.eu3.sumopod.my.id/v1/titles/dramawave:hHGRtK0nNn \
-H "Authorization: Bearer <key>"Episodes
Episode list with available resolutions.
curl -s https://hermes-ckplhi-8080.eu3.sumopod.my.id/v1/titles/dramawave:hHGRtK0nNn/episodes \
-H "Authorization: Bearer <key>"
{ "data": [ {
"ep": 1,
"resolutions": [240, 360, 480, 540, 720, 1080],
"thumb": "https://cdn.../0001-360.jpg"
} ] }Play (streaming)
Get a directly playable video URL. The URL is signed and expires (about 5 minutes) — request a fresh one each time the player needs it.
curl -s https://hermes-ckplhi-8080.eu3.sumopod.my.id/v1/titles/dramawave:hHGRtK0nNn/play/76 \
-H "Authorization: Bearer <key>"
{ "data": {
"ep": 76,
"resolution": 1080,
"expires_in": 300,
"url": "https://cdn.../0076/1080.mp4?t=...&s=...",
"renditions": [ { "resolution": 240, "url": "..." }, ... ]
} }
expires_in seconds. Fetch a fresh one each time you play.Range (byte-range). Standard players (hls.js, video.js, ExoPlayer, browser) work out of the box. Send a browser User-Agent — raw clients (curl/scripts without a UA) may get blocked by the CDN.Rate limits
Each key has a play/hour quota (set by the admin). Only the play endpoint is counted. Exceeding it → 429.
{ "success": false, "error": "rate_limit", "message": "watch quota exceeded (1500/hour)" }
Error codes
| Code | Meaning |
|---|---|
401 missing_bearer | Missing Authorization header |
401 invalid_key | Invalid or revoked key |
429 rate_limit | Play/hour quota exceeded |
502 upstream_error | Upstream failure (transient) |