Animaple

Core API v1.0

Documentation

Welcome to the Animaple Core API. A highly optimized, Unofficial Otakudesu REST API built with Next.js App Router and TypeScript. It utilizes ScraperAPI to effortlessly bypass Cloudflare protections, providing clean JSON responses for your anime streaming applications.

Base URL

https://animaple-core.vercel.app/api
Built by Ofikur R.
© 2026 Animaple Project

Architecture & Limits

This API is designed for speed and reliability using a dual-layer caching strategy:

  • Edge Caching: All endpoints are cached at the Vercel Edge Network. Response times for cached hits are typically under 50ms.
  • Smart Tiered Revalidation: Cache lifetimes are dynamically optimized to conserve upstream quota. Dynamic endpoints (ongoing/schedule) update every 6 hours, semi-static data every 24 hours, and completed series/movies are cached for 7 days.
  • Public Rate Limits: To ensure high availability, public access is securely protected by Upstash Redis. Requests are limited to 30 requests per minute per IP. Rate limit headers are included in every response.

Errors & Status Codes

CodeDescription
200 OKThe request was successful and data is returned.
400 Bad ReqMissing required parameters (e.g., empty slug or keyword).
429 Too Many ReqRate limit exceeded (Max 30 requests/minute per IP).
500 Server ErrUpstream server is unreachable or formatting changed.

Homepage Data

Retrieves the latest ongoing and completed anime updates displayed on the Otakudesu homepage.

HTTP Request

GET/api/home

Interactive Test

Example Response
{
  "data": {
    "ongoing_anime": [
      {
        "title": "Enen no Shouboutai: San no Shou Part 2",
        "slug": "enen-shouboutai-season-3-p2-sub-indo",
        "poster": "https://otakudesu.best/.../152472.jpg",
        "current_episode": "Episode 8",
        "release_day": "Sabtu",
        "newest_release_date": "28 Feb",
        "otakudesu_url": "https://otakudesu.best/..."
      }
    ],
    "complete_anime": [
      {
        "title": "Towa no Yuugure",
        "slug": "towa-yuugure-sub-indo",
        "episode_count": "12",
        "rating": "6.52"
      }
    ]
  }
}

Ongoing Anime

Get paginated list of currently ongoing anime.

HTTP Request

GET/api/ongoing-anime/{page}

Parameters

  • pagenumberRequired

    The page number to fetch (e.g., 1).

Interactive Test

To protect server quota, custom inputs are disabled in this demo. Live testing is restricted to predefined cached values.

Example Response
{
  "data": {
    "paginationData": {
      "current_page": 1,
      "last_visible_page": 5,
      "has_next_page": true,
      "next_page": 2,
      "has_previous_page": false,
      "previous_page": null
    },
    "ongoingAnimeData": [
      {
        "title": "Enen no Shouboutai: San no Shou Part 2",
        "slug": "enen-shouboutai-season-3-p2-sub-indo",
        "poster": "https://otakudesu.best/.../152472.jpg",
        "current_episode": "Episode 8",
        "release_day": "Sabtu",
        "newest_release_date": "28 Feb",
        "otakudesu_url": "https://otakudesu.best/..."
      }
    ]
  }
}

Complete Anime

Get paginated list of completed anime.

HTTP Request

GET/api/complete-anime/{page}

Parameters

  • pagenumberRequired

    The page number to fetch (e.g., 1).

Interactive Test

To protect server quota, custom inputs are disabled in this demo. Live testing is restricted to predefined cached values.

Example Response
{
  "data": {
    "paginationData": {
      "current_page": 1,
      "last_visible_page": 154,
      "has_next_page": true,
      "next_page": 2,
      "has_previous_page": false,
      "previous_page": null
    },
    "completeAnimeData": [
      {
        "title": "Towa no Yuugure",
        "slug": "towa-yuugure-sub-indo",
        "poster": "https://otakudesu.best/.../towa.jpg",
        "episode_count": "12",
        "rating": "6.52",
        "last_release_date": "07 Feb",
        "otakudesu_url": "https://otakudesu.best/..."
      }
    ]
  }
}

Anime Details

Fetches comprehensive metadata for a specific anime, including synopsis, studio, and the complete episode list.

HTTP Request

GET/api/anime/{slug}

Parameters

  • slugstringRequired

    The unique URL slug of the anime.

Interactive Test

To protect server quota, custom inputs are disabled in this demo. Live testing is restricted to predefined cached values.

Example Response
{
  "data": {
    "title": "Sousou no Frieren Season 2",
    "japanese_title": "葬送のフリーレン",
    "poster": "https://otakudesu.best/.../frieren.jpg",
    "rating": "9.1",
    "produser": "Madhouse",
    "status": "Ongoing",
    "synopsis": "The adventure continues for the elf mage Frieren...",
    "episode_list": [
      {
        "episode_title": "Episode 6",
        "episode_slug": "frieren-s2-episode-6-sub-indo",
        "release_date": "28 Feb 2026"
      }
    ]
  }
}

