Skip to content

nattadasu/animeApi

nattadasu's RESTful AnimeAPI

AnimeAPI (also known as aniApi) is a RESTful API that provides anime relation mapping across multiple anime databases. It mainly focuses on providing relations between anime titles from different databases.

This project is mainly derived on anime-offline-database by manami-project and arm by kawaiioverflow, while adding support for more databases.

Important

AnimeAPI in general is dual-licensed:

For full usage and attribution terms, see Licensing.

Table of Contents

Click to expand

Why use AnimeAPI?

Compared to other relation mapping API, AnimeAPI provides more databases yet it's still easy to use. It also provides more data than other relation mapping API, such as the anime title itself.

Below is the comparison between AnimeAPI and other relation mapping API.

Project License Access & Rate Limits Formats Title Supported Platforms
AnimeAPI MIT, ODbL, DbCL, CC0 Public / No limits REST, JSON, TSV f:adb f:al f:an f:ap f:as f:ac f:hka f:imdb f:kz f:kts f:lbx f:lc f:mal f:ntj f:ntf f:oo f:shk f:shb f:sy f:smk f:tmdb f:trk f:tvdb f:tvtm
(All 24+ platforms)
manami-project/anime-offline-database ODbL, DbCL Public Dump JSON f:mal f:al f:adb f:kts f:lc f:as f:ap f:smk f:an
kawaiioverflow/arm MIT Public / No limits Node Package, REST, JSON f:mal f:al f:ac f:shb
Fribb/anime-lists Unknown Public Dump JSON f:mal f:al f:adb f:kts f:lc f:as f:ap f:smk f:an f:ntf f:shk f:tmdb f:tvdb f:imdb
beeequeue/arm-server AGPL-3.0 Public / No limits REST f:adb f:al f:ap f:as f:imdb f:kts f:lc f:mal f:ntf f:shk f:tmdb 1 f:tvdb
Atelier-Shiori/Hato Apache-2.0 Paid (API Key) / No limits REST f:al f:kts f:mal f:ntf f:adb
SIMKL Proprietary API Key / 1k reqs/day REST f:mal f:tmdb f:tvdb f:imdb f:adb f:trk
Result-only: f:al f:an f:ap f:as f:kts f:lc
Trakt Proprietary API Key / 1k reqs/5 mins REST f:tmdb f:tvdb f:imdb
Anime-Lists/anime-lists Unknown Public / No limits XML, XLSX f:adb f:tvdb f:tmdb 1 f:imdb
rensetsu/db.trakt.extended-anitrakt MIT Public Dump JSON f:trk f:tmdb f:tvdb f:lbx f:imdb

Licensing

This project uses a dual-licensing structure to separate the database data from the software code:

Software Code (API Server & Generators)

The codebase (including the REST API server and scraper/generator scripts) is licensed under the MIT License (see LICENSE).

You are free to use, modify, and distribute this software for any purpose.

Database/Compiled Data

The generated relation mapping database (found in database/) is licensed under the Open Database License (ODbL) v1.0 (see LICENSE-ODbL) and the Database Contents License (DbCL) v1.0 (see LICENSE-DbCL).

In short, you must:

  • Share-Alike: Under the ODbL, if you publicly use or distribute a modified version of this database, or another database derived from it, you must also release that database under the ODbL.
  • Credits: If you use this database in your projects, you must attribute the source (AnimeAPI and Anime Offline Database).

Public Domain Scraped Data (CC0-1.0)

The raw JSON files generated by the scrapers for Kaize, Nautiljon, Otak-Otaku, and SilverYasha (found under database/raw/) are dedicated to the public domain under the CC0-1.0 license (see LICENSE-CC0). This allows you to build your own databases using these specific raw relation mappings without database-license restrictions.

For a detailed list of these files, refer to database/raw/README.md.

Limitation

