Files
AniKotoAPI/docs/endpoints.md
T
2026-08-14 07:48:15 +05:30

24 KiB

API Endpoints Reference

Base URL: https://anikototvapi.vercel.app/api


⚠️ Streaming Status

Streaming endpoints (/api/servers, /api/stream, /api/stream/resolve) return errors when anikototv.to blocks AJAX requests from server-side IPs.

What Works What's Blocked
Home, spotlight, trending /api/servers — server list
Search, suggestions, filter /api/stream — embed URLs
Info, episodes, schedule /api/stream/resolve — m3u8/mp4
Top 10, most popular, new release /api/mapper-servers — gogoanime servers
AZ list, random, genre list All AJAX-dependent endpoints
All HTML-scraped endpoints

To fix streaming, set one of these environment variables:

# Option 1: ScraperAPI (requires premium plan — $49/month)
SCRAPER_API_KEY=your_scraperapi_key

# Option 2: FlareSolverr (self-hosted, unlimited)
FLARESOLVERR_URL=http://your-flaresolverr-host:8191

Pagination

Most list endpoints return a totalPages field for pagination:

{
  "success": true,
  "results": {
    "totalPages": 296,
    "data": [...]
  }
}

Use the page query parameter to navigate: ?page=2

Only /api/filter returns the full pagination object:

{
  "results": {
    "totalPages": 1,
    "data": [],
    "pagination": {
      "currentPage": 1,
      "totalPages": 1,
      "totalItems": 0,
      "itemsPerPage": 30,
      "hasNext": false,
      "hasPrev": false
    }
  }
}

Endpoints with totalPages pagination: /api/search, /api/most-popular, /api/new-release, /api/newly-added, /api/latest-updated, /api/az-list/:letter, /api/filter, /api/genre/:name, /api/type/:name, /api/status/:name

Endpoints with flat arrays (no pagination): /api/spotlight, /api/trending, /api/top-ten, /api/suggestions, /api/recently-updated, /api/completed, /api/upcoming, /api/top-rankings, /api/mirrors, /api/schedule


GET /

Returns homepage data: spotlight anime, trending, top-airing, and genres.

Response:

{
  "success": true,
  "results": {
    "spotlights": [
      {
        "slug": "wistoria-wand-and-sword-season-2-dua04",
        "poster": "https://cdn.anipixcdn.co/background/101f58336250ee0d_1779363645.webp",
        "title": "Wistoria: Wand and Sword Season 2",
        "japaneseTitle": "Tsue to Tsurugi no Wistoria Season 2",
        "description": "",
        "rating": "PG-13",
        "quality": "HD"
      }
    ],
    "trending": [
      {
        "slug": "witch-hat-atelier-ikmut/ep-11",
        "poster": "https://cdn.anipixcdn.co/thumbnail/0412057393e8a45b3ba8b16874b6034d.jpg",
        "title": "Witch Hat Atelier",
        "japaneseTitle": "Tongari Boushi no Atelier",
        "sub": 11,
        "dub": 11,
        "total": 13,
        "type": "TV"
      }
    ],
    "topAiring": [
      {
        "slug": "wistoria-wand-and-sword-season-2-dua04",
        "poster": "https://cdn.anipixcdn.co/thumbnail/4739d8dbd05dddb73604f6240b83ea68.jpg",
        "title": "Wistoria: Wand and Sword Season 2",
        "sub": 9,
        "dub": 7,
        "type": ""
      }
    ],
    "genres": ["Action", "Adventure", "Cars", "Comedy", "Dementia", "Demons", "Drama", "Ecchi", "Fantasy", "Game", "Harem", "Historical", "Horror", "Isekai", "Josei", "Kids", "Magic", "Martial Arts", "Mecha", "Military", "Music", "Mystery", "Parody", "Police", "Psychological", "Romance", "Samurai", "School", "Sci-Fi", "Seinen", "Shoujo", "Shounen", "Slice of Life", "Space", "Sports", "Super Power", "Supernatural", "Thriller", "Vampire"]
  }
}

