Files
AniKotoAPI/docs/endpoints.md
T
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 100b9f9414 v1.9.0: Full diagnostic sweep - 42 issues fixed
Critical fixes (7):
- Added global Express error handler (returns JSON instead of HTML)
- Removed caching from random endpoint (defeated purpose)
- Renamed share.jpg to share.png (MIME type mismatch)
- Fixed OG image dimensions (630 → 601)
- Fixed manifest.json icon sizes (192x192 → 512x512)
- Fixed implicit global event variable in console
- Added 9 missing endpoints to docs/endpoints.md

High fixes (12):
- Imported version from package.json (no hardcoded drift)
- Added dynamic endpoint count in stats
- Added input sanitization for mapper API (SSRF prevention)
- Added homepage caching (reduced 5 duplicate HTTP requests)
- Added rate limiting (100 requests/minute per IP)
- Added rel="noopener noreferrer" to all target="_blank" links
- Fixed trailing slash inconsistency in console
- Added noindex meta to 404.html
- Fixed docs/architecture.md controller filenames and dependency versions
- Fixed README.md dependency versions
- Added 12 missing endpoint tests

Medium fixes (22):
- Added escapeHtml helper for error messages
- Consistent favicon across all pages
- Added meta descriptions to privacy.html and tos.html
- Added OG/Twitter meta tags to privacy.html and tos.html
- Added aria-label to playground inputs
- Added aria-hidden to decorative SVGs
- Synced Twitter description with OG description
- Fixed robots.txt to disallow /api
- Added PWA fields to manifest.json
- Removed 5 unused imports
- Removed unused cookie-parser dependency
- Fixed inconsistent error handling in extractors
- Fixed resolvedSlug returning numeric ID
- Added /watch endpoint to streaming docs
- Improved test assertions and status code validation
- Deleted orphaned og-image.svg and logo.png

Low fixes (11):
- Removed redundant try/catch from extractPages
- Added max size eviction to cache
- Added cache key sorting in filter controller
- Added author meta tag
- Fixed favicon.svg font

Version bumped to 1.9.0
2026-06-09 06:00:37 +05:30

13 KiB

API Endpoints Reference

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


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 (e.g., road-of-naruto-ggjw8)

Request:

curl "https://anikototvapi.vercel.app/api/info?id=road-of-naruto-ggjw8"

Response:

{
  "success": true,
  "results": {
    "title": "Road of Naruto",
    "type": "ONA",
    "status": "Finished Airing",
    "totalEpisodes": null,
    "synopsis": "In celebration of 20 years of Naruto, Studio Pierrot posted an anniversary PV on their YouTube channel...",
    "malId": "53236",
    "genres": ["Action", "Fantasy", "Shounen"]
  }
}

GET /episodes

Get episode list for an anime.

Param Type Required Description
id string Yes Anime slug

Request:

curl "https://anikototvapi.vercel.app/api/episodes/road-of-naruto-ggjw8"

Response:

{
  "success": true,
  "results": {
    "animeId": "7174",
    "totalEpisodes": 1,
    "episodes": [
      {
        "id": "110289",
        "episode_no": 1,
        "slug": "1",
        "title": "",
        "active": true,
        "href": "#",
        "server_ids": "SlNVT25JaFlCMnZOeXZ2aG5takIxL2EybGl4TzJoNE1pN3JXdFNlODVocWtTckt1SFR0YUxrNzNhanQ2MEJoVG9UUEZNeWJOMm1uUThpYjNxejhhUEZWMitnNFFtTUNMYjBTc1FJZjZNNFZPNm5LMlVuTnpOU25ScUI1dHVGczM0UzluZ2xITG5qbExabnBDdGphY0VRPT0",
        "timestamp": "1729249503",
        "mal_id": "53236"
      }
    ]
  }
}

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 season information for an anime.

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

Returns season data including related seasons.


GET /watch-order/:id

Get recommended watch order for an anime.

Param Type Required Description
id string Yes Anime slug
curl "https://anikototvapi.vercel.app/api/watch-order/one-piece-100"

Returns recommended watch order sequence.


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.