Because AnimeAPI uses a flat, 1-to-1 mapping model (allowing only a single ID per provider per entry), it cannot natively represent 1-to-many or many-to-many relationships across different databases.

This leads to mapping discrepancies in several common scenarios:

  • Specials, OVAs, and Movies: Side stories or prequel films may be cataloged as special episodes within a main entry on one platform (like AniDB or TVDB), but split into standalone entries on others. By default, AnimeAPI conforms to MyAnimeList's entry structure to achieve compatibility across different databases.
  • Split-cours: Shows broadcast in two separate parts may be merged under one entry or split depending on the database's moderation policies.

Featured on

Do you want to integrate AnimeAPI into your project? Or do you want to see how AnimeAPI is used in other projects and their use cases? Check out the list below!

Tip

If you want to add your project to this list, please open a pull request adding your project to the table below. Please make sure to add a short description of your project and a link to your project's homepage.

Libraries

Package Name Language Package Link Description
animeapi-py Python pypi A Python wrapper for AnimeAPI with type hinting and additional async support

Projects, Apps, and Websites

Name Language Homepage Description
animeManga-autoBackup Powershell, Python GitHub A script that uses AnimeAPI to get info one of your anime/manga lists and save it to a file
Bokusu Python GitHub Rewrite of animeManga-autoBackup in Python
Ryuuzaki Ryuusei Python GitHub A Discord bot that uses AnimeAPI to fetch anime maps
TsukiHime - Webpage Modern Anime Tracking & Releases

Supported Platforms and Aliases

AnimeAPI supported following sites for media lookup. You can use this as an alias cheatsheet as well.

Important

  • The aliases are case-insensitive. You can use any of the aliases to get the data you want.
  • 2K is the two-letter abbreviation for the platform.
Platform 2K Aliases
anidb f:adb ad adb, anidb.net
anilist f:al al anilist.co
animenewsnetwork f:an an ann, animenewsnetwork.com
animeplanet f:ap ap anime-planet.com, anime-planet, animeplanet.com
anisearch f:as as anisearch.com, anisearch.de, anisearch.it, anisearch.es, anisearch.fr, anisearch.jp
annict f:ac ac anc, act, annict.com, annict.jp, en.annict.com
hikka f:hka hk hka, hikka.io
imdb f:imdb im imdb.com
kaize f:kz kz kaize.io
kitsu f:kts kt kts, kitsu.io, kitsu.app
letterboxd f:lbx lb lx, letterboxd.com
livechart f:lc lc livechart.me
myanimelist f:mal ma mal, myanimelist.net
nautiljon f:ntj nj ntj, nautiljon.com
notify f:ntf nf ntf, ntm, notifymoe, notify.moe
otakotaku f:oo oo otakotaku.com
shikimori f:shk sh shiki, shk, shiki.one, shikimori.io, shikimori.me, shikimori.one, shikimori.org
shoboi f:shb sb shb, syb, shobocal, syoboi, syobocal, cal.syoboi.jp
silveryasha f:sy sy dbti, db.silveryasha.id, db.silveryasha.web.id
simkl f:smk sm smk, simkl.com, animecountdown, animecountdown.com
themoviedb f:tmdb tm tmdb, themoviedb.org
thetvdb f:tvdb tv tvdb, thetvdb.com, thetvdb, tvtime, tt, tvtime.com
trakt f:trk tr trk, trakt.tv

Statistic

So far, AnimeAPI has indexed data from 19 databases, with details as follows:

Last updated: 09 June 2026 21:37:32 UTC

Platform Count
aniDB 14380
AniList 22370
Anime News Network 12260
Anime-Planet 26635
aniSearch 20684
Annict 12799
Hikka 28563
IMDb 7559
Kaize 24575
Kitsu 21896
Letterboxd 1874
LiveChart 12199
MyAnimeList 30514
Nautiljon 9231
Notify.moe 16965
Otak Otaku 3043
Shikimori 30514
Shoboi/Syobocal 5992
Silver Yasha 5288
SIMKL 14348
The Movie Database 8822
The TVDB 5345
Trakt 7253
Total 40123