Search for anime by keyword.

Param Type Required Description
keyword string Yes Search query

Request:

curl "https://anikototvapi.vercel.app/api/search?keyword=naruto"

Response:

{
  "success": true,
  "results": {
    "totalPages": 1,
    "data": [
      {
        "slug": "road-of-naruto-ggjw8/ep-1",
        "animeId": "7174",
        "poster": "https://cdn.anipixcdn.co/thumbnail/abfd676ad3a01f1e8860fecff9f5b8e0.jpg",
        "title": "Road of Naruto",
        "japaneseTitle": "Road of Naruto",
        "sub": 1,
        "dub": 0,
        "total": 0,
        "type": "ONA",
        "rating": "8.55",
        "genres": ["Action", "Fantasy", "Shounen"]
      }
    ]
  }
}

GET /info

Get detailed info about an anime.

Param Type Required Description
id string Yes Anime slug with random hash (e.g., naruto-shippuuden-movie-6-road-to-ninja-w2wqq)

Important: Slugs now include random hashes (e.g., one-piece-odmau). Get valid slugs from /search or /most-popular results.

Request:

curl "https://anikototvapi.vercel.app/api/info?id=naruto-shippuuden-movie-6-road-to-ninja-w2wqq"

Response:

{
  "success": true,
  "results": {
    "slug": "naruto-shippuuden-movie-6-road-to-ninja-w2wqq",
    "animeId": 786,
    "title": "Naruto: Shippuuden Movie 6: Road to Ninja",
    "japaneseTitle": "Naruto: Shippuuden Movie 6 - Road to Ninja",
    "altNames": "Naruto: Shippuuden Movie 6 - Road to Ninja;Naruto Movie 9",
    "poster": "https://cdn.anipixcdn.co/thumbnail/43dd49b4fdb9bede653e94468ff8df1e.jpg",
    "backgroundImage": "'",
    "synopsis": "Returning home to Konohagakure, the young ninja celebrate defeating a group of supposed Akatsuki...",
    "type": "Movie",
    "premiered": "Summer 2012",
    "aired": "Jul 28, 2012",
    "status": "Finished Airing",
    "malScore": "7.84",
    "duration": "1 hr 39 min",
    "episodes": "1",
    "studios": ["Pierrot"],
    "producers": ["TV Tokyo", "Shueisha"],
    "genres": ["Action", "Comedy", "Supernatural"],
    "rating": "PG-13",
    "reviewCount": "0"
  }
}

GET /episodes

Get episode list for an anime.

Param Type Required Description
id string Yes Anime slug or animeId

Request:

curl "https://anikototvapi.vercel.app/api/episodes/958"

Response:

{
  "success": true,
  "results": {
    "animeId": 958,
    "slug": "958",
    "totalEpisodes": 220,
    "episodes": [
      {
        "id": "16638",
        "episode_no": 1,
        "slug": "1",
        "title": "",
        "active": true,
        "href": "#",
        "server_ids": "dXNCT3hNQzk3THhSTW8ySnM5...",
        "timestamp": "1729197616",
        "mal_id": "20"
      }
    ]
  }
}

Important: The server_ids field is needed to fetch servers. Pass it to the /servers endpoint.


GET /servers

Get available servers for an episode.

Param Type Required Description
ids string Yes server_ids from /episodes response

Request:

curl "https://anikototvapi.vercel.app/api/servers?ids=SlNVT25JaFlCMnZOeXZ2aG5takIx..."

Response:

