Short Drama API avatar

Short Drama API

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Short Drama API

Short Drama API

Drama & short-drama catalogs from the Movies API Gateway. 40 providers (DramaWave, ReelShort, NetShort, DramaBox, ShortMax, FlexTV, iDrama, StardustTV2, CubeTV, MoboReel, GoodShort.....), one interface, cursor-paginated. Built for streaming sites, aggregators, and SEO pipelines.

Pricing

from $2.00 / 1,000 results

Rating

5.0

(2)

Developer

Ezvid.Net

Ezvid.Net

Maintained by Community

Actor stats

1

Bookmarked

130

Total users

20

Monthly active users

7 days ago

Last modified

Share

Short Drama API — Free Actor, Your Ezvid API Key

Run Ezvid content requests as an Apify Actor and export results to a dataset. Version 1.0.0 uses a bundled OpenAPI snapshot from 2026-10-10 covering 31 providers and 285 GET endpoints. Each run selects one provider and resource.

Register with Ezvid and use your own API key. The intended Store model is a free Actor with no developer fee, configured as pay per usage in Apify Console. Apify compute/storage/network usage and Ezvid API access/quota are separate and depend on your accounts. The code contains no custom charging calls. Deploying it does not change an existing Actor's pricing; follow DEPLOY.md.

Get started

  1. Register with Ezvid and obtain your own API key. Start with the Ezvid API documentation for API access information. If key issuance is not available there, request access from Ezvid's operator. This Actor does not create Ezvid accounts or issue keys.
  2. Enter that key in the required Your registered Ezvid API key input field.
  3. Choose a provider and action/resource, then run the Actor.

Start with a small languages request to verify your key:

{
"apiKey": "YOUR_REGISTERED_EZVID_KEY",
"provider": "dramabox",
"action": "languages"
}

Replace the placeholder with your key in the Apify input form. Open the run's Results output for dataset records and Run summary for the OUTPUT record. Use browse, search, or another discovery resource to obtain IDs before requesting content details or episodes.

The apiKey field uses Apify's encrypted secret input. Every API request sends it only in X-API-Key. Missing/blank keys fail before any HTTP request; Ezvid validates the supplied key and its permissions. There is no embedded key and no EZVID_API_KEY environment fallback. Authentication errors do not include upstream bodies or keys in logs. Local INPUT files contain plaintext secrets: keep them in the ignored storage/ directory.

Supported resources

See RESOURCES.md for the complete generated reference, including all required path arguments and native query parameters.

Providers: bilitv, bstation, cubetv, dotdrama, dramabite, dramabox, dramanova, dramawave, flareflow, flextv, flickreels, freereels, golddrama, goodshort, happyshort, idrama, kalostv, moboreels, netshort, pinedrama, rapidtv, raptdrama, reelshort, serealplus, shortmax, shortswave, starshort, stardusttv2, storyreel, topdrama, vibeshort.

Coverage includes languages, lists, discovery, search, categories, modules, channels/subchannels, details, episodes, playback sources, subtitles and the other resources actually exposed by each provider. Actions differ by provider. The service routes /, /health, /openapi.json are not content resources.

Use provider + resource to address any endpoint. Supply the exact relative path template, such as episodes/{id}/{episodeId}/source, and named arguments in pathParams. A full /api/provider/... template is also accepted, provided it matches provider. Arbitrary URLs are not accepted.

For convenience, action supports exact resource names and these familiar aliases:

  • home: DramaWave tabs, DramaBox foryou, StarShort content/hot; otherwise home.
  • detail / episodes: uses each provider's route, including DramaBox's bookId query endpoints and StarShort's show routes.
  • languages / langs: resolves to the documented language endpoint when available.
  • source: resolves to a provider's unique episode source endpoint when available.
  • Other compatibility aliases include DramaWave categories/hot, FlexTV hot/loadmore, iDrama categories/hot, ShortMax ranking, FreeReels categories/hot, StarShort hot/latest/trending/recommended/watch, DramaBite categories/recommended, and GoldDrama latest.

Unsupported or ambiguous actions fail with a request to select an exact resource. DramaBox vip/categories and CubeTV categories are no longer advertised: those paths are absent from the current Ezvid contract. FlickReels has no detail route.

Input

FieldPurpose
apiKeyRequired, your own registered Ezvid key; no default/shared key.
providerRequired, one of the 31 providers above.
actionConvenience action; defaults to home.
resourceExact resource template; overrides action.
pathParamsObject containing native path arguments; overrides id/ep.
queryParamsObject containing native query arguments; overrides shortcuts. Unknown keys fail validation.
idShortcut for the first path parameter, or DramaBox bookId.
epShortcut for the episode/chapter parameter. May be an opaque ID, not a sequence number.
querySearch text, mapped to q, query, or keyword.
languageMapped to language, lang, or locale; omit for upstream default.
categorySent when the endpoint documents category.
limit1–100, default 20; sent only if documented and may be capped upstream.
pageStarting numeric page, mapped to page or p where supported.
cursorStarting opaque cursor for supported endpoints.
maxPages1–50, default 1; maximum page fetches for a paginated resource. Retries are additional HTTP attempts.
paginationauto (default), none, cursor, or page.
outputModerecords (default) or response.

Optional shortcuts are sent only where supported. Use queryParams for strict parameter checking and provider-specific options such as tagId, floorId, contentType, rankTabId and classify.

Search DramaBox

{
"apiKey": "YOUR_REGISTERED_EZVID_KEY",
"provider": "dramabox",
"action": "search",
"query": "love",
"language": "en"
}