Usage

To use this API, you can access the following base URLs:

  • Latest/v3:

    GET https://animeapi.my.id

All requests must be GET, and response always will be in JSON format.

Response Headers

Important

This feature was added in Oct 29, 2025. Make sure your program/custom library supports this to avoid errors.

All API responses include the following custom headers:

Header Description Example Value
X-ANIMEAPI-VERSION Current API version v3
X-ANIMEAPI-UPDATED Database last update timestamp (Unix epoch) 1761714944
X-ANIMEAPI-SERVER-UPDATED API server code last update timestamp (Unix epoch, tracks changes to api/ folder) 1761762026

These headers are useful for:

  • Cache invalidation: Use X-ANIMEAPI-UPDATED to detect when the database has been updated
  • Version checking: Ensure your application is compatible with the current API version
  • Server monitoring: Track when the API server code was last modified

Example:

GET /status HTTP/1.1
Host: animeapi.my.id

HTTP/1.1 200 OK
X-ANIMEAPI-VERSION: v3
X-ANIMEAPI-UPDATED: 1761714944
X-ANIMEAPI-SERVER-UPDATED: 1761762026
Content-Type: application/json

Get status and statistics

MIME Type: application/json

GET /status
Response example
{
  "mainrepo": "https://github.com/nattadasu/animeApi/tree/v3",
  "updated": {
    "timestamp": 1781041052,
    "iso": "2026-06-09T21:37:32.081247+00:00"
  },
  "contributors": [
    "nattadasu",
    "Copilot",
    "github-actions[bot]"
  ],
  "sources": [
    "gh:kawaiioverflow/arm",
    "gh:manami-project/anime-offline-database",
    "gh:rensetsu/db.rensetsu.public-dump",
    "gh:rensetsu/db.trakt.extended-anitrakt",
    "gh:Fribb/anime-lists",
    "https://kaize.io",
    "https://nautiljon.com",
    "https://otakotaku.com",
    "https://livechart.me",
    "https://shikimori.one"
  ],
  "license": "MIT AND ODbL-1.0 AND DbCL-1.0 AND CC0-1.0",
  "website": "https://animeapi.my.id",
  "counts": {
    "anidb": 14380,
    "anilist": 22370,
    "animenewsnetwork": 12260,
    "animeplanet": 26635,
    "anisearch": 20684,
    "annict": 12799,
    "hikka": 28563,
    "imdb": 7559,
    "kaize": 24575,
    "kitsu": 21896,
    "letterboxd": 1874,
    "livechart": 12199,
    "myanimelist": 30514,
    "nautiljon": 9231,
    "notify": 16965,
    "otakotaku": 3043,
    "shikimori": 30514,
    "shoboi": 5992,
    "silveryasha": 5288,
    "simkl": 14348,
    "themoviedb": 8822,
    "thetvdb": 5345,
    "trakt": 7253,
    "total": 40123
  },
  "endpoints": {
    "$comment": "The endpoints are stated in Python regex format. Platform aliases supported for direct lookup for platform specific endpoints (see ?P<alias> in regex).",
    "anidb": "/(?P<alias>anidb)/(?P<media_id>\\d+)",
    "anilist": "/(?P<alias>anilist)/(?P<media_id>\\d+)",
    "animeapi_dump": "/(anime(?:a|A)pi|aa)(?:\\\\\\.json)?",
    "animeapi_tsv": "/(anime(?:a|A)pi|aa).tsv",
    "animenewsnetwork": "(?P<alias>animenewsnetwork)/(?P<media_id>\\d+)",
    "animeplanet": "/(?P<alias>animeplanet)/(?P<media_id>[\\w\\-]+)",
    "anisearch": "/(?P<alias>anisearch)/(?P<media_id>\\d+)",
    "annict": "/(?P<alias>annict)/(?P<media_id>\\d+)",
    "heartbeat": "/(heartbeat|ping)",
    "hikka": "/(?P<alias>hikka)/(?P<media_id>\\d+)",
    "imdb": "/(?P<alias>imdb)/(?P<media_id>tt[\\d]+)",
    "kaize": "/(?P<alias>kaize)/(?P<media_id>[\\w\\-]+)",
    "kitsu": "/(?P<alias>kitsu)/(?P<media_id>\\d+)",
    "letterboxd": "/(?P<alias>letterboxd)/(?P<media_id>[\\w\\-]+)",
    "livechart": "/(?P<alias>livechart)/(?P<media_id>\\d+)",
    "myanimelist": "/(?P<alias>myanimelist)/(?P<media_id>\\d+)",
    "nautiljon": "/(?P<alias>nautiljon)/(?P<media_id>[\\w\\+!\\-_\\(\\)\\[\\]]+)",
    "notify": "/(?P<alias>notify)/(?P<media_id>[\\w\\-_]+)",
    "otakotaku": "/(?P<alias>otakotaku)/(?P<media_id>\\d+)",
    "redirect": "/(redirect|rd)",
    "repo": "/",
    "schema": "/schema(?:\\\\\\.json)?",
    "shikimori": "/(?P<alias>shikimori)/(?P<media_id>\\d+)",
    "shoboi": "/(?P<alias>shoboi)/(?P<media_id>\\d+)",
    "silveryasha": "/(?P<alias>silveryasha)/(?P<media_id>\\d+)",
    "simkl": "/(?P<alias>simkl)/(?P<media_id>\\d+)",
    "status": "/status",
    "syobocal": "/(?P<alias>syobocal)/(?P<media_id>\\d+)",
    "themoviedb": "/(?P<alias>themoviedb)/(?P<media_type>movie|tv)/(?P<media_id>\\d+)(?:/seasons?/(?P<season_id>\\d+))?",
    "thetvdb": "/(?P<alias>thetvdb)/series/(?P<media_id>\\d+)(?:/seasons?/(?P<season_id>\\d+))?",
    "trakt": "/(?P<alias>trakt)/(?P<media_type>show|movie)(s)?/(?P<media_id>\\w\\-+)(?:/seasons?/(?P<season_id>\\d+))?",
    "updated": "/updated"
  }
}