{
  "success": true,
  "results": [
    {
      "type": "sub",
      "ep_id": "110289",
      "link_id": "MTF1dkFtaW9BRTZPbzJJRElFZUZrOWdjeldjOERLaWNMMXFNbVB3WUJqOHZGS2FSWVgvbVJraVpIV1dQRjRoN01hOFUvYmxsWXFYNGtiR0h5OWdGQWc9PQ",
      "cmid": "animixplay-fqs",
      "sv_id": "1",
      "ep_id": "110289",
      "name": "HD-1"
    },
    {
      "type": "sub",
      "ep_id": "110289",
      "link_id": "MTF1dkFtaW9BRTZPbzJJRElFZUZrOWdjeldjOERLaWNMMXFNbVB3WUJqOEZ4cFNpMDdQbnV1S3dNdklpRkhWbzRsVmgxSGx4YWx3LytPcnZXU0RCVHc9PQ",
      "cmid": "animixplay-fqs",
      "sv_id": "2",
      "ep_id": "110289",
      "name": "Vidstream-2"
    }
  ]
}

Note: There are usually 3 servers: HD-1 (sub), Vidstream-2 (sub), VidCloud-1 (sub).


GET /stream

Get streaming URL for a server.

Param Type Required Description
id string Yes link_id from /servers response

Request:

curl "https://anikototvapi.vercel.app/api/stream?id=MTF1dkFtaW9BRTZPbzJJRElFZUZrOWdjeldjOERLaWNMMXFNbVB3WUJqOHZGS2FSWVgvbVJraVpIV1dQRjRoN01hOFUvYmxsWXFYNGtiR0h5OWdGQWc9PQ"

Response:

{
  "success": true,
  "results": {
    "linkId": "MTF1dkFtaW9BRTZPbzJJRElFZUZrOWdjeldjOERLaWNMMXFNbVB3WUJqOHZGS2FSWVgvbVJraVpIV1dQRjRoN01hOFUvYmxsWXFYNGtiR0h5OWdGQWc9PQ",
    "url": "https://megaplay.buzz/stream/s-5/94736/sub",
    "skipData": {
      "intro": [0, 0],
      "outro": [0, 0]
    }
  }
}

Note: The url is a direct stream link. Use it with a video player like HLS.js or Plyr.


GET /suggestions

Get anime suggestions based on keyword.

Param Type Required Description
keyword string Yes Partial title for suggestions

Request:

curl "https://anikototvapi.vercel.app/api/suggestions?keyword=naruto"

Response:

{
  "success": true,
  "results": [
    {
      "slug": "road-of-naruto-ggjw8/ep-1",
      "poster": "https://cdn.anipixcdn.co/thumbnail/abfd676ad3a01f1e8860fecff9f5b8e0.jpg",
      "title": "Road of Naruto",
      "japaneseTitle": "Road of Naruto"
    }
  ]
}

GET /spotlight

Get spotlight (featured) anime.

curl "https://anikototvapi.vercel.app/api/spotlight"

Returns array of spotlight anime with posters, descriptions, ratings, and quality info.


Get currently trending anime.

curl "https://anikototvapi.vercel.app/api/trending"

Response:

{
  "success": true,
  "results": [
    {
      "slug": "witch-hat-atelier-ikmut/ep-11",
      "poster": "https://cdn.anipixcdn.co/thumbnail/0412057393e8a45b3ba8b16874b6034d.jpg",
      "title": "Witch Hat Atelier",
      "japaneseTitle": "Tongari Boushi no Atelier",
      "sub": 11,
      "dub": 11,
      "total": 13,
      "type": "TV"
    }
  ]
}

GET /top-ten

Get top 10 anime for today, this week, and this month.

curl "https://anikototvapi.vercel.app/api/top-ten"

Returns { today: [...], week: [...], month: [...] }.


GET /schedule

Get anime schedule.

curl "https://anikototvapi.vercel.app/api/schedule"

Returns array of scheduled anime with air times.


GET /random

Get a random anime.

curl "https://anikototvapi.vercel.app/api/random"

Response:

{
  "success": true,
  "results": {
    "title": "Massara",
    "type": "ONA",
    "genres": ["Slice of Life", "Music"]
  }
}

GET /new-release

Get latest released episodes.