Fetch DramaBox episodes

{
"apiKey": "YOUR_REGISTERED_EZVID_KEY",
"provider": "dramabox",
"action": "episodes",
"id": "YOUR_DRAMA_ID"
}

Browse dubbed DramaBox content starting at page 5

{
"apiKey": "YOUR_REGISTERED_EZVID_KEY",
"provider": "dramabox",
"resource": "dubbed",
"language": "en",
"queryParams": { "classify": "terbaru" },
"page": 5,
"maxPages": 3
}

Fetch MoboReels subchannels

{
"apiKey": "YOUR_REGISTERED_EZVID_KEY",
"provider": "moboreels",
"resource": "channels/{channelId}/subchannels",
"pathParams": { "channelId": "YOUR_CHANNEL_ID" }
}

Get an episode source from RapidTV

{
"apiKey": "YOUR_REGISTERED_EZVID_KEY",
"provider": "rapidtv",
"resource": "episodes/{id}/{episodeOrder}/source",
"pathParams": { "id": "YOUR_DRAMA_ID", "episodeOrder": "1" },
"outputMode": "response"
}

StarShort latest, using its native page parameter

{
"apiKey": "YOUR_REGISTERED_EZVID_KEY",
"provider": "starshort",
"action": "latest",
"language": "id",
"page": 2,
"maxPages": 3
}

Pagination and output

Auto pagination uses an explicitly supplied cursor, otherwise the endpoint's page/p, otherwise its cursor. Endpoints without these parameters run once. The Actor stops on empty results, end markers, repeated pages/tokens, missing next cursor, or maxPages. It does not invent cursor values or silently switch to another resource. Dedicated loadmore resources can be selected explicitly.

The default dataset contains records with _meta (provider, resource, page, url, fetchedAt). Records mode unwraps common data/result/payload envelopes and list arrays. Entity/detail objects retain nested episodes; primitive values are wrapped in { "value": ... }.

Home responses containing several collections (for example ReelShort tabs, shelves, featured titles and rankings) remain a single object so none of those sections are discarded. A dataset record is not necessarily one movie.

Provider fields are preserved rather than normalized to a universal movie schema. Ezvid's OpenAPI does not describe response field schemas. For an unfamiliar resource or to preserve all envelope metadata, use outputMode: "response", which stores { "response": <complete JSON>, "_meta": ... } for each nonempty page.

The OUTPUT key-value record contains provider, resource, pagination, outputMode, pagesFetched, recordsPushed, maxPages, stopReason, timestamps, and continuation values (nextCursor/nextPage when maxPages is reached). pagesFetched counts parsed responses, including a final empty or repeated page; it does not count retry attempts. A numeric next page is a candidate if the upstream did not supply an explicit next-page marker. Pass nextCursor as input cursor, or nextPage as input page, to continue with the same resource and filters. A later failure fails the run; previously written dataset records remain, but a success summary is not written.

Requests time out after 60 seconds. Network errors, HTTP 429 and 5xx get up to three retries, with backoff and Retry-After handling capped at 60 seconds. 401/403 and other client errors fail immediately. The Actor returns metadata and playback URLs; it does not download or stream video. Playback URLs may expire.

Verification and provider availability

On 2026-10-10, all 310 automated tests passed on Node.js 22 and the Apify input schema passed CLI validation. Tests cover request construction for all 285 endpoints, authentication requirements, parsing, pagination, retries and the Apify SDK lifecycle with mocked HTTP responses.

Live checks using a registered key covered one home request per provider: 20 of 31 succeeded (one empty response); 11 reported upstream failures. Additional DramaBox checks succeeded for languages, search, browse, detail and episodes; the episode request returned 51 records. These counts describe the test run, not a permanent availability guarantee. All 285 endpoints were checked against the contract, but not all were called live.

See LIVE_CHECKS.md for provider-specific findings. An unavailable home resource does not necessarily mean every resource of that provider is down: DramaBox search and episodes worked while its home request failed. Ezvid can wrap provider errors as HTTP 400; the Actor reports those separately from ordinary request validation errors.

Development

Use Node.js 22+ and, for apify run/deployment, the Apify CLI.

npm ci
npm test
npm run validate:input

Create the local input directory:

$mkdir -p storage/key_value_stores/default

Save one of the input examples above as storage/key_value_stores/default/INPUT.json, replacing the key placeholder locally. Then run npm start (Apify SDK storage) or npm run start:local (Apify CLI). The storage/ directory is ignored by Git.

Local results are written to storage/datasets/default/; the summary is at storage/key_value_stores/default/OUTPUT.json. These paths assume the default local storage configuration. Back up results before starting another local run, because the SDK purges default storage on startup while preserving input.

CommandPurpose
npm startRun src/main.js through the Apify SDK.
npm run start:localRun through the installed Apify CLI.
npm testRun automated tests; no real Ezvid key or API requests required.
npm run validate:inputValidate the input schema using the installed CLI.
npm run generateRegenerate the provider dropdown and resource reference from the bundled snapshot.
npm run sync:resourcesDownload the public OpenAPI snapshot and regenerate the reference.
npm run deployDeploy with apify push; requires Apify login.
npm run sync:resources # download the public contract, refresh schema/reference
npm test
npm run validate:input

Resource changes are reviewed at build time; each Actor run uses the checked-in snapshot. Updating the snapshot does not prove every provider is available: end-to-end verification requires a valid key with access to those resources.

See DEPLOY.md to publish a free/pay-per-usage Actor.

License

MIT.