Get latency report

MIME Type: application/json

GET /heartbeat
Response example
{
  "status": "OK",
  "code": 200,
  "response_time": "0.000s",
  "request_time": "0.000s",
  "request_epoch": 1626682566.0,
}

Get updated date and time

MIME Type: text/plain

GET /updated
Response example
Updated on 06/09/2026 21:37:32 UTC

Get all items in Array (Master Array)

HTTP Status Code: 302 (redirect to GitHub raw file URL)
MIME Type: application/json

GET /animeApi.json

or

GET /aa.json

Fetch all item as TSV (Tab Separated Values) file

Tip

Use this endpoint if you want to import the data to spreadsheet.

MIME Type: text/tab-separated-values

GET /animeApi.tsv

or

GET /aa.tsv

Get anime relation mapping data

MIME Type: application/json

GET /:platform/:mediaid
  • :platform can be one of the following listed in Supported Platforms and Aliases.
  • :mediaid is the ID of the anime in the platform.
  • To use kitsu, simkl, shikimori, themoviedb, and trakt path, please read additional information in # Provider exclusive rules before proceeding to avoid unwanted error.
Response example
GET https://animeapi.my.id/myanimelist/1
{}

Provider exclusive rules

Kitsu

kitsu IDs must be numerical. If your application only store the id as slug, you can convert it to the numerical ID using the Kitsu API:

  • Endpoint: GET https://kitsu.app/api/edge/anime?filter[slug]=<SLUG>
  • Example: GET https://kitsu.app/api/edge/anime?filter[slug]=cowboy-bebop
  • Parsing: The numerical ID is found at data[0].id in the JSON response.