Episode Details

Retrieves streaming iframe URLs and multi-resolution direct download links for a specific anime episode.

HTTP Request

GET/api/episode/{slug}

Parameters

  • slugstringRequired

    The unique slug of the episode.

Interactive Test

To protect server quota, custom inputs are disabled in this demo. Live testing is restricted to predefined cached values.

Example Response
{
  "data": {
    "episode": "Sousou no Frieren S2 Episode 6 Subtitle Indonesia",
    "stream_url": "https://desustream.me/frieren-s2-ep-6/",
    "has_next_episode": false,
    "next_episode": null,
    "has_previous_episode": true,
    "previous_episode": {
      "slug": "frieren-s2-episode-5-sub-indo",
      "otakudesu_url": "https://otakudesu.best/..."
    },
    "download_urls": {
      "mp4": [
        {
          "resolution": "360p",
          "urls": [
            { "provider": "Zippyshare", "url": "https://..." }
          ]
        }
      ],
      "mkv": [
        {
          "resolution": "720p",
          "urls": [
            { "provider": "Mega", "url": "https://..." }
          ]
        }
      ]
    }
  }
}

Movie Details

Retrieves streaming iframe URLs and multi-resolution direct download links specifically for anime movies.

HTTP Request

GET/api/movie/{slug}

Parameters

  • slugstringRequired

    The unique slug of the anime movie.

Interactive Test

To protect server quota, custom inputs are disabled in this demo. Live testing is restricted to predefined cached values.

Example Response
{
  "data": {
    "title": "Kimi no Na wa.",
    "iframeSrc": "https://desustream.me/kimi-no-na-wa/",
    "downloadLinks": [
      {
        "quality": "1080p",
        "links": [
          {
            "name": "Google Drive",
            "url": "https://..."
          }
        ]
      }
    ]
  }
}

Batch Download

Fetches download links for a full season batch (usually in Zip/Rar format).

HTTP Request

GET/api/batch/{slug}

Parameters

  • slugstringRequired

    The unique slug of the batch.

Interactive Test

To protect server quota, custom inputs are disabled in this demo. Live testing is restricted to predefined cached values.

Example Response
{
  "data": {
    "batch": "Sousou no Frieren S1 Batch Subtitle Indonesia",
    "download_urls": [
      {
        "resolution": "720p",
        "file_size": "2.4 GB",
        "urls": [
          {
            "provider": "Google Drive",
            "url": "https://..."
          },
          {
            "provider": "Mega",
            "url": "https://..."
          }
        ]
      }
    ]
  }
}

Release Schedule

Fetches the weekly release schedule for all ongoing anime.

HTTP Request

GET/api/schedule

Interactive Test

Example Response
{
  "data": [
    {
      "day": "Senin",
      "animeList": [
        {
          "title": "Tsuki ga Michibiku Isekai Douchuu",
          "slug": "tsukimichi-sub-indo",
          "otakudesu_url": "https://otakudesu.best/..."
        }
      ]
    }
  ]
}

Genre List

Retrieves a list of all available anime genres in the database.

HTTP Request

GET/api/genre

Interactive Test

Example Response
{
  "data": [
    {
      "name": "Action",
      "slug": "action",
      "otakudesu_url": "https://otakudesu.best/genres/action/"
    },
    {
      "name": "Adventure",
      "slug": "adventure",
      "otakudesu_url": "https://otakudesu.best/genres/adventure/"
    }
  ]
}

Anime by Genre

Get paginated list of anime based on a specific genre.

HTTP Request

GET/api/genre/{genre}/{page}

Parameters

  • genrestringRequired

    The genre slug (e.g., "action").

  • pagenumberRequired

    The page number to fetch.

Interactive Test

To protect server quota, custom inputs are disabled in this demo. Live testing is restricted to predefined cached values.

Example Response
{
  "data": {
    "anime": [
      {
        "title": "Naruto Shippuden",
        "slug": "naruto-shippuden-sub-indo",
        "poster": "https://otakudesu.best/.../naruto.jpg",
        "rating": "8.5",
        "episode_count": "500",
        "season": "Fall 2007",
        "studio": "Studio Pierrot",
        "genres": [
          {
            "name": "Action",
            "slug": "action",
            "otakudesu_url": "https://..."
          }
        ],
        "synopsis": "It has been two and a half years...",
        "otakudesu_url": "https://otakudesu.best/..."
      }
    ],
    "pagination": {
      "current_page": 1,
      "last_visible_page": 20,
      "has_next_page": true,
      "next_page": 2,
      "has_previous_page": false,
      "previous_page": null
    }
  }
}