Kitsu
Kitsu anime and episodes, keyed by
kitsu_id.
Mappings: /api/v1/map/kitsu/{id}.
Routes
GET/api/kitsu/ids
Fetched IDs and titles, sorted by kitsu_id. Empty: []; unknown
title: null.
curl https://animap.id/api/kitsu/ids
[
{ "kitsu_id": 1, "title": "Cowboy Bebop" },
{ "kitsu_id": 2, "title": "Cowboy Bebop: Tengoku no Tobira" },
{ "kitsu_id": 3, "title": "Trigun" }
]
GET/api/kitsu/{id}
Parsed anime record. Unfetched ID: 404. Ratings and rankings are in
/raw.
curl https://animap.id/api/kitsu/1
{
"kitsu_id": 1,
"slug": "cowboy-bebop",
"canonical_title": "Cowboy Bebop",
"title_en": "Cowboy Bebop",
"title_en_jp": "Cowboy Bebop",
"title_ja_jp": "カウボーイビバップ",
"other_titles": ["Cowboy Bebop"],
"abbreviated_titles": ["COWBOY BEBOP"],
"description": "In the year 2071, humanity has colonized…",
"subtype": "TV",
"status": "finished",
"tba": null,
"age_rating": "R",
"age_rating_guide": "17+ (Violence & Profanity)",
"nsfw": false,
"episode_count": 26,
"episode_length": 24,
"total_length": 624,
"start_date": "1998-04-03",
"end_date": "1999-04-24",
"poster_image": "https://media.kitsu.io/anime/poster_images/1/original.png",
"cover_image": "https://media.kitsu.io/anime/cover_images/1/original.png",
"youtube_video_id": "qig4KOK2R2g",
"url": "https://kitsu.io/anime/cowboy-bebop",
"mal_id": 1,
"anilist_id": 1,
"anidb_id": 23,
"absent": false,
"absent_at": null
}
GET/api/kitsu/{id}/raw
Stored JSON:API resource (id, type, attributes)
with resolved mappings. Includes ratings and image variants. Missing payload:
404.
links and relationships are omitted; mappings are flattened.
Counters reflect the last fetch.
curl https://animap.id/api/kitsu/1/raw
{
"id": "1",
"type": "anime",
"attributes": {
"slug": "cowboy-bebop",
"canonicalTitle": "Cowboy Bebop",
"titles": {
"en": "Cowboy Bebop",
"en_jp": "Cowboy Bebop",
"ja_jp": "カウボーイビバップ"
},
"subtype": "TV",
"status": "finished",
"averageRating": "82.29",
"ratingFrequencies": { "2": "13", "3": "1", "4": "6" },
"userCount": 138416,
"favoritesCount": 3958,
"popularityRank": 28,
"ratingRank": 27,
"posterImage": { "tiny": "…", "small": "…", "original": "…" }
},
"mappings": [
{ "id": "1", "externalSite": "myanimelist/anime", "externalId": "1" },
{ "id": "9578", "externalSite": "anilist/anime", "externalId": "1" },
{ "id": "43151", "externalSite": "anidb", "externalId": "23" }
]
}
GET/api/kitsu/{id}/episodes
Parsed episodes, sorted by season, episode number, then episode ID.
200 with episodes: [] means the fetched list is empty.
404 means it has not been fetched.
Episode routes require an anime ID. Start with /api/kitsu/ids.
curl https://animap.id/api/kitsu/1/episodes
{
"kitsu_id": 1,
"url": "https://kitsu.io/anime/cowboy-bebop",
"episodes": [
{
"kitsu_episode_id": 1,
"kitsu_id": 1,
"canonical_title": "Asteroid Blues",
"title_en_us": "Asteroid Blues",
"title_en_jp": "Asteroid Blues",
"title_ja_jp": "アステロイドブルース",
"other_titles": [],
"description": "Spike and Jet pursue a bounty on Tijuana…",
"season_number": 1,
"number": 1,
"relative_number": 1,
"airdate": "1998-04-03",
"length_minutes": 25,
"thumbnail": "https://media.kitsu.io/episodes/thumbnails/1/original.jpg"
}
]
}
GET/api/kitsu/{id}/episodes/{episode_id}
One episode, plus the anime’s url. Wrong anime or missing episode:
404. Both IDs must be positive integers.
curl https://animap.id/api/kitsu/1/episodes/1
{
"kitsu_episode_id": 1,
"kitsu_id": 1,
"canonical_title": "Asteroid Blues",
"title_en_us": "Asteroid Blues",
"title_en_jp": "Asteroid Blues",
"title_ja_jp": "アステロイドブルース",
"other_titles": [],
"description": "Spike and Jet pursue a bounty on Tijuana…",
"season_number": 1,
"number": 1,
"relative_number": 1,
"airdate": "1998-04-03",
"length_minutes": 25,
"thumbnail": "https://media.kitsu.io/episodes/thumbnails/1/original.jpg",
"url": "https://kitsu.io/anime/cowboy-bebop"
}
GET/api/kitsu/{id}/episodes/raw
Stored episodes flattened to {id, …attributes}, sorted by episode ID.
Includes timestamps and full thumbnail objects. Unfetched list: 404.
curl https://animap.id/api/kitsu/1/episodes/raw
{
"kitsu_id": 1,
"episodes": [
{
"id": "1",
"canonicalTitle": "Asteroid Blues",
"titles": {
"en_us": "Asteroid Blues",
"en_jp": "Asteroid Blues",
"ja_jp": "アステロイドブルース"
},
"seasonNumber": 1,
"number": 1,
"relativeNumber": 1,
"airdate": "1998-04-03",
"length": 25,
"synopsis": "Spike and Jet pursue a bounty on Tijuana…",
"description": "Spike and Jet pursue a bounty on Tijuana…",
"createdAt": "2013-02-20T16:00:14.183Z",
"updatedAt": "2023-11-01T09:12:22.918Z",
"thumbnail": {
"original": "https://media.kitsu.io/episodes/thumbnails/1/original.jpg"
}
}
]
}
Field reference — /api/kitsu/{id}
Empty arrays are [], unless noted.
| Field | Type | Notes |
|---|---|---|
| kitsu_id | integer | Kitsu anime ID. |
| slug | string · null | Entry URL slug. |
| canonical_title | string · null | Displayed title. |
| title_en title_en_jp title_ja_jp |
string · null | English, romaji, and Japanese titles. |
| other_titles | array of strings | Titles from other locales. |
| abbreviated_titles | array of strings | Abbreviations and alternative spellings. |
| description | string · null | Plain-text synopsis. |
| subtype | string · null |
TV, movie, ONA, OVA,
special, or music.
|
| status | string · null |
finished, current, upcoming,
unreleased or tba.
|
| tba | string · null | Free-text date note, not a boolean. |
| age_rating | string · null | G, PG, R or R18. |
| age_rating_guide | string · null | Content rating explanation. |
| nsfw | boolean | Adult flag. |
| episode_count | integer · null | Episode count. |
| episode_length total_length |
integer · null | Minutes per episode and for the whole series. |
| start_date end_date |
string · null | First and last air dates, YYYY-MM-DD. |
| poster_image cover_image |
string · null | Original-size image URLs. Other sizes are in /raw. |
| youtube_video_id | string · null | YouTube trailer ID. |
| url | string | Anime entry URL, using the slug or falling back to the ID. |
| mal_id anilist_id anidb_id |
integer · null |
Kitsu’s cross-references. Missing or ambiguous mappings are null.
|
| absent | boolean | Missing upstream; the archived record remains available. Clears if the entry returns. |
| absent_at | string · null |
First observed absence, in RFC 3339 format. null when present
upstream.
|
Field reference — /api/kitsu/{id}/episodes
Shared by the episode list and single-episode routes. Only the single-episode response adds
url.
| Field | Type | Notes |
|---|---|---|
| kitsu_episode_id | integer | Globally unique episode ID; resolves only under its anime. |
| kitsu_id | integer | Kitsu anime ID. |
| canonical_title | string · null | Displayed title. |
| title_en_us title_en_jp title_ja_jp |
string · null |
English, romaji, and Japanese episode titles. Episodes use
en_us rather than en.
|
| other_titles | array of strings | Titles from other locales. |
| description | string · null | Plain-text synopsis. |
| season_number | integer · null | Kitsu’s series season number, not a broadcast season. |
| number relative_number |
integer · null |
Absolute and within-season episode numbers. May have gaps or duplicates; key on
kitsu_episode_id.
|
| airdate | string · null | First broadcast date, YYYY-MM-DD. |
| length_minutes | integer · null | Runtime in minutes. |
| thumbnail | string · null | Original-size thumbnail URL. |
| url | string | Anime entry URL. Only in the single-episode response; lists carry it at the top level. |