Letterboxd

letterboxd supports multiple ID formats with priority-based lookup. The API automatically tries these formats in order:

  1. Slug (letterboxd_slug) — Primary format (e.g., your-name)
  2. Letter ID (letterboxd_lid) — Fallback format (e.g., cUqs), useful if you iterate from Letterboxd's official API directly.
  3. Unique ID (letterboxd_uid) — Alternative fallback (e.g., 307684), used internally by Letterboxd (not available/accessible publicly).

Supported endpoints:

GET https://animeapi.my.id/letterboxd/your-name      # Slug lookup
GET https://animeapi.my.id/letterboxd/cUqs           # Letter ID lookup
GET https://animeapi.my.id/letterboxd/307684         # Unique ID lookup
SIMKL

Note

Also applicable to AnimeCountdown.

simkl ID is only applicable for media entries in the Anime category.

Shikimori

shikimori IDs are identical to myanimelist IDs.

If you encounter a 404 error:

  • Remove any alphabetical prefix from the ID.
  • Example: Convert z218 to 218 and retry the query.
The Movie DB

For The Movie DB (TMDB), the path format requires the media type: :provider/:mediatype/:mediaid (where :mediatype is either movie or tv).

For TV shows, you can also specify a season: :provider/:mediatype/:mediaid/seasons/:seasonid (supports Trakt season index or TMDB internal season ID).

Supported endpoints:

GET https://animeapi.my.id/themoviedb/tv/30991                # TV show
GET https://animeapi.my.id/themoviedb/movie/60669             # Movie
GET https://animeapi.my.id/themoviedb/tv/30991/seasons/1      # TV show with season
The TVDB

For The TVDB, the path format requires the series prefix: :provider/series/:mediaid or :provider/series/:mediaid/seasons/:season_id.

When querying season data, you can use either the season number (trakt_season) or the TVDB season ID (thetvdb_season_id). Season 1 entries can also be accessed using the base series URL.

Supported endpoints:

GET https://animeapi.my.id/thetvdb/series/12345
GET https://animeapi.my.id/thetvdb/series/12345/seasons/2
GET https://animeapi.my.id/thetvdb/series/12345/seasons/789012
Trakt

For Trakt, the path format is :provider/:mediatype/:mediaid (where :mediatype is either movies or shows). The :mediaid can be a numeric ID or a slug.

Supported endpoints:

GET https://animeapi.my.id/trakt/movies/224301                 # Numeric ID
GET https://animeapi.my.id/trakt/movies/your-name-2016         # Slug
GET https://animeapi.my.id/trakt/shows/152334/seasons/3        # With season (numeric)
GET https://animeapi.my.id/trakt/shows/cowboy-bebop/seasons/1  # With season (slug)

The API will first attempt to parse :mediaid as a numeric ID. If that fails, it will fall back to slug lookup using the trakt_slug field.

Note

While you can now use slugs directly, numeric IDs are still recommended for better compatibility. If you need to convert a slug to numeric ID externally, you can use the Trakt API:

GET https://api.trakt.tv/search/trakt/<ID>?type=<movie|show>

Note: Trakt API requires an API key to access this endpoint.

To get exact season mapping, append /seasons/:season_inc to the end of the ID, where :season_inc is the season number of the title in the provider.

Caution

/seasons/0 is invalid, and will return 400 status code.

Important

Since Oct 19, 2025, AnimeAPI now features a split cour flag, where trakt_may_invalid indicates whether a season mapping may be unreliable:

  • none: The entry is either a special, or a movie
  • false: Season found on Trakt and mapping is reliable.
  • true: Season not found separately on Trakt (split cour). Season fields on Trakt, TMDB, and TVDB will be null.