curl "https://anikototvapi.vercel.app/api/new-release"

Returns paginated list of recently released anime episodes.


Get most popular anime.

curl "https://anikototvapi.vercel.app/api/most-popular"

Returns paginated list with totalPages and data array.


GET /genre/:name

Get anime by genre.

Param Type Required Description
name string Yes Genre name (e.g., action, romance)
page number No Page number (default: 1)
curl "https://anikototvapi.vercel.app/api/genre/action"

Returns paginated anime list filtered by genre.


GET /type/:name

Get anime by type (TV, OVA, Movie, ONA, etc).

curl "https://anikototvapi.vercel.app/api/type/tv"

GET /status/:name

Get anime by status (airing, completed, upcoming).

curl "https://anikototvapi.vercel.app/api/status/completed"

GET /filter

Filter anime with multiple parameters.

Param Type Required Description
keyword string No Search keyword (pass empty string if not searching)
genre[] number No Genre IDs
type string No TV, OVA, Movie, etc.
status string No aired, ongoing, upcoming
sort string No Most watched, score, name, etc.
page number No Page number

Important: The keyword parameter must be present (even empty) or the site returns a 500 error.

curl "https://anikototvapi.vercel.app/api/filter?keyword=&genre[]=1"

Returns filtered and paginated anime list.


GET /watch

Get full watch page data including servers, trending, and recommended anime.

Param Type Required Description
slug string Yes Anime slug (e.g., one-piece-100)
ep number Yes Episode number
curl "https://anikototvapi.vercel.app/api/watch?slug=one-piece-100&ep=1"

Returns episode data with server list, trending sidebar, and recommended anime.


GET /search/suggest

Get search autocomplete suggestions.

Param Type Required Description
keyword string Yes Search keyword
curl "https://anikototvapi.vercel.app/api/search/suggest?keyword=naruto"

Returns array of suggestion objects with title, ID, and image.


GET /episodes-ajax/:id

Get AJAX-loaded episode list for an anime.

Param Type Required Description
id string Yes Anime ID or slug
curl "https://anikototvapi.vercel.app/api/episodes-ajax/one-piece-100"

Returns episode list with filters, ranges, and server IDs.


GET /mapper-servers

Get cross-server mapping for gogoanime/anivibe servers.

Param Type Required Description
malId number Yes MyAnimeList ID
slug string Yes Anime slug
timestamp number Yes Timestamp
curl "https://anikototvapi.vercel.app/api/mapper-servers?malId=21&slug=one-piece-100&timestamp=1234567890"

Returns mapped server URLs for gogoanime/anivibe.


GET /newly-added

Get newly added anime series.

Param Type Required Description
page number No Page number (default: 1)
curl "https://anikototvapi.vercel.app/api/newly-added"

Returns paginated list of newly added anime.


Get trending sidebar widget data.

curl "https://anikototvapi.vercel.app/api/trending-sidebar"

Returns trending anime for sidebar display.


GET /seasons/:id

Get all seasons for an anime (main season, OVAs, movies, specials).

Param Type Required Description
id number Yes Anime numeric ID
curl "https://anikototvapi.vercel.app/api/seasons/1642"

Returns all seasons including OVAs, movies, and specials for the anime.


GET /watch-order/:id

Get recommended watch order for an anime franchise.

Param Type Required Description
id number Yes Anime numeric ID
curl "https://anikototvapi.vercel.app/api/watch-order/1642"

Returns recommended watch order sequence with relationship types.


GET /latest-updated

Get recently updated anime sorted by update time.

Param Type Required Description
page number No Page number (default: 1)
curl "https://anikototvapi.vercel.app/api/latest-updated"

Returns paginated list of recently updated anime.


GET /download

Get download links for an anime episode.

Param Type Required Description
slug string Yes Anime slug
ep number Yes Episode number
curl "https://anikototvapi.vercel.app/api/download?slug=one-piece-odmau&ep=1165"

Returns decoded download links for the specified episode.


