Vercel-deployed TypeScript port of the AnimeKai scraper API.
It exposes catalog discovery, anime metadata, episode listing, stream resolution, and generated OpenAPI docs through a single Vercel Function routed from api/router.ts.
- Base URL:
https://anime-kai-api-js.vercel.app - Swagger UI:
https://anime-kai-api-js.vercel.app/docs - ReDoc:
https://anime-kai-api-js.vercel.app/redoc - OpenAPI JSON:
https://anime-kai-api-js.vercel.app/openapi.json - Health check:
https://anime-kai-api-js.vercel.app/health
- Vercel Function API with clean rewrites
- Swagger UI and ReDoc powered by generated OpenAPI
- Search, filters, details, episodes, and stream resolution endpoints
- Configurable upstream AnimeKai mirror and scraping defaults
- TypeScript implementation using
fetchandcheerio
GET /
Returns basic service metadata and docs links.
GET /health
Returns service status and the upstream AnimeKai base URL currently in use.
GET /docs
Interactive Swagger UI.
GET /redoc
ReDoc view of the same OpenAPI schema.
GET /openapi.json
Raw OpenAPI 3.1 document.
GET /filters
Returns valid filter values for:
sortgenresstatusestypesseasonslanguagescountriesratingsyears
GET /catalog/popular
Query params:
pagedefault1base_urloptional upstream overrideinclude_adultdefault from envtitle_languageone ofen,romaji
GET /catalog/latest
Query params:
pagedefault1base_urloptional upstream overrideinclude_adultdefault from envtitle_languageone ofen,romaji
GET /catalog/search
Query params:
querysearch textpagedefault1sortone ofauto,most_relevance,updated_date,release_date,end_date,trending,title_az,avg_score,mal_score,total_views,total_bookmarks,total_episodes- repeated params:
genres,exclude_genres,statuses,types,seasons,languages,countries,ratings,years base_urloptional upstream overrideinclude_adultdefault from envtitle_languageone ofen,romaji
Repeated params are passed multiple times, for example:
/catalog/search?query=bleach&genres=action&genres=super-power
GET /anime/details
Required query params:
anime_path
Optional query params:
base_urltitle_languageone ofen,romaji
GET /anime/episodes
Required query params:
anime_path
Optional query params:
base_url
GET /videos
Required query params:
watch_pathepisode_token
Optional query params:
base_url- repeated
enabled_typesvalues:sub,dub,softsub preferred_qualitydefault from env or1080preferred_type_labeldefault from env orSubtitledpreferred_serverdefault from env orServer 1
curl "https://anime-kai-api-js.vercel.app/"curl "https://anime-kai-api-js.vercel.app/filters"curl "https://anime-kai-api-js.vercel.app/catalog/popular?page=1"curl "https://anime-kai-api-js.vercel.app/catalog/search?query=one%20piece&sort=trending&genres=action"curl "https://anime-kai-api-js.vercel.app/anime/details?anime_path=/watch/one-piece"curl "https://anime-kai-api-js.vercel.app/anime/episodes?anime_path=/watch/one-piece"curl "https://anime-kai-api-js.vercel.app/videos?watch_path=/watch/one-piece/episode-1&episode_token=YOUR_TOKEN"Common top-level response objects include:
- service info with
name,version,docs_url,redoc_url - catalog/search results with
page,has_next_page,source_url,items - anime details with
title,alt_title,description,genres,status - episode lists with
number,title,token,watch_path - video results with
total,preferred_quality,preferred_type_label,preferred_server,items
Use /openapi.json, /docs, or /redoc for the exact schemas.
Errors are returned as JSON:
{
"detail": "anime_path is required."
}Typical status codes:
200successful request404unknown route422invalid or missing input502upstream AnimeKai or network failure500unknown internal failure
From this repository root:
npm install
npm run typecheck
npm testIf you want a local Vercel-style runtime:
npx vercel devANIMEKAI_BASE_URLANIMEKAI_INCLUDE_ADULTANIMEKAI_TITLE_LANGUAGEANIMEKAI_ENABLED_TYPESANIMEKAI_PREFERRED_QUALITYANIMEKAI_PREFERRED_TYPEANIMEKAI_PREFERRED_SERVERANIMEKAI_USER_AGENTANIMEKAI_TIMEOUT_SECONDS
Defaults currently include:
- title language:
en - enabled types:
sub,dub,softsub - preferred quality:
1080 - preferred type label:
Subtitled - preferred server:
Server 1 - timeout:
20seconds
This repo deploys as Vercel Functions from api/router.ts.
Recommended project settings:
- Root Directory:
. - Framework Preset:
Other - Build Command:
npm run build - Output Directory: leave empty
Deploy commands:
vercelvercel --prod