MAL may list split cours as separate seasons while Trakt/TMDB combines them into one continuous season. When true, episodes are likely in the previous season on Trakt.

For more information, head to db.trakt.extended-anitrakt.

For example, to get the ID of Mairimashita Iruma-kun Season 3, you can use:

GET https://animeapi.my.id/trakt/shows/152334/seasons/3
Response example from Trakt
{}

Redirect to provider's page

HTTP Status Code: 302 OR 200 (if required)
MIME Type: None OR text/plain (if required)

GET /redirect?platform=:platform&mediaid=:mediaid&target=:platform

or

GET /rd?from=:platform&id=:mediaid&to=:platform
  • :platform can be one of the following listed in Supported Platforms and Aliases.

    Additionally, on target/to parameter, there are additional supported platforms, and can't be used as source/from due to some limitations:

    Platform 2K Aliases Additional Notes
    kurozora f:krz kr krz, kurozora.app Requires Kurozora+ subscription and MAL ID
    myanili f:mya my myani.li Requires MAL ID; a web app to manage list
  • :mediaid is the ID of the anime in the platform. Please follow the instruction written in Provider exclusive rules to avoid any conflict during redirection.

Redirect: Parameters

In AnimeAPI, we use query parameters to specify the output of the API. The query parameters are as follows:

Parameter Aliases Is Required Description
platform from, f Yes The platform you want to get the data from.
mediaid id, i Yes The ID of the anime in the platform.
target to, t No The platform you want to redirect to. If you don't specify this parameter, the API will redirect to specified platform's homepage.
israw raw, r No As long as this parameter is present, the API will return the raw URL instead of redirecting.

Redirect: Response

Recommended/verbose path format
GET https://animeapi.my.id/redirect?platform=myanimelist&mediaid=1&target=trakt

HTTP/1.1 302 Found
Location: https://trakt.tv/shows/30857/seasons/1
Short/aliased/alternative path format
GET https://animeapi.my.id/rd?from=al&id=154587&to=shk

HTTP/1.1 302 Found
Location: https://shikimori.io/animes/52991
Provider with slash (/) in mediaid

There is no exclusive rule in this, as AnimeAPI will automatically understand your query

GET https://animeapi.my.id/redirect?platform=trakt&mediaid=shows/152334/seasons/3&target=myanimelist

HTTP/1.1 302 Found
Location: https://myanimelist.net/anime/49784
Raw path format
GET https://animeapi.my.id/redirect?platform=animeplanet&mediaid=cells-at-work&target=simkl&israw

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8

https://simkl.com/anime/757695

Schema

If you want to validate the response from the API, you can use the following schema in JSON Schema, TypeScript, or Python Dataclass.

JSON Schema

Add the following schema URI to your JSON file.