GET /az-list/:letter

Get anime alphabetically by letter.

Param Type Required Description
letter string Yes Letter (a-z, or # for numbers)
page number No Page number (default: 1)
curl "https://anikototvapi.vercel.app/api/az-list/a"

Returns paginated list of anime starting with the specified letter.


GET /upcoming

Get upcoming anime sorted by air date.

Param Type Required Description
page number No Page number (default: 1)
curl "https://anikototvapi.vercel.app/api/upcoming"

Returns paginated list of upcoming anime with sub/dub counts, type, and rating.


GET /top-rankings

Get top-ranked anime with sort options.

Param Type Required Description
sort string No Sort mode: day (default), week, or month
page number No Page number (default: 1)
curl "https://anikototvapi.vercel.app/api/top-rankings?sort=week"

Response:

{
  "success": true,
  "results": [
    {
      "rank": 1,
      "slug": "demon-slayer-kimetsu-no-yaiba-infinity-castle-4tmun",
      "poster": "https://cdn.anipixcdn.co/thumbnail/...",
      "title": "Demon Slayer: Kimetsu no Yaiba Infinity Castle",
      "japaneseTitle": "Kimetsu no Yaiba Movie: Mugen Jou-hen",
      "sub": 1,
      "dub": 1,
      "type": "Movie"
    }
  ]
}

GET /recently-updated

Get recently updated anime. Supports tab filtering.

Param Type Required Description
tab string No Filter: sub, dub, all (default: all)
page number No Page number (default: 1)
curl "https://anikototvapi.vercel.app/api/recently-updated"

Returns paginated list from #recent-update section with client-side tab filtering.


GET /completed

Get completed anime sorted by score.

Param Type Required Description
page number No Page number (default: 1)
curl "https://anikototvapi.vercel.app/api/completed"

Returns flat array of finished anime.

Note: The type field in completed results contains the air date (e.g., "2016-05-14"), not the anime type (TV/Movie/etc).


GET /stream/resolve

Resolve an embed URL to actual video URL (m3u8/mp4).

Param Type Required Description
id string Yes link_id from /servers response
slug string No Anime slug (for session cookies)
curl "https://anikototvapi.vercel.app/api/stream/resolve?id=MTF1dkFtaW9BRTZPbzJJRElFZUZr..."

Returns resolved URL, type (hls/mp4), server name, and subtitle URLs.


GET /stream/qualities

Parse M3U8 playlist for available quality options.

Param Type Required Description
url string Yes M3U8 playlist URL
curl "https://anikototvapi.vercel.app/api/stream/qualities?url=https://example.com/playlist.m3u8"

Returns array of quality objects with url, quality label, resolution, bandwidth, and codec.


GET /stream/proxy

M3U8 playlist proxy — rewrites relative URLs to proxy endpoints for CORS-free playback.

Param Type Required Description
url string Yes M3U8 playlist URL
curl "https://anikototvapi.vercel.app/api/stream/proxy?url=https://example.com/playlist.m3u8"

Returns rewritten M3U8 content with all .m3u8 and .ts URLs pointing to proxy endpoints.


GET /stream/ts-proxy

TS video segment proxy — serves .ts segments with proper Content-Type and CORS headers.

Param Type Required Description
url string Yes .ts segment URL
curl "https://anikototvapi.vercel.app/api/stream/ts-proxy?url=https://example.com/segment.ts"

Returns binary video segment with Content-Type: video/mp2t and Access-Control-Allow-Origin: *.


System Endpoints

GET /health

Health check endpoint. No parameters required.

curl "https://anikototvapi.vercel.app/api/health"

Response:

{
  "success": true,
  "results": {
    "status": "healthy",
    "version": "2.4.0",
    "uptime": "0h 1m 21s",
    "uptimeSeconds": 81,
    "timestamp": "2026-07-30T02:20:46.153Z",
    "node": "v26.4.0",
    "memory": {
      "used": "99MB",
      "total": "150MB"
    }
  }
}

GET /stats

API statistics endpoint. No parameters required.

curl "https://anikototvapi.vercel.app/api/stats"

Response:

{
  "success": true,
  "results": {
    "uptime": "81s",
    "requests": {
      "total": 37,
      "errors": 9,
      "successRate": "75.7%"
    },
    "cache": {
      "type": "in-memory",
      "ttl": "5 minutes",
      "description": "Map-based cache with TTL expiration"
    },
    "endpoints": 38,
    "timestamp": "2026-07-30T02:20:46.205Z"
  }
}

GET /cache/stats

Cache statistics endpoint. No parameters required.

curl "https://anikototvapi.vercel.app/api/cache/stats"

Response:

{
  "success": true,
  "results": {
    "hits": 0,
    "misses": 28,
    "sets": 26,
    "deletes": 0,
    "size": 26,
    "hitRate": "0.00%"
  }
}

GET /mirrors

Mirror status endpoint. No parameters required.

curl "https://anikototvapi.vercel.app/api/mirrors"

Response:

{
  "success": true,
  "results": [
    {
      "name": "Primary",
      "url": "https://anikototv.to",
      "priority": 1,
      "status": "online",
      "latency": "6115ms",
      "isCurrent": true
    },
    {
      "name": "Regional CZ",
      "url": "https://anikoto.cz",
      "priority": 2,
      "status": "online",
      "latency": "672ms",
      "isCurrent": false
    }
  ]
}

POST /mirrors/reset

Reset mirror cache. No parameters required.

curl -X POST "https://anikototvapi.vercel.app/api/mirrors/reset"

Response:

{
  "success": true,
  "message": "Mirror cache reset"
}

GET /openapi

OpenAPI 3.0.3 specification. No parameters required.

curl "https://anikototvapi.vercel.app/api/openapi"

Returns the full OpenAPI spec document with all endpoint definitions, tags, and server information.


Response Patterns

Pattern Format Endpoints
Flat array results: [...] /spotlight, /trending, /top-ten, /suggestions, /recently-updated, /completed, /upcoming, /top-rankings, /mirrors, /schedule
Paginated data results: { totalPages, data: [...] } /search, /most-popular, /new-release, /newly-added, /latest-updated, /genre/:name, /type/:name, /status/:name, /az-list/:letter
Full pagination results: { totalPages, data: [...], pagination: {...} } /filter only
Three-period results: { today/week/month: [...] } or { day/week/month: [...] } /top-ten, /trending-sidebar
Single object results: {...} /home, /info, /episodes, /episodes-ajax, /random, /health, /stats, /cache/stats, /stream-qualities

Common Workflows

Streaming Workflow

1. GET /episodes/{animeId}     → Get episode list with server_ids
2. GET /servers?ids={ids}      → Get available servers with link_ids
3. GET /stream?id={link_id}    → Get embed URL + skip data
4. GET /stream/resolve?id={link_id}  → Get actual m3u8/mp4 URL
5. GET /stream/qualities?url={m3u8}  → Get available qualities
6. GET /stream/proxy?url={m3u8}      → Get CORS-free proxied playlist

Discovery Workflow

1. GET /              → Homepage: spotlights, trending, genres
2. GET /search?q=     → Search by keyword
3. GET /info?id=      → Get anime details
4. GET /episodes/     → Get episode list
5. GET /seasons/      → Get all seasons
6. GET /watch-order/  → Get watch order for franchises

Filter & Browse Workflow

1. GET /genre/{name}      → Browse by genre
2. GET /type/{name}       → Browse by type (TV, Movie, OVA)
3. GET /status/{name}     → Browse by status (airing, completed)
4. GET /filter?...        → Advanced multi-parameter filter
5. GET /az-list/{letter}  → Browse alphabetically
6. GET /top-rankings?sort=day  → Top ranked anime

// ══════ END: endpoints.md ══════