{ "$schema": "https://animeapi.my.id/schema.json" }
Click to expand, if you want to see the content of the schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "anime": {
      "$comment": "Interface: Anime",
      "additionalProperties": false,
      "dependencies": {
        "themoviedb_type": {
          "properties": {
            "themoviedb_season_id": {
              "type": "number"
            }
          },
          "required": [
            "themoviedb_season_id"
          ]
        },
        "trakt_type": {
          "properties": {
            "trakt_season": {
              "type": "number"
            }
          },
          "required": [
            "trakt_season"
          ]
        }
      },
      "description": "Schema for anime",
      "properties": {
        "anidb": {
          "$ref": "#/definitions/numbernull",
          "description": "aniDB ID, website: https://anidb.net/",
          "title": "aniDB"
        },
        "anilist": {
          "$ref": "#/definitions/numbernull",
          "description": "AniList ID, website: https://anilist.co/",
          "title": "AniList"
        },
        "animenewsnetwork": {
          "$ref": "#/definitions/numbernull",
          "description": "Anime News Network, website: https://animenewsnetwork.com",
          "title": "Anime News Network"
        },
        "animeplanet": {
          "$ref": "#/definitions/stringnull",
          "description": "Anime-Planet slug, website: https://www.anime-planet.com/",
          "pattern": "^[a-z0-9\\-]+$",
          "title": "Anime-Planet"
        },
        "anisearch": {
          "$ref": "#/definitions/numbernull",
          "description": "AniSearch ID, website: https://www.anisearch.com/, https://anisearch.de, https://anisearch.it, https://anisearch.es, https://anisearch.fr, https://anisearch.jp",
          "title": "AniSearch"
        },
        "annict": {
          "$ref": "#/definitions/numbernull",
          "description": "Annict ID, website: https://annict.com/, https://en.annict.com/, https://annict.jp/",
          "title": "Annict"
        },
        "hikka": {
          "$ref": "#/definitions/stringnull",
          "description": "Hikka slug + hash, website: https://hikka.io/",
          "title": "Hikka"
        },
        "imdb": {
          "$ref": "#/definitions/stringnull",
          "description": "IMDb ID, website: https://www.imdb.com/",
          "pattern": "^tt[\\d]+$",
          "title": "IMDb"
        },
        "kaize": {
          "$ref": "#/definitions/stringnull",
          "description": "Kaize slug, website: https://kaize.io/",
          "pattern": "^[a-z0-9\\-]+$",
          "title": "Kaize"
        },
        "kaize_id": {
          "$ref": "#/definitions/numbernull",
          "description": "Kaize ID in integer format, not recommended as some entry can't be found its ID compared to slug",
          "title": "Kaize ID"
        },
        "kitsu": {
          "$ref": "#/definitions/numbernull",
          "description": "Kitsu ID in integer, slug not suppported, website: https://kitsu.app/",
          "title": "Kitsu"
        },
        "letterboxd_slug": {
          "$ref": "#/definitions/stringnull",
          "description": "Letterboxd slug, website: https://letterboxd.com/",
          "pattern": "^[a-z0-9\\-]+",
          "title": "Letterboxd Slug"
        },
        "letterboxd_lid": {
          "$ref": "#/definitions/stringnull",
          "description": "Letterboxd Letter ID, only being used on 1st party API requests",
          "title": "Letterboxd ID"
        },
        "letterboxd_uid": {
          "$ref": "#/definitions/numbernull",
          "description": "Letterboxd General ID, internally used",
          "title": "Letterboxd General ID"
        },
        "livechart": {
          "$ref": "#/definitions/numbernull",
          "description": "LiveChart ID, website: https://www.livechart.me/",
          "title": "LiveChart"
        },
        "myanimelist": {
          "$ref": "#/definitions/numbernull",
          "description": "MyAnimeList ID, website: https://myanimelist.net/",
          "title": "MyAnimeList"
        },
        "nautiljon": {
          "$ref": "#/definitions/stringnull",
          "description": "Nautiljon slug, website: https://www.nautiljon.com/",
          "pattern": "^[a-z0-9\\-]+",
          "title": "Nautiljon"
        },
        "nautiljon_id": {
          "$ref": "#/definitions/numbernull",
          "description": "Nautiljon ID in integer format, not recommended as some entry can't be found its ID compared to slug",
          "title": "Nautiljon ID"
        },
        "notify": {
          "$ref": "#/definitions/stringnull",
          "description": "Notify.moe slug, website: https://notify.moe/",
          "pattern": "^[a-zA-Z0-9]+$",
          "title": "Notify.moe"
        },
        "otakotaku": {
          "$ref": "#/definitions/numbernull",
          "description": "Otak Otaku ID, website: https://otakotaku.com/",
          "title": "Otak Otaku"
        },
        "shikimori": {
          "$ref": "#/definitions/numbernull",
          "description": "Shikimori ID, website: https://shikimori.io/",
          "title": "Shikimori"
        },
        "shoboi": {
          "$ref": "#/definitions/numbernull",
          "description": "Shoboi/Syobocal ID, website: http://cal.syoboi.jp/",
          "title": "Shoboi/Syobocal"
        },
        "silveryasha": {
          "$ref": "#/definitions/numbernull",
          "description": "Silver Yasha ID, website: https://db.silveryasha.id/",
          "title": "Silver Yasha"
        },
        "simkl": {
          "$ref": "#/definitions/numbernull",
          "description": "SIMKL ID, website: https://simkl.com/",
          "title": "SIMKL"
        },
        "themoviedb": {
          "$ref": "#/definitions/numbernull",
          "description": "The Movie Database ID, can be used for movie or tv, website: https://www.themoviedb.org/",
          "title": "The Movie Database"
        },
        "themoviedb_season_id": {
          "$ref": "#/definitions/numbernull",
          "description": "The Movie Database internal season ID, only available for TV shows",
          "title": "The Movie Database season ID"
        },
        "themoviedb_type": {
          "$ref": "#/definitions/stringnull",
          "description": "The Movie Database media type, can be movie or tv",
          "enum": [
            "movie",
            "tv"
          ],
          "title": "The Movie Database type"
        },
        "thetvdb": {
          "$ref": "#/definitions/numbernull",
          "description": "The TVDB ID, website: https://thetvdb.com/, only to be prefixed with series/ to deep link",
          "title": "The TVDB"
        },
        "thetvdb_season_id": {
          "$ref": "#/definitions/numbernull",
          "description": "The TVDB internal season ID, can be used to build URL",
          "title": "The TVDB season ID"
        },
        "title": {
          "type": "string",
          "description": "Title of the anime in English or Romaji",
          "title": "Title"
        },
        "trakt": {
          "$ref": "#/definitions/numbernull",
          "description": "Trakt ID, can be used for movie or show, website: https://trakt.tv/",
          "title": "Trakt"
        },
        "trakt_may_invalid": {
          "$ref": "#/definitions/booleannull",
          "description": "Whether the entry is actually a split cour, which both Trakt and TMDB merge it into one",
          "title": "Trakt May Invalid"
        },
        "trakt_season": {
          "$ref": "#/definitions/numbernull",
          "description": "Trakt season number, only available for shows",
          "title": "Trakt season"
        },
        "trakt_season_id": {
          "$ref": "#/definitions/numbernull",
          "description": "Trakt season ID",
          "title": "Trakt Season ID"
        },
        "trakt_slug": {
          "$ref": "#/definitions/stringnull",
          "description": "Trakt slug",
          "pattern": "^[a-z0-9\\-]+",
          "title": "Trakt Slug"
        },
        "trakt_type": {
          "$ref": "#/definitions/stringnull",
          "description": "Trakt media type, can be movie or show",
          "enum": [
            "movies",
            "shows"
          ],
          "title": "Trakt type"
        }
      },
      "required": [
        "title"
      ],
      "title": "Anime",
      "type": "object"
    },
    "numbernull": {
      "type": [
        "number",
        "null"
      ]
    },
    "stringnull": {
      "type": [
        "string",
        "null"
      ]
    },
    "booleannull": {
      "type": [
        "boolean",
        "null"
      ]
    }
  },
  "properties": {
    "data": {
      "items": {
        "$ref": "#/definitions/anime"
      },
      "type": "array"
    }
  },
  "title": "anime-api",
  "type": "object"
}

You can also read human-readable schema in JSON Schema if you want to create your own wrapper.

Acknowledgements

This project uses multiple sources to compile the data, including:

Footnotes

  1. Movie only 2

About

A RESTful API for anime relation mapping and auto redirect service across multiple anime databases

Topics

Resources

License

MIT and 3 other licenses found

Licenses found

MIT
LICENSE
CC0-1.0
LICENSE-CC0
Unknown
LICENSE-DbCL
Unknown
LICENSE-ODbL

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages