{"openapi":"3.0.3","info":{"title":"Tenrai API","description":"Tenrai is a free **Unofficial** public REST API for the full MyAnimeList public catalogue. Anime, manga, characters, people, producers, seasons, and more.\n\nThis API was built to satisfy the need for a more complete API, which MyAnimeList currently lacks. \n\nResponses follow the **Jikan v4 schema**, so existing applications work without modification. You can point requests at this API instead of or alongside Jikan with only a base url update necessary.\n\nPlease note that the API is in beta. There may be some issues and there will likely be some downtime here and there, but this is expected considering how new all of this is. We are doing our best to provide the best and most reliable experience possible. Thank you for being patient with us.\n\n---\n\n## Important Notes\n\nThis API does not have any user data endpoints. No club endpoints. No watch endpoints and no /forum or /userupdates for anime and manga. We may offer these endpoints in future, but for now we don't have them.\n\nSo to clarify. /users and /clubs along with /getanimeuserupdates and /getmangauserupdates are not currently available.\n\n---\n\n## JSON Notes\n\n- When a single-value field has no known value, the API returns `null`.\n- When a list or nested object has no available data, the API returns an empty structure instead.\n- Score fields use `0` as the fallback when a score has not been determined yet.\n- Date and timestamp values are normalized to ISO8601 strings in UTC.\n\n---\n\n## Auth & Rate Limits\n\n> Public requests work without credentials. Add `X-Server-Key` when you need higher throughput.\n\n| Access | Header | RPM | RPS | RPD |\n|---|---|---:|---:|---:|\n| **Public** | *(none)* | 60 | 3 | 20,000 |\n| **Server Key** | `X-Server-Key` | 300 | 5 | Unlimited |\n\n> Limits are enforced by tier. Read the response headers to track the active window and current tier.\n>\n> Current rate limits will be increased in the future.\n\n| Header | Description |\n|---|---|\n| `X-RateLimit-Limit` | Total requests allowed in the current minute window |\n| `X-RateLimit-Remaining` | Requests remaining before the limit is hit |\n| `X-RateLimit-Reset` | ISO8601 UTC timestamp when the window resets |\n| `X-RateLimit-Tier` | Your current rate limit tier (`public` or `server`) |\n\nOnce a limit is exceeded, the API returns `429 Too Many Requests`. Subsequent requests resume automatically after the window resets.\n\nRate limits for public unauthenticated requests are enforced per unique IP address.\n\n---\n\n## Server Keys\n\nServer Keys are private keys reserved for **[Patreon supporters](https://www.patreon.com/TenraiAPI)**. These keys offer significantly higher rate limits, making them ideal for large-scale data operations where you need to retrieve data at faster rates than the public API allows.\n\nAlthough referred to as \"Server Keys,\" these are standard API keys that can be used for any project, not just servers. Whether you are running local scripts, or building your own personal databases, they are compatible with any environment.\n\nPlease note that Server Key rate limits are enforced per key, not per IP. Consequently, they cannot be used in client-side applications like mobile apps.\n\nThese keys are powerful and resource intensive, we can't hand them out to everyone, hence why we limit them to Patreon supporters. With server costs currently soaring due to hardware prices, they also help fund our infrastructure costs, so we can keep this API alive and freely available to the public.\n\n---\n\n## Caching\n\nWe use a dynamic caching algorithm to manage data updates. Popular, currently airing, or newly released entries are updated more frequently, while older and less active titles are cached longer.\n\nKey metrics, such as scores, member statistics, and rankings are refreshed daily. Newly added MAL entries are typically indexed and available via the API within a few hours.\n\nBecause our caching system is complex and actively being optimized, you may occasionally encounter edge cases with stale data. If you notice any inconsistencies, please report them so we can make refinements.\n\n---\n\n## Edge Caching\n\nPlease note that we may occasionally make use of edge caching during certain scenarios or for specific endpoints, this means that you may receive an API response without the usual headers, if this happens then don't be alarmed, everything is still working as intended.\n\n---\n\n## Pagination\n\n> Listing endpoints use `page` and `limit`, and include pagination metadata so clients can move through result sets predictably.\n\n| Parameter | Behavior |\n|---|---|\n| `page` | Defaults to `1`; one-based page number |\n| `limit` | Defaults to `25`; maximum `50` results per page |\n| `pagination` | Included in listing responses with page counts and next-page state |\n\n---\n\n## Version 2\n\nVersion 1 (v1) is an interim version and is not the final version of this API. The goal of v1 is to act as a bridge between Tenrai and Jikan. Since there is no alternative/backup to Jikan, we want to make sure there is one available. \n\nVersion 2 will be the actual API we wish to release. It'll be a massive upgrade over anything currently available. \n\nWe also got a bunch of other really cool projects in the pipeline right now that we can't wait to reveal when time comes. \n\nFor updates, join our [Discord](https://discord.gg/kY6eq3qS) server.\n\n---\n\n## JSON Error Response\n\n> Non-2xx error responses use a consistent JSON envelope with a machine-readable `type`, human-readable `message`, and request `path`.\n\n```json\n{\n  \"status\": 404,\n  \"type\": \"ResourceNotFoundException\",\n  \"message\": \"Anime with ID 99999 not found.\",\n  \"error\": \"The requested resource does not exist in our database or the ID is invalid.\",\n  \"path\": \"/v1/anime/99999\"\n}\n```\n\n<table class=\"error-responses-table\">\n  <thead>\n    <tr>\n      <th>Property</th>\n      <th>Remarks</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>status</code></td>\n      <td>HTTP status code returned for the request</td>\n    </tr>\n    <tr>\n      <td><code>type</code></td>\n      <td>Machine-readable error category</td>\n    </tr>\n    <tr>\n      <td><code>message</code></td>\n      <td>Human-readable explanation of what happened</td>\n    </tr>\n    <tr>\n      <td><code>error</code></td>\n      <td>Additional context or recovery guidance</td>\n    </tr>\n    <tr>\n      <td><code>path</code></td>\n      <td>Request path that produced the error</td>\n    </tr>\n  </tbody>\n</table>\n\n---\n\n## User Data\n\nThis API only deals with public catalogue data. It does not have any endpoints for user-specific data such as profiles, animelists, or mangalists. \n\nIf you need user data, then please use the [Official MyAnimeList API](https://myanimelist.net/apiconfig/references/api/v2).\n\n---\n\n## Usage Policy\n\nAll use cases listed below should be perfectly fine:\n\n- Educational/Learning/University projects\n- Data Science/Research\n- Mobile apps/Desktop apps\n- Unofficial MAL clients/apps\n- Browser extensions/Browser scripts\n- Bots/Robots/Discord bots\n- Personal projects\n- Media server plugins/Metadata plugins\n\nHowever, please note that we don't own the data provided by the API, so we don't really have a say in what you can and can't do. \n\nIf you decide to use this API, please credit MAL as the data source somewhere within your application/project. While not strictly required, we'd also appreciate that you credit Tenrai as well, since you're using our free services to obtain the data. Exactly how you should credit is up to you to decide, we don't ask for anything specific.\n\n---\n\n## Contact\n\nTo get in touch, we recommend you [Join our Discord server](https://discord.gg/kY6eq3qS).\n\nIf it is a personal matter or you for any reason feel like you can't or don't want to take things in Discord, then you can send an email to [contact@tenrai.org](mailto:contact@tenrai.org). Please note though however that we can't guarantee a response, but we'll try our best!\n\nAny security related issues are to be sent to [security@tenrai.org](mailto:security@tenrai.org). Please don't take it in Discord.\n\n---\n\n## Disclaimer\n\nThis API is provided \"as is\" without any warranties, express or implied. We do not guarantee the accuracy, completeness, or availability of the data. Use of this service is at your own risk.\n\n**By using this API, you acknowledge that you are aware of, have read, and expressly agree to be bound by our Terms of Service.**\n\n**Tenrai and this API are not affiliated with, endorsed by, or sponsored by MyAnimeList.net or its parent companies in any way.** All MyAnimeList data is property of its respective owners.","version":"1.0.0","termsOfService":"https://tenrai.org/terms"},"components":{"securitySchemes":{"serverKey":{"type":"apiKey","name":"X-Server-Key","in":"header","description":"Private backend-only key for 300 RPM / 5 RPS throughput."}},"schemas":{}},"paths":{"anime":{"get":{"summary":"Anime Search","tags":["Anime"],"description":"Search for anime with comprehensive filters.","parameters":[{"schema":{"type":"string","minLength":3,"maxLength":200},"in":"query","name":"q","required":false,"description":"Title search query (fuzzy matched against English, Japanese, and default titles)"},{"schema":{"type":"integer","default":1,"maximum":1000},"in":"query","name":"page","required":false,"description":"Page number (default: 1)"},{"schema":{"type":"integer","default":25,"maximum":50},"in":"query","name":"limit","required":false,"description":"Results per page (default: 25, max: 50)"},{"schema":{"type":"string","enum":["tv","movie","ova","special","ona","music","cm","pv","tv_special"]},"in":"query","name":"type","required":false},{"schema":{"type":"string","enum":["airing","complete","upcoming"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","enum":["g","pg","pg13","r17","r","rplus","rx"]},"in":"query","name":"rating","required":false},{"schema":{"type":"string"},"in":"query","name":"sfw","required":false},{"schema":{"type":"string"},"in":"query","name":"unapproved","required":false},{"schema":{"type":"number"},"in":"query","name":"score","required":false},{"schema":{"type":"number"},"in":"query","name":"min_score","required":false},{"schema":{"type":"number"},"in":"query","name":"max_score","required":false},{"schema":{"type":"string"},"in":"query","name":"genres","required":false,"description":"Comma separated IDs"},{"schema":{"type":"string"},"in":"query","name":"genres_exclude","required":false,"description":"Comma separated IDs"},{"schema":{"type":"string","enum":["mal_id","title","start_date","end_date","episodes","score","scored_by","rank","popularity","members"]},"in":"query","name":"order_by","required":false},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"sort","required":false},{"schema":{"type":"string","maxLength":1},"in":"query","name":"letter","required":false},{"schema":{"type":"string"},"in":"query","name":"producers","required":false,"description":"Comma separated IDs"},{"schema":{"type":"string","format":"date"},"in":"query","name":"start_date","required":false},{"schema":{"type":"string","format":"date"},"in":"query","name":"end_date","required":false}],"responses":{"200":{"description":"Successful response returning matching anime series","content":{"application/json":{"schema":{"description":"Successful response returning matching anime series","type":"object","example":{"pagination":{"last_visible_page":1,"has_next_page":false,"current_page":1,"items":{"count":1,"total":1,"per_page":25}},"data":[{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.webp"}},"trailer":{"youtube_id":"gY5nDXOtv_o","url":"https://www.youtube.com/watch?v=gY5nDXOtv_o","embed_url":"https://www.youtube-nocookie.com/embed/gY5nDXOtv_o?enablejsapi=1&wmode=opaque&autoplay=1","images":{"image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/default.jpg","small_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/mqdefault.jpg","medium_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/hqdefault.jpg","large_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/sddefault.jpg","maximum_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/maxresdefault.jpg"}},"approved":true,"titles":[{"type":"Default","title":"Cowboy Bebop"},{"type":"Japanese","title":"カウボーイビバップ"},{"type":"English","title":"Cowboy Bebop"}],"title":"Cowboy Bebop","title_english":"Cowboy Bebop","title_japanese":"カウボーイビバップ","title_synonyms":[],"type":"TV","source":"Original","episodes":26,"status":"Finished Airing","airing":false,"aired":{"from":"1998-04-03T00:00:00+00:00","to":"1999-04-24T00:00:00+00:00","prop":{"from":{"day":3,"month":4,"year":1998},"to":{"day":24,"month":4,"year":1999}},"string":"Apr 3, 1998 to Apr 24, 1999"},"duration":"24 min per ep","rating":"R - 17+ (violence & profanity)","score":8.75,"scored_by":1064240,"rank":48,"popularity":41,"members":2062287,"favorites":89864,"synopsis":"Crime is timeless. By the year 2071, humanity has expanded across the galaxy, filling the surface of other planets with settlements like those on Earth. These new societies are plagued by murder, drug use, and theft, and intergalactic outlaws are hunted by a growing number of tough bounty hunters...","background":"When Cowboy Bebop first aired in spring of 1998 on TV Tokyo, only episodes 2-3, 7-15, and 18 were broadcast, it was concluded with a recap special known as Yose Atsume Blues...","season":"spring","year":1998,"broadcast":{"day":"Saturdays","time":"01:00","timezone":"Asia/Tokyo","string":"Saturdays at 01:00 (JST)"},"producers":[{"mal_id":23,"type":"anime","name":"Bandai Visual","url":"https://myanimelist.net/anime/producer/23/Bandai_Visual"},{"mal_id":123,"type":"anime","name":"Victor Entertainment","url":"https://myanimelist.net/anime/producer/123/Victor_Entertainment"},{"mal_id":1506,"type":"anime","name":"Audio Planning U","url":"https://myanimelist.net/anime/producer/1506/Audio_Planning_U"}],"licensors":[{"mal_id":102,"type":"anime","name":"Funimation","url":"https://myanimelist.net/anime/producer/102/Funimation"}],"studios":[{"mal_id":14,"type":"anime","name":"Sunrise","url":"https://myanimelist.net/anime/producer/14/Sunrise"}],"genres":[{"mal_id":1,"type":"anime","name":"Action","url":"https://myanimelist.net/anime/genre/1/Action"},{"mal_id":46,"type":"anime","name":"Award Winning","url":"https://myanimelist.net/anime/genre/46/Award_Winning"},{"mal_id":24,"type":"anime","name":"Sci-Fi","url":"https://myanimelist.net/anime/genre/24/Sci-Fi"}],"explicit_genres":[],"themes":[{"mal_id":50,"type":"anime","name":"Adult Cast","url":"https://myanimelist.net/anime/genre/50/Adult_Cast"},{"mal_id":29,"type":"anime","name":"Space","url":"https://myanimelist.net/anime/genre/29/Space"}],"demographics":[]}]},"properties":{"pagination":{"type":"object","description":"Standard Jikan pagination metadata showing page count, total records, and navigation state.","example":{"last_visible_page":42,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1042,"per_page":25}},"properties":{"last_visible_page":{"type":"integer","description":"The highest page number available for this query"},"has_next_page":{"type":"boolean","description":"Whether there are more results on the next page"},"current_page":{"type":"integer","description":"The current page number requested"},"items":{"type":"object","description":"Detailed item pagination counts","properties":{"count":{"type":"integer","description":"Number of records returned on the current page"},"total":{"type":"integer","description":"Total number of matching records in the database"},"per_page":{"type":"integer","description":"Maximum number of records per page"}}}}},"data":{"type":"array","items":{"type":"object","description":"Core schema representing an anime series with its main metadata.","example":{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Cowboy Bebop"},{"type":"Japanese","title":"カウボーイビバップ"}],"title":"Cowboy Bebop","title_english":"Cowboy Bebop","title_japanese":"カウボーイビバップ","title_synonyms":[],"type":"TV","source":"Original","episodes":26,"status":"Finished Airing","airing":false,"aired":{"from":"1998-04-03T00:00:00+00:00","to":"1999-04-24T00:00:00+00:00","prop":{"from":{"day":3,"month":4,"year":1998},"to":{"day":24,"month":4,"year":1999}},"string":"Apr 3, 1998 to Apr 24, 1999"},"duration":"24 min per ep","rating":"R - 17+ (violence & profanity)","score":8.75,"scored_by":980000,"rank":28,"popularity":39,"members":1900000,"favorites":95000,"synopsis":"Crime is timeless. By the year 2071, humanity has colonized several of the planets and moons of the solar system leaving the now uninhabitable surface of planet Earth behind.","background":null,"season":"spring","year":1998,"broadcast":{"day":"Saturdays","time":"01:00","timezone":"Asia/Tokyo","string":"Saturdays at 01:00 (JST)"},"producers":[{"mal_id":23,"type":"anime","name":"Bandai Visual","url":"https://myanimelist.net/anime/producer/23/Bandai_Visual"}],"licensors":[{"mal_id":102,"type":"anime","name":"Funimation","url":"https://myanimelist.net/anime/producer/102/Funimation"}],"studios":[{"mal_id":14,"type":"anime","name":"Sunrise","url":"https://myanimelist.net/anime/producer/14/Sunrise"}],"genres":[{"mal_id":1,"type":"anime","name":"Action","url":"https://myanimelist.net/anime/genre/1/Action"}],"explicit_genres":[],"themes":[{"mal_id":29,"type":"anime","name":"Space","url":"https://myanimelist.net/anime/genre/29/Space"}],"demographics":[]},"properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList catalog ID of this anime entry."},"url":{"type":"string","description":"The direct MyAnimeList catalog webpage URL of the anime."},"images":{"type":"object","description":"JPG and WebP cover image URLs in small, default, and large resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"trailer":{"type":"object","description":"YouTube trailer embedding details.","properties":{"youtube_id":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"embed_url":{"type":"string","nullable":true},"images":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"medium_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true},"maximum_image_url":{"type":"string","nullable":true}}}}},"approved":{"type":"boolean","description":"Indicates whether the entry has been officially approved by MAL moderators."},"titles":{"type":"array","description":"List of alternative titles and translations of this anime.","items":{"type":"object","properties":{"type":{"type":"string","description":"The type or language classification of the title."},"title":{"type":"string","description":"The title value."}}}},"title":{"type":"string","description":"The primary default title of the anime."},"title_english":{"type":"string","nullable":true,"description":"Official English title of the anime, if available."},"title_japanese":{"type":"string","nullable":true,"description":"Official Japanese title of the anime, if available."},"title_synonyms":{"type":"array","items":{"type":"string"},"description":"Alternative names or synonyms of the title."},"type":{"type":"string","description":"The broadcast or media type (e.g. TV, Movie, OVA, ONA, Special)."},"source":{"type":"string","description":"The source material type (e.g. Manga, Light Novel, Original)."},"episodes":{"type":"integer","nullable":true,"description":"Total episodes broadcasted (null if ongoing/not aired)."},"status":{"type":"string","description":"Airing status of the anime (e.g. Finished Airing, Currently Airing, Not yet aired)."},"airing":{"type":"boolean","description":"Whether the anime is currently broadcasting live episodes."},"aired":{"type":"object","description":"Airing dates, formatted as ISO-8601 strings, split components, and text display string.","properties":{"from":{"type":"string","nullable":true},"to":{"type":"string","nullable":true},"prop":{"type":"object","properties":{"from":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}},"to":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}}}},"string":{"type":"string","nullable":true}}},"duration":{"type":"string","nullable":true,"description":"Length per episode or total runtime of the anime."},"rating":{"type":"string","nullable":true,"description":"Age rating categorization (e.g. PG-13, R - 17+)."},"score":{"type":"number","description":"The average rating score out of 10. Returns 0 when unavailable."},"scored_by":{"type":"integer","nullable":true,"description":"Total user score count."},"rank":{"type":"integer","nullable":true,"description":"Global rank based on average score."},"popularity":{"type":"integer","nullable":true,"description":"Global popularity rank based on list members."},"members":{"type":"integer","nullable":true,"description":"Total users who have this anime added to their catalog lists."},"favorites":{"type":"integer","nullable":true,"description":"Total users who favorited this anime."},"synopsis":{"type":"string","nullable":true,"description":"Main plot summary description."},"background":{"type":"string","nullable":true,"description":"Historical or context information about the production."},"season":{"type":"string","nullable":true,"description":"Season of premier (spring, summer, fall, winter)."},"year":{"type":"integer","nullable":true,"description":"Year of premier."},"broadcast":{"type":"object","description":"Weekly broadcast schedule day, time, and timezone.","properties":{"day":{"type":"string","nullable":true},"time":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true},"string":{"type":"string","nullable":true}}},"producers":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Production companies or publishers."},"licensors":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Licensing agencies."},"studios":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Animation studios."},"genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Genre classifications."},"explicit_genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Explicit genre classifications (e.g. Hentai, Ecchi)."},"themes":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Theme classifications."},"demographics":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Demographic classifications (e.g. Shonen, Seinen)."}}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/full":{"get":{"summary":"Anime Full Details","tags":["Anime"],"description":"Get full detailed data for an anime","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning full anime details","content":{"application/json":{"schema":{"description":"Successful response returning full anime details","type":"object","properties":{"data":{"type":"object","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList catalog ID of this anime entry."},"url":{"type":"string","description":"The direct MyAnimeList catalog webpage URL of the anime."},"images":{"type":"object","description":"JPG and WebP cover image URLs in small, default, and large resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"trailer":{"type":"object","description":"YouTube trailer embedding details.","properties":{"youtube_id":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"embed_url":{"type":"string","nullable":true},"images":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"medium_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true},"maximum_image_url":{"type":"string","nullable":true}}}}},"approved":{"type":"boolean","description":"Indicates whether the entry has been officially approved by MAL moderators."},"titles":{"type":"array","description":"List of alternative titles and translations of this anime.","items":{"type":"object","properties":{"type":{"type":"string","description":"The type or language classification of the title."},"title":{"type":"string","description":"The title value."}}}},"title":{"type":"string","description":"The primary default title of the anime."},"title_english":{"type":"string","nullable":true,"description":"Official English title of the anime, if available."},"title_japanese":{"type":"string","nullable":true,"description":"Official Japanese title of the anime, if available."},"title_synonyms":{"type":"array","items":{"type":"string"},"description":"Alternative names or synonyms of the title."},"type":{"type":"string","description":"The broadcast or media type (e.g. TV, Movie, OVA, ONA, Special)."},"source":{"type":"string","description":"The source material type (e.g. Manga, Light Novel, Original)."},"episodes":{"type":"integer","nullable":true,"description":"Total episodes broadcasted (null if ongoing/not aired)."},"status":{"type":"string","description":"Airing status of the anime (e.g. Finished Airing, Currently Airing, Not yet aired)."},"airing":{"type":"boolean","description":"Whether the anime is currently broadcasting live episodes."},"aired":{"type":"object","description":"Airing dates, formatted as ISO-8601 strings, split components, and text display string.","properties":{"from":{"type":"string","nullable":true},"to":{"type":"string","nullable":true},"prop":{"type":"object","properties":{"from":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}},"to":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}}}},"string":{"type":"string","nullable":true}}},"duration":{"type":"string","nullable":true,"description":"Length per episode or total runtime of the anime."},"rating":{"type":"string","nullable":true,"description":"Age rating categorization (e.g. PG-13, R - 17+)."},"score":{"type":"number","description":"The average rating score out of 10. Returns 0 when unavailable."},"scored_by":{"type":"integer","nullable":true,"description":"Total user score count."},"rank":{"type":"integer","nullable":true,"description":"Global rank based on average score."},"popularity":{"type":"integer","nullable":true,"description":"Global popularity rank based on list members."},"members":{"type":"integer","nullable":true,"description":"Total users who have this anime added to their catalog lists."},"favorites":{"type":"integer","nullable":true,"description":"Total users who favorited this anime."},"synopsis":{"type":"string","nullable":true,"description":"Main plot summary description."},"background":{"type":"string","nullable":true,"description":"Historical or context information about the production."},"season":{"type":"string","nullable":true,"description":"Season of premier (spring, summer, fall, winter)."},"year":{"type":"integer","nullable":true,"description":"Year of premier."},"broadcast":{"type":"object","description":"Weekly broadcast schedule day, time, and timezone.","properties":{"day":{"type":"string","nullable":true},"time":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true},"string":{"type":"string","nullable":true}}},"producers":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Production companies or publishers."},"licensors":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Licensing agencies."},"studios":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Animation studios."},"genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Genre classifications."},"explicit_genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Explicit genre classifications (e.g. Hentai, Ecchi)."},"themes":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Theme classifications."},"demographics":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Demographic classifications (e.g. Shonen, Seinen)."},"relations":{"type":"array","items":{"type":"object","properties":{"relation":{"type":"string"},"entry":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"type":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"}}}}}}},"theme":{"type":"object","properties":{"openings":{"type":"array","items":{"type":"string"}},"endings":{"type":"array","items":{"type":"string"}}}},"external":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}}}},"streaming":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}}}}}}},"example":{"data":{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.webp"}},"trailer":{"youtube_id":"gY5nDXOtv_o","url":"https://www.youtube.com/watch?v=gY5nDXOtv_o","embed_url":"https://www.youtube-nocookie.com/embed/gY5nDXOtv_o?enablejsapi=1&wmode=opaque&autoplay=1","images":{"image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/default.jpg","small_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/mqdefault.jpg","medium_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/hqdefault.jpg","large_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/sddefault.jpg","maximum_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/maxresdefault.jpg"}},"approved":true,"titles":[{"type":"Default","title":"Cowboy Bebop"},{"type":"Japanese","title":"カウボーイビバップ"},{"type":"English","title":"Cowboy Bebop"}],"title":"Cowboy Bebop","title_english":"Cowboy Bebop","title_japanese":"カウボーイビバップ","title_synonyms":[],"type":"TV","source":"Original","episodes":26,"status":"Finished Airing","airing":false,"aired":{"from":"1998-04-03T00:00:00+00:00","to":"1999-04-24T00:00:00+00:00","prop":{"from":{"day":3,"month":4,"year":1998},"to":{"day":24,"month":4,"year":1999}},"string":"Apr 3, 1998 to Apr 24, 1999"},"duration":"24 min per ep","rating":"R - 17+ (violence & profanity)","score":8.75,"scored_by":1064240,"rank":48,"popularity":41,"members":2062287,"favorites":89864,"synopsis":"Crime is timeless. By the year 2071, humanity has expanded across the galaxy, filling the surface of other planets with settlements like those on Earth. These new societies are plagued by murder, drug use, and theft, and intergalactic outlaws are hunted by a growing number of tough bounty hunters...","background":"When Cowboy Bebop first aired in spring of 1998 on TV Tokyo, only episodes 2-3, 7-15, and 18 were broadcast, it was concluded with a recap special known as Yose Atsume Blues...","season":"spring","year":1998,"broadcast":{"day":"Saturdays","time":"01:00","timezone":"Asia/Tokyo","string":"Saturdays at 01:00 (JST)"},"producers":[{"mal_id":23,"type":"anime","name":"Bandai Visual","url":"https://myanimelist.net/anime/producer/23/Bandai_Visual"},{"mal_id":123,"type":"anime","name":"Victor Entertainment","url":"https://myanimelist.net/anime/producer/123/Victor_Entertainment"},{"mal_id":1506,"type":"anime","name":"Audio Planning U","url":"https://myanimelist.net/anime/producer/1506/Audio_Planning_U"}],"licensors":[{"mal_id":102,"type":"anime","name":"Funimation","url":"https://myanimelist.net/anime/producer/102/Funimation"}],"studios":[{"mal_id":14,"type":"anime","name":"Sunrise","url":"https://myanimelist.net/anime/producer/14/Sunrise"}],"genres":[{"mal_id":1,"type":"anime","name":"Action","url":"https://myanimelist.net/anime/genre/1/Action"},{"mal_id":46,"type":"anime","name":"Award Winning","url":"https://myanimelist.net/anime/genre/46/Award_Winning"},{"mal_id":24,"type":"anime","name":"Sci-Fi","url":"https://myanimelist.net/anime/genre/24/Sci-Fi"}],"explicit_genres":[],"themes":[{"mal_id":50,"type":"anime","name":"Adult Cast","url":"https://myanimelist.net/anime/genre/50/Adult_Cast"},{"mal_id":29,"type":"anime","name":"Space","url":"https://myanimelist.net/anime/genre/29/Space"}],"demographics":[],"relations":[{"relation":"Adaptation","entry":[{"mal_id":174,"type":"manga","name":"Shooting Star Bebop: Cowboy Bebop","url":"https://myanimelist.net/manga/174/Shooting_Star_Bebop__Cowboy_Bebop"},{"mal_id":173,"type":"manga","name":"Cowboy Bebop","url":"https://myanimelist.net/manga/173/Cowboy_Bebop"}]},{"relation":"Side Story","entry":[{"mal_id":5,"type":"anime","name":"Cowboy Bebop: Tengoku no Tobira","url":"https://myanimelist.net/anime/5/Cowboy_Bebop__Tengoku_no_Tobira"},{"mal_id":17205,"type":"anime","name":"Cowboy Bebop: Ein no Natsuyasumi","url":"https://myanimelist.net/anime/17205/Cowboy_Bebop__Ein_no_Natsuyasumi"}]}],"theme":{"openings":["\"Tank!\" by The Seatbelts (eps 1-25)"],"endings":["1: \"The Real Folk Blues\" by The Seatbelts feat. Mai Yamane (eps 1-12, 14-25)","2: \"Space Lion\" by The Seatbelts (eps 13)"]},"external":[{"name":"Official Site","url":"http://www.cowboy-bebop.net/"},{"name":"AniDB","url":"https://anidb.net/perl-bin/animedb.pl?show=anime&aid=23"}],"streaming":[{"name":"Crunchyroll","url":"http://www.crunchyroll.com/series-271225"},{"name":"Netflix","url":"https://www.netflix.com/title/80001305"}]}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}":{"get":{"summary":"Anime Details","tags":["Anime"],"description":"Get details for an anime","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning anime details","content":{"application/json":{"schema":{"description":"Successful response returning anime details","type":"object","properties":{"data":{"type":"object","description":"Core schema representing an anime series with its main metadata.","example":{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Cowboy Bebop"},{"type":"Japanese","title":"カウボーイビバップ"}],"title":"Cowboy Bebop","title_english":"Cowboy Bebop","title_japanese":"カウボーイビバップ","title_synonyms":[],"type":"TV","source":"Original","episodes":26,"status":"Finished Airing","airing":false,"aired":{"from":"1998-04-03T00:00:00+00:00","to":"1999-04-24T00:00:00+00:00","prop":{"from":{"day":3,"month":4,"year":1998},"to":{"day":24,"month":4,"year":1999}},"string":"Apr 3, 1998 to Apr 24, 1999"},"duration":"24 min per ep","rating":"R - 17+ (violence & profanity)","score":8.75,"scored_by":980000,"rank":28,"popularity":39,"members":1900000,"favorites":95000,"synopsis":"Crime is timeless. By the year 2071, humanity has colonized several of the planets and moons of the solar system leaving the now uninhabitable surface of planet Earth behind.","background":null,"season":"spring","year":1998,"broadcast":{"day":"Saturdays","time":"01:00","timezone":"Asia/Tokyo","string":"Saturdays at 01:00 (JST)"},"producers":[{"mal_id":23,"type":"anime","name":"Bandai Visual","url":"https://myanimelist.net/anime/producer/23/Bandai_Visual"}],"licensors":[{"mal_id":102,"type":"anime","name":"Funimation","url":"https://myanimelist.net/anime/producer/102/Funimation"}],"studios":[{"mal_id":14,"type":"anime","name":"Sunrise","url":"https://myanimelist.net/anime/producer/14/Sunrise"}],"genres":[{"mal_id":1,"type":"anime","name":"Action","url":"https://myanimelist.net/anime/genre/1/Action"}],"explicit_genres":[],"themes":[{"mal_id":29,"type":"anime","name":"Space","url":"https://myanimelist.net/anime/genre/29/Space"}],"demographics":[]},"properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList catalog ID of this anime entry."},"url":{"type":"string","description":"The direct MyAnimeList catalog webpage URL of the anime."},"images":{"type":"object","description":"JPG and WebP cover image URLs in small, default, and large resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"trailer":{"type":"object","description":"YouTube trailer embedding details.","properties":{"youtube_id":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"embed_url":{"type":"string","nullable":true},"images":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"medium_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true},"maximum_image_url":{"type":"string","nullable":true}}}}},"approved":{"type":"boolean","description":"Indicates whether the entry has been officially approved by MAL moderators."},"titles":{"type":"array","description":"List of alternative titles and translations of this anime.","items":{"type":"object","properties":{"type":{"type":"string","description":"The type or language classification of the title."},"title":{"type":"string","description":"The title value."}}}},"title":{"type":"string","description":"The primary default title of the anime."},"title_english":{"type":"string","nullable":true,"description":"Official English title of the anime, if available."},"title_japanese":{"type":"string","nullable":true,"description":"Official Japanese title of the anime, if available."},"title_synonyms":{"type":"array","items":{"type":"string"},"description":"Alternative names or synonyms of the title."},"type":{"type":"string","description":"The broadcast or media type (e.g. TV, Movie, OVA, ONA, Special)."},"source":{"type":"string","description":"The source material type (e.g. Manga, Light Novel, Original)."},"episodes":{"type":"integer","nullable":true,"description":"Total episodes broadcasted (null if ongoing/not aired)."},"status":{"type":"string","description":"Airing status of the anime (e.g. Finished Airing, Currently Airing, Not yet aired)."},"airing":{"type":"boolean","description":"Whether the anime is currently broadcasting live episodes."},"aired":{"type":"object","description":"Airing dates, formatted as ISO-8601 strings, split components, and text display string.","properties":{"from":{"type":"string","nullable":true},"to":{"type":"string","nullable":true},"prop":{"type":"object","properties":{"from":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}},"to":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}}}},"string":{"type":"string","nullable":true}}},"duration":{"type":"string","nullable":true,"description":"Length per episode or total runtime of the anime."},"rating":{"type":"string","nullable":true,"description":"Age rating categorization (e.g. PG-13, R - 17+)."},"score":{"type":"number","description":"The average rating score out of 10. Returns 0 when unavailable."},"scored_by":{"type":"integer","nullable":true,"description":"Total user score count."},"rank":{"type":"integer","nullable":true,"description":"Global rank based on average score."},"popularity":{"type":"integer","nullable":true,"description":"Global popularity rank based on list members."},"members":{"type":"integer","nullable":true,"description":"Total users who have this anime added to their catalog lists."},"favorites":{"type":"integer","nullable":true,"description":"Total users who favorited this anime."},"synopsis":{"type":"string","nullable":true,"description":"Main plot summary description."},"background":{"type":"string","nullable":true,"description":"Historical or context information about the production."},"season":{"type":"string","nullable":true,"description":"Season of premier (spring, summer, fall, winter)."},"year":{"type":"integer","nullable":true,"description":"Year of premier."},"broadcast":{"type":"object","description":"Weekly broadcast schedule day, time, and timezone.","properties":{"day":{"type":"string","nullable":true},"time":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true},"string":{"type":"string","nullable":true}}},"producers":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Production companies or publishers."},"licensors":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Licensing agencies."},"studios":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Animation studios."},"genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Genre classifications."},"explicit_genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Explicit genre classifications (e.g. Hentai, Ecchi)."},"themes":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Theme classifications."},"demographics":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Demographic classifications (e.g. Shonen, Seinen)."}}}},"example":{"data":{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.webp"}},"trailer":{"youtube_id":"gY5nDXOtv_o","url":"https://www.youtube.com/watch?v=gY5nDXOtv_o","embed_url":"https://www.youtube-nocookie.com/embed/gY5nDXOtv_o?enablejsapi=1&wmode=opaque&autoplay=1","images":{"image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/default.jpg","small_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/mqdefault.jpg","medium_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/hqdefault.jpg","large_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/sddefault.jpg","maximum_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/maxresdefault.jpg"}},"approved":true,"titles":[{"type":"Default","title":"Cowboy Bebop"},{"type":"Japanese","title":"カウボーイビバップ"},{"type":"English","title":"Cowboy Bebop"}],"title":"Cowboy Bebop","title_english":"Cowboy Bebop","title_japanese":"カウボーイビバップ","title_synonyms":[],"type":"TV","source":"Original","episodes":26,"status":"Finished Airing","airing":false,"aired":{"from":"1998-04-03T00:00:00+00:00","to":"1999-04-24T00:00:00+00:00","prop":{"from":{"day":3,"month":4,"year":1998},"to":{"day":24,"month":4,"year":1999}},"string":"Apr 3, 1998 to Apr 24, 1999"},"duration":"24 min per ep","rating":"R - 17+ (violence & profanity)","score":8.75,"scored_by":1064240,"rank":48,"popularity":41,"members":2062287,"favorites":89864,"synopsis":"Crime is timeless. By the year 2071, humanity has expanded across the galaxy, filling the surface of other planets with settlements like those on Earth. These new societies are plagued by murder, drug use, and theft, and intergalactic outlaws are hunted by a growing number of tough bounty hunters...","background":"When Cowboy Bebop first aired in spring of 1998 on TV Tokyo, only episodes 2-3, 7-15, and 18 were broadcast, it was concluded with a recap special known as Yose Atsume Blues...","season":"spring","year":1998,"broadcast":{"day":"Saturdays","time":"01:00","timezone":"Asia/Tokyo","string":"Saturdays at 01:00 (JST)"},"producers":[{"mal_id":23,"type":"anime","name":"Bandai Visual","url":"https://myanimelist.net/anime/producer/23/Bandai_Visual"},{"mal_id":123,"type":"anime","name":"Victor Entertainment","url":"https://myanimelist.net/anime/producer/123/Victor_Entertainment"},{"mal_id":1506,"type":"anime","name":"Audio Planning U","url":"https://myanimelist.net/anime/producer/1506/Audio_Planning_U"}],"licensors":[{"mal_id":102,"type":"anime","name":"Funimation","url":"https://myanimelist.net/anime/producer/102/Funimation"}],"studios":[{"mal_id":14,"type":"anime","name":"Sunrise","url":"https://myanimelist.net/anime/producer/14/Sunrise"}],"genres":[{"mal_id":1,"type":"anime","name":"Action","url":"https://myanimelist.net/anime/genre/1/Action"},{"mal_id":46,"type":"anime","name":"Award Winning","url":"https://myanimelist.net/anime/genre/46/Award_Winning"},{"mal_id":24,"type":"anime","name":"Sci-Fi","url":"https://myanimelist.net/anime/genre/24/Sci-Fi"}],"explicit_genres":[],"themes":[{"mal_id":50,"type":"anime","name":"Adult Cast","url":"https://myanimelist.net/anime/genre/50/Adult_Cast"},{"mal_id":29,"type":"anime","name":"Space","url":"https://myanimelist.net/anime/genre/29/Space"}],"demographics":[]}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/recommendations":{"get":{"summary":"Anime Recommendations","tags":["Anime"],"description":"Get recommendations for an anime","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning anime recommendations","content":{"application/json":{"schema":{"description":"Successful response returning anime recommendations","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"entry":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"title":{"type":"string"}}},"url":{"type":"string"},"votes":{"type":"integer"}}}}},"example":{"data":[{"entry":{"mal_id":205,"url":"https://myanimelist.net/anime/205/Samurai_Champloo","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/1370/135212.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/1370/135212t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/1370/135212l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/1370/135212.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/1370/135212t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/1370/135212l.webp"}},"title":"Samurai Champloo"},"url":"https://myanimelist.net/recommendations/anime/1-205","votes":38}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/characters":{"get":{"summary":"Anime Characters","tags":["Anime"],"description":"Get character list and voice actors for an anime","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning characters and voice actors","content":{"application/json":{"schema":{"description":"Successful response returning characters and voice actors","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"character":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string"}}},"webp":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string"}}}}},"name":{"type":"string"}}},"role":{"type":"string","description":"Main or Supporting"},"favorites":{"type":"integer"},"voice_actors":{"type":"array","items":{"type":"object","properties":{"person":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string"}}}}},"name":{"type":"string"}}},"language":{"type":"string"}}}}}}}},"example":{"data":[{"character":{"mal_id":3,"url":"https://myanimelist.net/character/3/Jet_Black","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/characters/11/253723.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/characters/11/253723.webp","small_image_url":"https://cdn.myanimelist.net/images/characters/11/253723t.webp"}},"name":"Black, Jet"},"role":"Main","favorites":2299,"voice_actors":[{"person":{"mal_id":357,"url":"https://myanimelist.net/people/357/Unshou_Ishizuka","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/voiceactors/2/17135.jpg"}},"name":"Ishizuka, Unshou"},"language":"Japanese"},{"person":{"mal_id":358,"url":"https://myanimelist.net/people/358/Beau_Billingslea","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/voiceactors/3/43568.jpg"}},"name":"Billingslea, Beau"},"language":"English"}]}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/staff":{"get":{"summary":"Anime Staff","tags":["Anime"],"description":"Get staff for an anime","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning anime staff","content":{"application/json":{"schema":{"description":"Successful response returning anime staff","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"person":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true}}}}},"name":{"type":"string"}}},"positions":{"type":"array","items":{"type":"string"}}}}}},"example":{"data":[{"person":{"mal_id":203,"url":"https://myanimelist.net/people/203/Justin_Cook","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/voiceactors/1/80501.jpg"}},"name":"Cook, Justin"},"positions":["Producer"]}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/episodes":{"get":{"summary":"Anime Episodes","tags":["Anime"],"description":"Get episodes for an anime","parameters":[{"schema":{"type":"integer","default":1,"minimum":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning anime episodes","content":{"application/json":{"schema":{"description":"Successful response returning anime episodes","type":"object","properties":{"pagination":{"type":"object","properties":{"last_visible_page":{"type":"integer"},"has_next_page":{"type":"boolean"}}},"data":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"title":{"type":"string"},"title_japanese":{"type":"string","nullable":true},"title_romanji":{"type":"string","nullable":true},"aired":{"type":"string","nullable":true},"score":{"type":"number"},"filler":{"type":"boolean"},"recap":{"type":"boolean"},"forum_url":{"type":"string","nullable":true}}}}},"example":{"pagination":{"last_visible_page":1,"has_next_page":false},"data":[{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop/episode/1","title":"Asteroid Blues","title_japanese":"アステロイド・ブルース","title_romanji":"Asteroid Blues ","aired":"1998-10-24T00:00:00+00:00","score":4.33,"filler":false,"recap":false,"forum_url":"https://myanimelist.net/forum/?topicid=29264"}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/news":{"get":{"summary":"Anime News","tags":["Anime"],"description":"Get a list of news articles related to the anime entry","parameters":[{"schema":{"type":"integer","default":1,"minimum":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning anime news","content":{"application/json":{"schema":{"description":"Successful response returning anime news","type":"object","properties":{"pagination":{"type":"object","properties":{"last_visible_page":{"type":"integer"},"has_next_page":{"type":"boolean"}}},"data":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer","description":"MyAnimeList ID"},"url":{"type":"string","description":"MyAnimeList URL"},"title":{"type":"string","description":"Title"},"date":{"type":"string","nullable":true,"description":"Post Date ISO8601"},"author_username":{"type":"string","description":"Author MyAnimeList Username"},"author_url":{"type":"string","description":"Author Profile URL"},"forum_url":{"type":"string","nullable":true,"description":"Forum topic URL"},"images":{"type":"object","description":"Available images","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true,"description":"Image URL JPG"}}}}},"comments":{"type":"integer","description":"Comment count"},"excerpt":{"type":"string","description":"Excerpt"}}}}},"example":{"pagination":{"last_visible_page":1,"has_next_page":false},"data":[{"mal_id":69976885,"url":"https://myanimelist.net/news/69976885","title":"North American Anime & Manga Releases for October","date":"2023-10-10T06:34:00+00:00","author_username":"Aiimee","author_url":"https://myanimelist.net/profile/Aiimee","forum_url":"https://myanimelist.net/forum/?topicid=2122591","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/s/common/uploaded_files/1696941276-e051d08e05dbd146c5da78350b374d01.jpeg"}},"comments":0,"excerpt":"Here are the North American anime, manga, and light novel releases for October. Week 1: October 3 - 9 Anime Releases Cowboy Bebop Complete Series Blu-ray [SteelBook ..."}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/episodes/{episode_id}":{"get":{"summary":"Anime Episode by ID","tags":["Anime"],"description":"Get detail for a specific anime episode","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"},{"schema":{"type":"integer","default":1},"in":"path","name":"episode_id","required":true,"description":"The MAL Episode ID"}],"responses":{"200":{"description":"Successful response returning anime episode detail","content":{"application/json":{"schema":{"description":"Successful response returning anime episode detail","type":"object","properties":{"data":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"title":{"type":"string"},"title_japanese":{"type":"string","nullable":true},"title_romanji":{"type":"string","nullable":true},"synopsis":{"type":"string","nullable":true},"duration":{"type":"integer","nullable":true},"aired":{"type":"string","nullable":true},"filler":{"type":"boolean"},"recap":{"type":"boolean"}}}},"example":{"data":{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop/episode/1","title":"Asteroid Blues","title_japanese":"アステロイド・ブルース","title_romanji":"Asteroid Blues","duration":1440,"aired":"1998-10-24T00:00:00+00:00","filler":false,"recap":false,"synopsis":"Bounty hunters Spike Spiegel and Jet Black head to the Tijuana asteroid colony to track down Asimov Solensan, a syndicate member who stole a cache of the dangerous combat drug Bloody Eye."}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/videos":{"get":{"summary":"Anime Videos","tags":["Anime"],"description":"Get videos for an anime","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning anime videos","content":{"application/json":{"schema":{"description":"Successful response returning anime videos","type":"object","properties":{"data":{"type":"object","properties":{"promo":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"trailer":{"type":"object","properties":{"youtube_id":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"embed_url":{"type":"string","nullable":true},"images":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"medium_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true},"maximum_image_url":{"type":"string","nullable":true}}}}}}}},"episodes":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"title":{"type":"string"},"episode":{"type":"string"},"url":{"type":"string"},"images":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true}}}}}}}},"music_videos":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"video":{"type":"object","properties":{"youtube_id":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"embed_url":{"type":"string","nullable":true},"images":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"medium_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true},"maximum_image_url":{"type":"string","nullable":true}}}}},"meta":{"type":"object","properties":{"title":{"type":"string","nullable":true},"author":{"type":"string","nullable":true}}}}}}}}},"example":{"data":{"promo":[{"title":"PV 1 English dub version","trailer":{"youtube_id":"gY5nDXOtv_o","url":"https://www.youtube.com/watch?v=gY5nDXOtv_o","embed_url":"https://www.youtube-nocookie.com/embed/gY5nDXOtv_o?enablejsapi=1&wmode=opaque&autoplay=1","images":{"image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/default.jpg","small_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/mqdefault.jpg","medium_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/hqdefault.jpg","large_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/sddefault.jpg","maximum_image_url":"https://img.youtube.com/vi/gY5nDXOtv_o/maxresdefault.jpg"}}}],"episodes":[{"mal_id":26,"title":"The Real Folk Blues (part 2)","episode":"Episode 26","url":"https://myanimelist.net/anime/1/Cowboy_Bebop/episode/26","images":{"jpg":{"image_url":"https://img1.ak.crunchyroll.com/i/spire1-tmb/191b230426f0b0e6568b4ca6edab47321473136587_large.jpg"}}}],"music_videos":[]}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/videos/episodes":{"get":{"summary":"Anime Episode Videos","tags":["Anime"],"description":"Get episode videos for an anime","parameters":[{"schema":{"type":"integer","default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning anime episode videos","content":{"application/json":{"schema":{"description":"Successful response returning anime episode videos","type":"object","properties":{"pagination":{"type":"object","properties":{"last_visible_page":{"type":"integer"},"has_next_page":{"type":"boolean"}}},"data":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"title":{"type":"string"},"episode":{"type":"string"},"url":{"type":"string"},"images":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string"}}}}}}}}},"example":{"pagination":{"last_visible_page":1,"has_next_page":false},"data":[{"mal_id":26,"title":"The Real Folk Blues (part 2)","episode":"Episode 26","url":"https://myanimelist.net/anime/1/Cowboy_Bebop/episode/26","images":{"jpg":{"image_url":"https://img1.ak.crunchyroll.com/i/spire1-tmb/191b230426f0b0e6568b4ca6edab47321473136587_large.jpg"}}}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/pictures":{"get":{"summary":"Anime Pictures","tags":["Anime"],"description":"Get pictures for an anime","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning anime pictures","content":{"application/json":{"schema":{"description":"Successful response returning anime pictures","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}}}},"example":{"data":[{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/7/3791.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/7/3791t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/7/3791l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/7/3791.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/7/3791t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/7/3791l.webp"}}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/statistics":{"get":{"summary":"Anime Statistics","tags":["Anime"],"description":"Get statistics for an anime","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning anime statistics","content":{"application/json":{"schema":{"description":"Successful response returning anime statistics","type":"object","properties":{"data":{"type":"object","properties":{"watching":{"type":"integer"},"completed":{"type":"integer"},"on_hold":{"type":"integer"},"dropped":{"type":"integer"},"plan_to_watch":{"type":"integer"},"total":{"type":"integer"},"scores":{"type":"array","items":{"type":"object","properties":{"score":{"type":"integer"},"votes":{"type":"integer"},"percentage":{"type":"number"}}}}}}},"example":{"data":{"watching":189894,"completed":1197889,"on_hold":116790,"dropped":49531,"plan_to_watch":508053,"total":2062157,"scores":[{"score":10,"votes":368094,"percentage":34.6},{"score":9,"votes":300177,"percentage":28.2},{"score":8,"votes":226078,"percentage":21.2}]}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/moreinfo":{"get":{"summary":"Anime More Info","tags":["Anime"],"description":"Get more information for an anime","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning more info","content":{"application/json":{"schema":{"description":"Successful response returning more info","type":"object","properties":{"data":{"type":"object","properties":{"moreinfo":{"type":"string","nullable":true}}}},"example":{"data":{"moreinfo":"Suggested Order of Viewing 1. TV Series (26 episodes) 2. Movie (takes place between episodes 22 and 23)"}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/relations":{"get":{"summary":"Anime Relations","tags":["Anime"],"description":"Get relations for an anime","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning anime relations","content":{"application/json":{"schema":{"description":"Successful response returning anime relations","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"relation":{"type":"string"},"entry":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"type":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"}}}}}}}},"example":{"data":[{"relation":"Adaptation","entry":[{"mal_id":174,"type":"manga","name":"Shooting Star Bebop: Cowboy Bebop","url":"https://myanimelist.net/manga/174/Shooting_Star_Bebop__Cowboy_Bebop"}]}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/themes":{"get":{"summary":"Anime Themes","tags":["Anime"],"description":"Get opening and ending themes for an anime","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning anime themes","content":{"application/json":{"schema":{"description":"Successful response returning anime themes","type":"object","properties":{"data":{"type":"object","properties":{"openings":{"type":"array","items":{"type":"string"}},"endings":{"type":"array","items":{"type":"string"}}}}},"example":{"data":{"openings":["\"Tank!\" by The Seatbelts (eps 1-25)"],"endings":["1: \"The Real Folk Blues\" by The Seatbelts feat. Mai Yamane (eps 1-12, 14-25)"]}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/external":{"get":{"summary":"Anime External Links","tags":["Anime"],"description":"Get external links for an anime","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning external links","content":{"application/json":{"schema":{"description":"Successful response returning external links","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}}}}},"example":{"data":[{"name":"Official Site","url":"http://www.cowboy-bebop.net/"}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/streaming":{"get":{"summary":"Anime Streaming Links","tags":["Anime"],"description":"Get streaming links for an anime","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning streaming links","content":{"application/json":{"schema":{"description":"Successful response returning streaming links","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}}}}},"example":{"data":[{"name":"Crunchyroll","url":"http://www.crunchyroll.com/series-271225"}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/{id}/reviews":{"get":{"summary":"Anime Reviews","tags":["Anime"],"description":"Get reviews for an anime","parameters":[{"schema":{"type":"integer","default":1,"minimum":1},"in":"query","name":"page","required":false},{"schema":{"type":"string","enum":["newest","oldest","most_helpful"],"default":"most_helpful"},"in":"query","name":"sort","required":false,"description":"Sort by newest or most helpful"},{"schema":{"type":"string","enum":["true","false","only"]},"in":"query","name":"preliminary","required":false,"description":"Filter preliminary reviews (true = include, false = exclude, only = exclusive)"},{"schema":{"type":"string","enum":["true","false","only"]},"in":"query","name":"spoilers","required":false,"description":"Filter spoiler reviews (true = include, false = exclude, only = exclusive)"},{"schema":{"type":"string","enum":["recommended","mixed_feelings","not_recommended"]},"in":"query","name":"sentiment","required":false,"description":"Filter by review sentiment"},{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Anime ID"}],"responses":{"200":{"description":"Successful response returning anime reviews","content":{"application/json":{"schema":{"description":"Successful response returning anime reviews","type":"object","properties":{"pagination":{"type":"object","properties":{"last_visible_page":{"type":"integer"},"has_next_page":{"type":"boolean"}}},"data":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"type":{"type":"string"},"reactions":{"type":"object","additionalProperties":true},"date":{"type":"string","nullable":true},"review":{"type":"string","nullable":true},"score":{"type":"integer"},"tags":{"type":"array","items":{"type":"string"}},"is_spoiler":{"type":"boolean"},"is_preliminary":{"type":"boolean"},"episodes_watched":{"type":"integer","nullable":true},"user":{"type":"object","properties":{"username":{"type":"string"},"url":{"type":"string"},"images":{"type":"object","additionalProperties":true}}}}}}},"example":{"pagination":{"last_visible_page":1,"has_next_page":false},"data":[{"mal_id":7406,"url":"https://myanimelist.net/reviews.php?id=7406","type":"anime","reactions":{"overall":2283,"nice":2226,"love_it":25,"funny":7,"confusing":2,"informative":7,"well_written":15,"creative":1},"date":"2008-08-24T05:46:00+00:00","review":"People who know me know that I'm not a fan of episodic anime series unless they're either one season (12-14 episodes) long or a slice of life series. Why? They have a tendency to get boring, or repetitive. But all rules and preferences have exceptions...","score":10,"tags":["Recommended"],"is_spoiler":false,"is_preliminary":false,"episodes_watched":26,"user":{"url":"https://myanimelist.net/profile/TheLlama","username":"TheLlama","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/s/common/userimages/35fb5f95-6a86-498b-93a5-fcff7f402bc2_225w?s=0a831e2782dd9f3d15a987a6c3b6a9db"}}}}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"anime/ids":{"get":{"summary":"Get All Anime IDs","tags":["Anime"],"description":"Retrieve all unique MAL anime IDs that currently exist and are active","responses":{"200":{"description":"Successful response returning all unique anime IDs","content":{"application/json":{"schema":{"description":"Successful response returning all unique anime IDs","type":"object","example":{"data":[1,5,6,7,8,15,16,17,18,19,20,21,22,23,24,25,26,27]},"properties":{"data":{"type":"array","items":{"type":"integer"}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"401":{"description":"Unauthorized - Server Key is required","content":{"application/json":{"schema":{"description":"Unauthorized - Server Key is required","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":401},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"UnauthorizedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Server Key is required for this endpoint."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"manga":{"get":{"summary":"Manga Search","tags":["Manga"],"description":"Search for manga with comprehensive filters.","parameters":[{"schema":{"type":"string","minLength":3,"maxLength":200},"in":"query","name":"q","required":false,"description":"Title search query"},{"schema":{"type":"integer","default":1,"maximum":1000},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":25,"maximum":50},"in":"query","name":"limit","required":false},{"schema":{"type":"string","enum":["manga","novel","lightnovel","oneshot","doujin","manhwa","manhua"]},"in":"query","name":"type","required":false},{"schema":{"type":"string","enum":["publishing","complete","upcoming","discontinued","hiatus"]},"in":"query","name":"status","required":false},{"schema":{"type":"string"},"in":"query","name":"sfw","required":false},{"schema":{"type":"number"},"in":"query","name":"score","required":false},{"schema":{"type":"number"},"in":"query","name":"min_score","required":false},{"schema":{"type":"number"},"in":"query","name":"max_score","required":false},{"schema":{"type":"string"},"in":"query","name":"genres","required":false,"description":"Comma separated IDs"},{"schema":{"type":"string"},"in":"query","name":"genres_exclude","required":false,"description":"Comma separated IDs"},{"schema":{"type":"string","enum":["mal_id","title","start_date","end_date","chapters","volumes","score","scored_by","rank","popularity","members","favorites"]},"in":"query","name":"order_by","required":false},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"sort","required":false},{"schema":{"type":"string","maxLength":1},"in":"query","name":"letter","required":false},{"schema":{"type":"string"},"in":"query","name":"magazines","required":false,"description":"Comma separated IDs"},{"schema":{"type":"string","format":"date"},"in":"query","name":"start_date","required":false},{"schema":{"type":"string","format":"date"},"in":"query","name":"end_date","required":false}],"responses":{"200":{"description":"Successful response returning matching manga","content":{"application/json":{"schema":{"description":"Successful response returning matching manga","type":"object","example":{"pagination":{"last_visible_page":6,"has_next_page":true,"current_page":1,"items":{"count":1,"total":133,"per_page":25}},"data":[{"mal_id":1,"url":"https://myanimelist.net/manga/1/Monster","images":{"jpg":{"image_url":"https://myanimelist.net/images/manga/3/258224.jpg","small_image_url":"https://myanimelist.net/images/manga/3/258224t.jpg","large_image_url":"https://myanimelist.net/images/manga/3/258224l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/manga/3/258224.webp","small_image_url":"https://myanimelist.net/images/manga/3/258224t.webp","large_image_url":"https://myanimelist.net/images/manga/3/258224l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Monster"},{"type":"Japanese","title":"MONSTER"},{"type":"English","title":"Monster"}],"title":"Monster","title_english":"Monster","title_japanese":"MONSTER","title_synonyms":[],"type":"Manga","chapters":162,"volumes":18,"status":"Finished","publishing":false,"published":{"from":"1994-12-05T00:00:00+00:00","to":"2001-12-20T00:00:00+00:00","prop":{"from":{"day":5,"month":12,"year":1994},"to":{"day":20,"month":12,"year":2001}},"string":"Dec 5, 1994 to Dec 20, 2001"},"score":9.16,"scored":9.16,"scored_by":117158,"rank":6,"popularity":27,"members":290591,"favorites":23835,"synopsis":"Kenzou Tenma, a renowned Japanese neurosurgeon working in post-war Germany, faces a difficult choice: to operate on Johan Liebert, an orphan boy on the verge of death, or on the mayor of Düsseldorf. In the end, Tenma decides to gamble his reputation by saving Johan...","background":"Monster won the Grand Prize at the third Tezuka Osamu Cultural Prize in 1999, as well as the 46th Shogakukan Manga Award in the General category in 2000...","authors":[{"mal_id":1867,"type":"people","name":"Urasawa, Naoki","url":"https://myanimelist.net/people/1867/Naoki_Urasawa","role":"Story & Art"}],"serializations":[{"mal_id":1,"type":"manga","name":"Big Comic Original","url":"https://myanimelist.net/manga/magazine/1/Big_Comic_Original"}],"genres":[{"mal_id":46,"type":"manga","name":"Award Winning","url":"https://myanimelist.net/manga/genre/46/Award_Winning"},{"mal_id":8,"type":"manga","name":"Drama","url":"https://myanimelist.net/manga/genre/8/Drama"},{"mal_id":7,"type":"manga","name":"Mystery","url":"https://myanimelist.net/manga/genre/7/Mystery"}],"explicit_genres":[],"themes":[{"mal_id":50,"type":"manga","name":"Adult Cast","url":"https://myanimelist.net/manga/genre/50/Adult_Cast"},{"mal_id":40,"type":"manga","name":"Psychological","url":"https://myanimelist.net/manga/genre/40/Psychological"}],"demographics":[{"mal_id":41,"type":"manga","name":"Seinen","url":"https://myanimelist.net/manga/genre/41/Seinen"}]}]},"properties":{"pagination":{"type":"object","description":"Standard Jikan pagination metadata showing page count, total records, and navigation state.","example":{"last_visible_page":42,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1042,"per_page":25}},"properties":{"last_visible_page":{"type":"integer","description":"The highest page number available for this query"},"has_next_page":{"type":"boolean","description":"Whether there are more results on the next page"},"current_page":{"type":"integer","description":"The current page number requested"},"items":{"type":"object","description":"Detailed item pagination counts","properties":{"count":{"type":"integer","description":"Number of records returned on the current page"},"total":{"type":"integer","description":"Total number of matching records in the database"},"per_page":{"type":"integer","description":"Maximum number of records per page"}}}}},"data":{"type":"array","items":{"type":"object","description":"Core schema representing a manga series with its main metadata.","example":{"mal_id":2,"url":"https://myanimelist.net/manga/2/Berserk","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/manga/1/157896.jpg","small_image_url":"https://cdn.myanimelist.net/images/manga/1/157896t.jpg","large_image_url":"https://cdn.myanimelist.net/images/manga/1/157896l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/manga/1/157896.webp","small_image_url":"https://cdn.myanimelist.net/images/manga/1/157896t.webp","large_image_url":"https://cdn.myanimelist.net/images/manga/1/157896l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Berserk"},{"type":"Japanese","title":"ベルセルク"}],"title":"Berserk","title_english":"Berserk","title_japanese":"ベルセルク","title_synonyms":[],"type":"Manga","chapters":364,"volumes":41,"status":"Publishing","publishing":true,"published":{"from":"1989-08-25T00:00:00+00:00","to":null,"prop":{"from":{"day":25,"month":8,"year":1989},"to":{"day":null,"month":null,"year":null}},"string":"Aug 25, 1989 to Present"},"score":9.47,"scored":9.47,"scored_by":320000,"rank":1,"popularity":2,"members":640000,"favorites":120000,"synopsis":"Guts, a former mercenary now known as the 'Black Swordsman,' is out for revenge.","background":"Berserk won the Award for Excellence at the sixth installment of the Tezuka Osamu Cultural Prize in 2002.","authors":[{"mal_id":1868,"type":"people","name":"Miura, Kentarou","url":"https://myanimelist.net/people/1868/Kentarou_Miura","role":"Story & Art"},{"mal_id":49592,"type":"people","name":"Studio Gaga","url":"https://myanimelist.net/people/49592/Studio_Gaga","role":"Art"}],"serializations":[{"mal_id":2,"type":"manga","name":"Young Animal","url":"https://myanimelist.net/manga/magazine/2/Young_Animal"}],"genres":[{"mal_id":1,"type":"manga","name":"Action","url":"https://myanimelist.net/manga/genre/1/Action"}],"explicit_genres":[],"themes":[{"mal_id":58,"type":"manga","name":"Gore","url":"https://myanimelist.net/manga/genre/58/Gore"}],"demographics":[{"mal_id":41,"type":"manga","name":"Seinen","url":"https://myanimelist.net/manga/genre/41/Seinen"}]},"properties":{"mal_id":{"type":"integer","description":"The MyAnimeList catalog ID of this manga entry."},"url":{"type":"string","description":"The MyAnimeList catalog webpage URL of the manga."},"images":{"type":"object","description":"JPG and WebP cover image URLs in small, default, and large resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"approved":{"type":"boolean","description":"Indicates whether the entry has been officially approved by MAL moderators."},"titles":{"type":"array","description":"List of alternative titles and translations of this manga.","items":{"type":"object","properties":{"type":{"type":"string","description":"The language/type classification of this title."},"title":{"type":"string","description":"The title value."}}}},"title":{"type":"string","description":"The primary default title of the manga."},"title_english":{"type":"string","nullable":true,"description":"Official English title of the manga, if available."},"title_japanese":{"type":"string","nullable":true,"description":"Official Japanese title of the manga, if available."},"title_synonyms":{"type":"array","items":{"type":"string"},"description":"Alternative names or synonyms of the title."},"type":{"type":"string","description":"The publication format (e.g. Manga, Novel, Light Novel, One-shot)."},"chapters":{"type":"integer","nullable":true,"description":"Total chapters published (null if ongoing)."},"volumes":{"type":"integer","nullable":true,"description":"Total volumes published (null if ongoing)."},"status":{"type":"string","description":"Publishing status of the manga (e.g. Publishing, Finished, On Hiatus)."},"publishing":{"type":"boolean","description":"Whether the manga is currently in active serialization."},"published":{"type":"object","description":"Publication date details, including dates in ISO-8601 formatting, split components, and text display string.","properties":{"from":{"type":"string","nullable":true},"to":{"type":"string","nullable":true},"prop":{"type":"object","properties":{"from":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}},"to":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}}}},"string":{"type":"string","nullable":true}}},"score":{"type":"number","description":"The average rating score out of 10. Returns 0 when unavailable."},"scored":{"type":"number","description":"Duplicate score field included for Jikan v4 compatibility. Returns 0 when unavailable."},"scored_by":{"type":"integer","nullable":true,"description":"The count of users who have rated the manga."},"rank":{"type":"integer","nullable":true,"description":"Global rank of the manga based on average score."},"popularity":{"type":"integer","nullable":true,"description":"Global popularity rank based on list additions."},"members":{"type":"integer","nullable":true,"description":"Total number of users who have added this manga to their list."},"favorites":{"type":"integer","nullable":true,"description":"Total number of users who have favorited this manga."},"synopsis":{"type":"string","nullable":true,"description":"A description or synopsis of the manga storyline."},"background":{"type":"string","nullable":true,"description":"Historical, publication or marketing background context."},"authors":{"type":"array","items":{"type":"object","description":"A reference to a manga author or artist, including their credited role.","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the person."},"type":{"type":"string","description":"The type of the catalog item (always 'people')."},"name":{"type":"string","description":"The name of the author or artist."},"url":{"type":"string","description":"The MyAnimeList website link for this person."},"role":{"type":"string","nullable":true,"description":"The credited role of the person (e.g., 'Story', 'Art', 'Story & Art')."}}},"description":"Authors and artists credited for the manga, including their role (Story, Art, or Story & Art)."},"serializations":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Publications or magazines where the manga was serialized."},"genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Genre classifications of the manga."},"explicit_genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Explicit genre classifications (e.g. Hentai, Ecchi)."},"themes":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Theme classifications."},"demographics":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Demographic classifications (e.g. Shonen, Seinen, Shojo)."}}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"manga/{id}":{"get":{"summary":"Manga Details","tags":["Manga"],"description":"Get details for a manga","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Manga ID"}],"responses":{"200":{"description":"Successful response returning manga details","content":{"application/json":{"schema":{"description":"Successful response returning manga details","type":"object","example":{"data":{"mal_id":1,"url":"https://myanimelist.net/manga/1/Monster","images":{"jpg":{"image_url":"https://myanimelist.net/images/manga/3/258224.jpg","small_image_url":"https://myanimelist.net/images/manga/3/258224t.jpg","large_image_url":"https://myanimelist.net/images/manga/3/258224l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/manga/3/258224.webp","small_image_url":"https://myanimelist.net/images/manga/3/258224t.webp","large_image_url":"https://myanimelist.net/images/manga/3/258224l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Monster"},{"type":"Japanese","title":"MONSTER"},{"type":"English","title":"Monster"}],"title":"Monster","title_english":"Monster","title_japanese":"MONSTER","title_synonyms":[],"type":"Manga","chapters":162,"volumes":18,"status":"Finished","publishing":false,"published":{"from":"1994-12-05T00:00:00+00:00","to":"2001-12-20T00:00:00+00:00","prop":{"from":{"day":5,"month":12,"year":1994},"to":{"day":20,"month":12,"year":2001}},"string":"Dec 5, 1994 to Dec 20, 2001"},"score":9.16,"scored":9.16,"scored_by":117158,"rank":6,"popularity":27,"members":290591,"favorites":23835,"synopsis":"Kenzou Tenma, a renowned Japanese neurosurgeon working in post-war Germany, faces a difficult choice: to operate on Johan Liebert, an orphan boy on the verge of death, or on the mayor of Düsseldorf. In the end, Tenma decides to gamble his reputation by saving Johan...","background":"Monster won the Grand Prize at the third Tezuka Osamu Cultural Prize in 1999, as well as the 46th Shogakukan Manga Award in the General category in 2000...","authors":[{"mal_id":1867,"type":"people","name":"Urasawa, Naoki","url":"https://myanimelist.net/people/1867/Naoki_Urasawa","role":"Story & Art"}],"serializations":[{"mal_id":1,"type":"manga","name":"Big Comic Original","url":"https://myanimelist.net/manga/magazine/1/Big_Comic_Original"}],"genres":[{"mal_id":46,"type":"manga","name":"Award Winning","url":"https://myanimelist.net/manga/genre/46/Award_Winning"},{"mal_id":8,"type":"manga","name":"Drama","url":"https://myanimelist.net/manga/genre/8/Drama"},{"mal_id":7,"type":"manga","name":"Mystery","url":"https://myanimelist.net/manga/genre/7/Mystery"}],"explicit_genres":[],"themes":[{"mal_id":50,"type":"manga","name":"Adult Cast","url":"https://myanimelist.net/manga/genre/50/Adult_Cast"},{"mal_id":40,"type":"manga","name":"Psychological","url":"https://myanimelist.net/manga/genre/40/Psychological"}],"demographics":[{"mal_id":41,"type":"manga","name":"Seinen","url":"https://myanimelist.net/manga/genre/41/Seinen"}]}},"properties":{"data":{"type":"object","description":"Core schema representing a manga series with its main metadata.","example":{"mal_id":2,"url":"https://myanimelist.net/manga/2/Berserk","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/manga/1/157896.jpg","small_image_url":"https://cdn.myanimelist.net/images/manga/1/157896t.jpg","large_image_url":"https://cdn.myanimelist.net/images/manga/1/157896l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/manga/1/157896.webp","small_image_url":"https://cdn.myanimelist.net/images/manga/1/157896t.webp","large_image_url":"https://cdn.myanimelist.net/images/manga/1/157896l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Berserk"},{"type":"Japanese","title":"ベルセルク"}],"title":"Berserk","title_english":"Berserk","title_japanese":"ベルセルク","title_synonyms":[],"type":"Manga","chapters":364,"volumes":41,"status":"Publishing","publishing":true,"published":{"from":"1989-08-25T00:00:00+00:00","to":null,"prop":{"from":{"day":25,"month":8,"year":1989},"to":{"day":null,"month":null,"year":null}},"string":"Aug 25, 1989 to Present"},"score":9.47,"scored":9.47,"scored_by":320000,"rank":1,"popularity":2,"members":640000,"favorites":120000,"synopsis":"Guts, a former mercenary now known as the 'Black Swordsman,' is out for revenge.","background":"Berserk won the Award for Excellence at the sixth installment of the Tezuka Osamu Cultural Prize in 2002.","authors":[{"mal_id":1868,"type":"people","name":"Miura, Kentarou","url":"https://myanimelist.net/people/1868/Kentarou_Miura","role":"Story & Art"},{"mal_id":49592,"type":"people","name":"Studio Gaga","url":"https://myanimelist.net/people/49592/Studio_Gaga","role":"Art"}],"serializations":[{"mal_id":2,"type":"manga","name":"Young Animal","url":"https://myanimelist.net/manga/magazine/2/Young_Animal"}],"genres":[{"mal_id":1,"type":"manga","name":"Action","url":"https://myanimelist.net/manga/genre/1/Action"}],"explicit_genres":[],"themes":[{"mal_id":58,"type":"manga","name":"Gore","url":"https://myanimelist.net/manga/genre/58/Gore"}],"demographics":[{"mal_id":41,"type":"manga","name":"Seinen","url":"https://myanimelist.net/manga/genre/41/Seinen"}]},"properties":{"mal_id":{"type":"integer","description":"The MyAnimeList catalog ID of this manga entry."},"url":{"type":"string","description":"The MyAnimeList catalog webpage URL of the manga."},"images":{"type":"object","description":"JPG and WebP cover image URLs in small, default, and large resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"approved":{"type":"boolean","description":"Indicates whether the entry has been officially approved by MAL moderators."},"titles":{"type":"array","description":"List of alternative titles and translations of this manga.","items":{"type":"object","properties":{"type":{"type":"string","description":"The language/type classification of this title."},"title":{"type":"string","description":"The title value."}}}},"title":{"type":"string","description":"The primary default title of the manga."},"title_english":{"type":"string","nullable":true,"description":"Official English title of the manga, if available."},"title_japanese":{"type":"string","nullable":true,"description":"Official Japanese title of the manga, if available."},"title_synonyms":{"type":"array","items":{"type":"string"},"description":"Alternative names or synonyms of the title."},"type":{"type":"string","description":"The publication format (e.g. Manga, Novel, Light Novel, One-shot)."},"chapters":{"type":"integer","nullable":true,"description":"Total chapters published (null if ongoing)."},"volumes":{"type":"integer","nullable":true,"description":"Total volumes published (null if ongoing)."},"status":{"type":"string","description":"Publishing status of the manga (e.g. Publishing, Finished, On Hiatus)."},"publishing":{"type":"boolean","description":"Whether the manga is currently in active serialization."},"published":{"type":"object","description":"Publication date details, including dates in ISO-8601 formatting, split components, and text display string.","properties":{"from":{"type":"string","nullable":true},"to":{"type":"string","nullable":true},"prop":{"type":"object","properties":{"from":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}},"to":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}}}},"string":{"type":"string","nullable":true}}},"score":{"type":"number","description":"The average rating score out of 10. Returns 0 when unavailable."},"scored":{"type":"number","description":"Duplicate score field included for Jikan v4 compatibility. Returns 0 when unavailable."},"scored_by":{"type":"integer","nullable":true,"description":"The count of users who have rated the manga."},"rank":{"type":"integer","nullable":true,"description":"Global rank of the manga based on average score."},"popularity":{"type":"integer","nullable":true,"description":"Global popularity rank based on list additions."},"members":{"type":"integer","nullable":true,"description":"Total number of users who have added this manga to their list."},"favorites":{"type":"integer","nullable":true,"description":"Total number of users who have favorited this manga."},"synopsis":{"type":"string","nullable":true,"description":"A description or synopsis of the manga storyline."},"background":{"type":"string","nullable":true,"description":"Historical, publication or marketing background context."},"authors":{"type":"array","items":{"type":"object","description":"A reference to a manga author or artist, including their credited role.","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the person."},"type":{"type":"string","description":"The type of the catalog item (always 'people')."},"name":{"type":"string","description":"The name of the author or artist."},"url":{"type":"string","description":"The MyAnimeList website link for this person."},"role":{"type":"string","nullable":true,"description":"The credited role of the person (e.g., 'Story', 'Art', 'Story & Art')."}}},"description":"Authors and artists credited for the manga, including their role (Story, Art, or Story & Art)."},"serializations":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Publications or magazines where the manga was serialized."},"genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Genre classifications of the manga."},"explicit_genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Explicit genre classifications (e.g. Hentai, Ecchi)."},"themes":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Theme classifications."},"demographics":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Demographic classifications (e.g. Shonen, Seinen, Shojo)."}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"manga/{id}/full":{"get":{"summary":"Manga Full Details","tags":["Manga"],"description":"Get full detailed data for a manga including relations and external links","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Manga ID"}],"responses":{"200":{"description":"Successful response returning full manga details","content":{"application/json":{"schema":{"description":"Successful response returning full manga details","type":"object","example":{"data":{"mal_id":1,"url":"https://myanimelist.net/manga/1/Monster","images":{"jpg":{"image_url":"https://myanimelist.net/images/manga/3/258224.jpg","small_image_url":"https://myanimelist.net/images/manga/3/258224t.jpg","large_image_url":"https://myanimelist.net/images/manga/3/258224l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/manga/3/258224.webp","small_image_url":"https://myanimelist.net/images/manga/3/258224t.webp","large_image_url":"https://myanimelist.net/images/manga/3/258224l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Monster"},{"type":"Japanese","title":"MONSTER"},{"type":"English","title":"Monster"}],"title":"Monster","title_english":"Monster","title_japanese":"MONSTER","title_synonyms":[],"type":"Manga","chapters":162,"volumes":18,"status":"Finished","publishing":false,"published":{"from":"1994-12-05T00:00:00+00:00","to":"2001-12-20T00:00:00+00:00","prop":{"from":{"day":5,"month":12,"year":1994},"to":{"day":20,"month":12,"year":2001}},"string":"Dec 5, 1994 to Dec 20, 2001"},"score":9.16,"scored":9.16,"scored_by":117158,"rank":6,"popularity":27,"members":290591,"favorites":23835,"synopsis":"Kenzou Tenma, a renowned Japanese neurosurgeon working in post-war Germany, faces a difficult choice: to operate on Johan Liebert, an orphan boy on the verge of death, or on the mayor of Düsseldorf. In the end, Tenma decides to gamble his reputation by saving Johan...","background":"Monster won the Grand Prize at the third Tezuka Osamu Cultural Prize in 1999, as well as the 46th Shogakukan Manga Award in the General category in 2000...","authors":[{"mal_id":1867,"type":"people","name":"Urasawa, Naoki","url":"https://myanimelist.net/people/1867/Naoki_Urasawa","role":"Story & Art"}],"serializations":[{"mal_id":1,"type":"manga","name":"Big Comic Original","url":"https://myanimelist.net/manga/magazine/1/Big_Comic_Original"}],"genres":[{"mal_id":46,"type":"manga","name":"Award Winning","url":"https://myanimelist.net/manga/genre/46/Award_Winning"},{"mal_id":8,"type":"manga","name":"Drama","url":"https://myanimelist.net/manga/genre/8/Drama"},{"mal_id":7,"type":"manga","name":"Mystery","url":"https://myanimelist.net/manga/genre/7/Mystery"}],"explicit_genres":[],"themes":[{"mal_id":50,"type":"manga","name":"Adult Cast","url":"https://myanimelist.net/manga/genre/50/Adult_Cast"},{"mal_id":40,"type":"manga","name":"Psychological","url":"https://myanimelist.net/manga/genre/40/Psychological"}],"demographics":[{"mal_id":41,"type":"manga","name":"Seinen","url":"https://myanimelist.net/manga/genre/41/Seinen"}],"relations":[{"relation":"Adaptation","entry":[{"mal_id":19,"type":"anime","name":"Monster","url":"https://myanimelist.net/anime/19/Monster"}]},{"relation":"Side Story","entry":[{"mal_id":10968,"type":"manga","name":"Mou Hitotsu no Monster: The Investigative Report","url":"https://myanimelist.net/manga/10968/Mou_Hitotsu_no_Monster__The_Investigative_Report"}]}],"external":[{"name":"Wikipedia","url":"https://en.wikipedia.org/wiki/Monster_(manga)"},{"name":"Wikipedia","url":"https://ja.wikipedia.org/wiki/MONSTER_(%E6%BC%AB%E7%94%BB)"}]}},"properties":{"data":{"type":"object","properties":{"mal_id":{"type":"integer","description":"The MyAnimeList catalog ID of this manga entry."},"url":{"type":"string","description":"The MyAnimeList catalog webpage URL of the manga."},"images":{"type":"object","description":"JPG and WebP cover image URLs in small, default, and large resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"approved":{"type":"boolean","description":"Indicates whether the entry has been officially approved by MAL moderators."},"titles":{"type":"array","description":"List of alternative titles and translations of this manga.","items":{"type":"object","properties":{"type":{"type":"string","description":"The language/type classification of this title."},"title":{"type":"string","description":"The title value."}}}},"title":{"type":"string","description":"The primary default title of the manga."},"title_english":{"type":"string","nullable":true,"description":"Official English title of the manga, if available."},"title_japanese":{"type":"string","nullable":true,"description":"Official Japanese title of the manga, if available."},"title_synonyms":{"type":"array","items":{"type":"string"},"description":"Alternative names or synonyms of the title."},"type":{"type":"string","description":"The publication format (e.g. Manga, Novel, Light Novel, One-shot)."},"chapters":{"type":"integer","nullable":true,"description":"Total chapters published (null if ongoing)."},"volumes":{"type":"integer","nullable":true,"description":"Total volumes published (null if ongoing)."},"status":{"type":"string","description":"Publishing status of the manga (e.g. Publishing, Finished, On Hiatus)."},"publishing":{"type":"boolean","description":"Whether the manga is currently in active serialization."},"published":{"type":"object","description":"Publication date details, including dates in ISO-8601 formatting, split components, and text display string.","properties":{"from":{"type":"string","nullable":true},"to":{"type":"string","nullable":true},"prop":{"type":"object","properties":{"from":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}},"to":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}}}},"string":{"type":"string","nullable":true}}},"score":{"type":"number","description":"The average rating score out of 10. Returns 0 when unavailable."},"scored":{"type":"number","description":"Duplicate score field included for Jikan v4 compatibility. Returns 0 when unavailable."},"scored_by":{"type":"integer","nullable":true,"description":"The count of users who have rated the manga."},"rank":{"type":"integer","nullable":true,"description":"Global rank of the manga based on average score."},"popularity":{"type":"integer","nullable":true,"description":"Global popularity rank based on list additions."},"members":{"type":"integer","nullable":true,"description":"Total number of users who have added this manga to their list."},"favorites":{"type":"integer","nullable":true,"description":"Total number of users who have favorited this manga."},"synopsis":{"type":"string","nullable":true,"description":"A description or synopsis of the manga storyline."},"background":{"type":"string","nullable":true,"description":"Historical, publication or marketing background context."},"authors":{"type":"array","items":{"type":"object","description":"A reference to a manga author or artist, including their credited role.","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the person."},"type":{"type":"string","description":"The type of the catalog item (always 'people')."},"name":{"type":"string","description":"The name of the author or artist."},"url":{"type":"string","description":"The MyAnimeList website link for this person."},"role":{"type":"string","nullable":true,"description":"The credited role of the person (e.g., 'Story', 'Art', 'Story & Art')."}}},"description":"Authors and artists credited for the manga, including their role (Story, Art, or Story & Art)."},"serializations":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Publications or magazines where the manga was serialized."},"genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Genre classifications of the manga."},"explicit_genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Explicit genre classifications (e.g. Hentai, Ecchi)."},"themes":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Theme classifications."},"demographics":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Demographic classifications (e.g. Shonen, Seinen, Shojo)."},"relations":{"type":"array","items":{"type":"object","properties":{"relation":{"type":"string"},"entry":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"type":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"}}}}}}},"external":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}}}}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"manga/{id}/characters":{"get":{"summary":"Manga Characters","tags":["Manga"],"description":"Get characters for a manga","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Manga ID"}],"responses":{"200":{"description":"Successful response returning manga characters","content":{"application/json":{"schema":{"description":"Successful response returning manga characters","type":"object","example":{"data":[{"character":{"mal_id":720,"url":"https://myanimelist.net/character/720/Anna_Liebert","images":{"jpg":{"image_url":"https://myanimelist.net/images/characters/11/286916.jpg","small_image_url":"https://myanimelist.net/images/characters/11/286916t.jpg","large_image_url":"https://myanimelist.net/images/characters/11/286916l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/characters/11/286916.webp","small_image_url":"https://myanimelist.net/images/characters/11/286916t.webp","large_image_url":"https://myanimelist.net/images/characters/11/286916l.webp"}},"name":"Liebert, Anna"},"role":"Main"},{"character":{"mal_id":719,"url":"https://myanimelist.net/character/719/Johan_Liebert","images":{"jpg":{"image_url":"https://myanimelist.net/images/characters/4/316522.jpg","small_image_url":"https://myanimelist.net/images/characters/4/316522t.jpg","large_image_url":"https://myanimelist.net/images/characters/4/316522l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/characters/4/316522.webp","small_image_url":"https://myanimelist.net/images/characters/4/316522t.webp","large_image_url":"https://myanimelist.net/images/characters/4/316522l.webp"}},"name":"Liebert, Johan"},"role":"Main"}]},"properties":{"data":{"type":"array","items":{"type":"object","properties":{"character":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","additionalProperties":true},"name":{"type":"string"}}},"role":{"type":"string"}}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"manga/{id}/news":{"get":{"summary":"Manga News","tags":["Manga"],"description":"Get news articles related to the manga entry","parameters":[{"schema":{"type":"integer","default":1,"minimum":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Manga ID"}],"responses":{"200":{"description":"Successful response returning manga news","content":{"application/json":{"schema":{"description":"Successful response returning manga news","type":"object","example":{"pagination":{"last_visible_page":1,"has_next_page":false},"data":[{"mal_id":46767949,"url":"https://myanimelist.net/news/46767949","title":"North American Anime & Manga Releases for July","date":"2016-07-04T13:28:00+00:00","author_username":"Sakana-san","author_url":"https://myanimelist.net/profile/Sakana-san","forum_url":"https://myanimelist.net/forum/?topicid=1529833","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/s/common/uploaded_files/1467638833-e596be62673123b7482604602053e06f.jpeg?s=7962b4436e0cd9961793fdc8a94115c8"}},"comments":10,"excerpt":"Here are the North American anime & manga releases for July Week 1: July 5 - 11..."}]},"properties":{"pagination":{"type":"object","properties":{"last_visible_page":{"type":"integer"},"has_next_page":{"type":"boolean"}}},"data":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"title":{"type":"string"},"date":{"type":"string","nullable":true},"author_username":{"type":"string"},"author_url":{"type":"string"},"forum_url":{"type":"string","nullable":true},"images":{"type":"object","additionalProperties":true},"comments":{"type":"integer"},"excerpt":{"type":"string"}}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"manga/{id}/pictures":{"get":{"summary":"Manga Pictures","tags":["Manga"],"description":"Get pictures for a manga","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Manga ID"}],"responses":{"200":{"description":"Successful response returning manga pictures","content":{"application/json":{"schema":{"description":"Successful response returning manga pictures","type":"object","example":{"data":[{"jpg":{"image_url":"https://myanimelist.net/images/manga/3/258224.jpg","small_image_url":"https://myanimelist.net/images/manga/3/258224t.jpg","large_image_url":"https://myanimelist.net/images/manga/3/258224l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/manga/3/258224.webp","small_image_url":"https://myanimelist.net/images/manga/3/258224t.webp","large_image_url":"https://myanimelist.net/images/manga/3/258224l.webp"}}]},"properties":{"data":{"type":"array","items":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"manga/{id}/statistics":{"get":{"summary":"Manga Statistics","tags":["Manga"],"description":"Get statistics for a manga","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Manga ID"}],"responses":{"200":{"description":"Successful response returning manga statistics","content":{"application/json":{"schema":{"description":"Successful response returning manga statistics","type":"object","example":{"data":{"reading":41776,"completed":120557,"on_hold":10698,"dropped":3399,"plan_to_read":114066,"total":290496,"scores":[{"score":10,"votes":59375,"percentage":50.7},{"score":9,"votes":32977,"percentage":28.1},{"score":8,"votes":14859,"percentage":12.7}]}},"properties":{"data":{"type":"object","properties":{"reading":{"type":"integer"},"completed":{"type":"integer"},"on_hold":{"type":"integer"},"dropped":{"type":"integer"},"plan_to_read":{"type":"integer"},"total":{"type":"integer"},"scores":{"type":"array","items":{"type":"object","properties":{"score":{"type":"integer"},"votes":{"type":"integer"},"percentage":{"type":"number"}}}}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"manga/{id}/moreinfo":{"get":{"summary":"Manga More Info","tags":["Manga"],"description":"Get more info for a manga","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Manga ID"}],"responses":{"200":{"description":"Successful response returning manga more info","content":{"application/json":{"schema":{"description":"Successful response returning manga more info","type":"object","example":{"data":{"moreinfo":"Monster is Naoki Urasawa's breakthrough work..."}},"properties":{"data":{"type":"object","properties":{"moreinfo":{"type":"string","nullable":true}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"manga/{id}/recommendations":{"get":{"summary":"Manga Recommendations","tags":["Manga"],"description":"Get recommendations for a manga","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Manga ID"}],"responses":{"200":{"description":"Successful response returning manga recommendations","content":{"application/json":{"schema":{"description":"Successful response returning manga recommendations","type":"object","example":{"data":[{"entry":{"mal_id":21,"url":"https://myanimelist.net/manga/21/Death_Note","images":{"jpg":{"image_url":"https://myanimelist.net/images/manga/1/258245.jpg","small_image_url":"https://myanimelist.net/images/manga/1/258245t.jpg","large_image_url":"https://myanimelist.net/images/manga/1/258245l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/manga/1/258245.webp","small_image_url":"https://myanimelist.net/images/manga/1/258245t.webp","large_image_url":"https://myanimelist.net/images/manga/1/258245l.webp"}},"title":"Death Note"},"url":"https://myanimelist.net/recommendations/manga/1-21","votes":12}]},"properties":{"data":{"type":"array","items":{"type":"object","properties":{"entry":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","additionalProperties":true},"title":{"type":"string"}}},"url":{"type":"string"},"votes":{"type":"integer"}}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"manga/{id}/reviews":{"get":{"summary":"Manga Reviews","tags":["Manga"],"description":"Get reviews for a manga","parameters":[{"schema":{"type":"integer","default":1,"minimum":1},"in":"query","name":"page","required":false},{"schema":{"type":"string","enum":["newest","oldest","most_helpful"],"default":"most_helpful"},"in":"query","name":"sort","required":false,"description":"Sort by newest, oldest, or most helpful"},{"schema":{"type":"string","enum":["true","false","only"]},"in":"query","name":"preliminary","required":false,"description":"Filter preliminary reviews (true = include, false = exclude, only = exclusive)"},{"schema":{"type":"string","enum":["true","false","only"]},"in":"query","name":"spoilers","required":false,"description":"Filter spoiler reviews (true = include, false = exclude, only = exclusive)"},{"schema":{"type":"string","enum":["recommended","mixed_feelings","not_recommended"]},"in":"query","name":"sentiment","required":false,"description":"Filter by review sentiment"},{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Manga ID"}],"responses":{"200":{"description":"Successful response returning manga reviews","content":{"application/json":{"schema":{"description":"Successful response returning manga reviews","type":"object","example":{"pagination":{"last_visible_page":5,"has_next_page":true},"data":[{"mal_id":11794,"url":"https://myanimelist.net/reviews.php?id=11794","type":"manga","reactions":{"overall":544,"nice":492,"love_it":19,"funny":5,"confusing":12,"informative":1,"well_written":15,"creative":0},"date":"2009-01-24T00:00:00+00:00","review":"I rarely give tens to mangas. But this one just deserves it! Why? I'm going to tell you: Monster isn't a traditional manga. It isn't about fighting. If you are looking for an intense, well-written manga, I would recommend this certainly for you...","score":10,"tags":["Recommended"],"is_spoiler":false,"is_preliminary":false,"chapters_read":null,"user":{"username":"BorisSoad","url":"https://myanimelist.net/profile/BorisSoad","images":{"jpg":{"image_url":"https://myanimelist.net/images/userimages/BorisSoad.jpg"},"webp":{"image_url":"https://myanimelist.net/images/userimages/BorisSoad.webp"}}}}]},"properties":{"pagination":{"type":"object","properties":{"last_visible_page":{"type":"integer"},"has_next_page":{"type":"boolean"}}},"data":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"type":{"type":"string"},"reactions":{"type":"object","additionalProperties":true},"date":{"type":"string","nullable":true},"review":{"type":"string","nullable":true},"score":{"type":"integer"},"tags":{"type":"array","items":{"type":"string"}},"is_spoiler":{"type":"boolean"},"is_preliminary":{"type":"boolean"},"chapters_read":{"type":"integer","nullable":true},"user":{"type":"object","additionalProperties":true}}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"manga/{id}/relations":{"get":{"summary":"Manga Relations","tags":["Manga"],"description":"Get related entries for a manga","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Manga ID"}],"responses":{"200":{"description":"Successful response returning manga relations","content":{"application/json":{"schema":{"description":"Successful response returning manga relations","type":"object","example":{"data":[{"relation":"Adaptation","entry":[{"mal_id":19,"type":"anime","name":"Monster","url":"https://myanimelist.net/anime/19/Monster"}]}]},"properties":{"data":{"type":"array","items":{"type":"object","properties":{"relation":{"type":"string"},"entry":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"type":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"}}}}}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"manga/{id}/external":{"get":{"summary":"Manga External Links","tags":["Manga"],"description":"Get external links for a manga","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The MAL Manga ID"}],"responses":{"200":{"description":"Successful response returning external links","content":{"application/json":{"schema":{"description":"Successful response returning external links","type":"object","example":{"data":[{"name":"Wikipedia","url":"https://en.wikipedia.org/wiki/Monster_(manga)"}]},"properties":{"data":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"manga/ids":{"get":{"summary":"Get All Manga IDs","tags":["Manga"],"description":"Retrieve all unique MAL manga IDs that currently exist and are active","responses":{"200":{"description":"Successful response returning all unique manga IDs","content":{"application/json":{"schema":{"description":"Successful response returning all unique manga IDs","type":"object","example":{"data":[1,2,3,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20]},"properties":{"data":{"type":"array","items":{"type":"integer"}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"401":{"description":"Unauthorized - Server Key is required","content":{"application/json":{"schema":{"description":"Unauthorized - Server Key is required","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":401},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"UnauthorizedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Server Key is required for this endpoint."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"characters/{id}":{"get":{"summary":"Character Details","tags":["Characters"],"description":"Get full details for a character","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The unique MyAnimeList character ID"}],"responses":{"200":{"description":"Successful response returning character details","content":{"application/json":{"schema":{"description":"Successful response returning character details","type":"object","example":{"data":{"mal_id":417,"url":"https://myanimelist.net/character/417/Lelouch_Lamperouge","images":{"jpg":{"image_url":"https://myanimelist.net/images/characters/8/406163.jpg","small_image_url":"https://myanimelist.net/images/characters/8/406163t.jpg"},"webp":{"image_url":"https://myanimelist.net/images/characters/8/406163.webp","small_image_url":"https://myanimelist.net/images/characters/8/406163t.webp"}},"name":"Lelouch Lamperouge","name_kanji":"ルルーシュ・ランペルージ","nicknames":["Lelouch vi Britannia","Zero","Lulu","Black Prince","The Demon Emperor","L.L."],"favorites":179417,"about":"Lelouch Lamperouge is the main protagonist of Code Geass: Lelouch of the Rebellion. He is the Eleventh Prince of the Holy Britannian Empire and the son of the 98th Emperor of Britannia, Charles zi Britannia. After receiving the power of Geass from C.C., he becomes the leader of the Black Knights under the alter ego Zero..."}},"properties":{"data":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true}}}}},"name":{"type":"string"},"name_kanji":{"type":"string","nullable":true},"nicknames":{"type":"array","items":{"type":"string"}},"favorites":{"type":"integer"},"about":{"type":"string","nullable":true}}}},"additionalProperties":true}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"characters/{id}/full":{"get":{"summary":"Character Full Details","tags":["Characters"],"description":"Get full details for a character, including appearances and voice actors","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The unique MyAnimeList character ID"}],"responses":{"200":{"description":"Successful response returning full character details","content":{"application/json":{"schema":{"description":"Successful response returning full character details","type":"object","example":{"data":{"mal_id":417,"url":"https://myanimelist.net/character/417/Lelouch_Lamperouge","images":{"jpg":{"image_url":"https://myanimelist.net/images/characters/8/406163.jpg"},"webp":{"image_url":"https://myanimelist.net/images/characters/8/406163.webp","small_image_url":"https://myanimelist.net/images/characters/8/406163t.webp"}},"name":"Lelouch Lamperouge","name_kanji":"ルルーシュ・ランペルージ","nicknames":["Lelouch vi Britannia","Zero","Lulu","Black Prince","The Demon Emperor","L.L."],"favorites":179417,"about":"Lelouch Lamperouge is the main protagonist of Code Geass: Lelouch of the Rebellion. He is the Eleventh Prince of the Holy Britannian Empire and the son of the 98th Emperor of Britannia, Charles zi Britannia. After receiving the power of Geass from C.C., he becomes the leader of the Black Knights under the alter ego Zero...","anime":[{"role":"Main","anime":{"mal_id":1575,"url":"https://myanimelist.net/anime/1575/Code_Geass__Hangyaku_no_Lelouch","images":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1841/133742.jpg","small_image_url":"https://myanimelist.net/images/anime/1841/133742t.jpg","large_image_url":"https://myanimelist.net/images/anime/1841/133742l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1841/133742.webp","small_image_url":"https://myanimelist.net/images/anime/1841/133742t.webp","large_image_url":"https://myanimelist.net/images/anime/1841/133742l.webp"}},"title":"Code Geass: Hangyaku no Lelouch"}}],"manga":[{"role":"Main","manga":{"mal_id":1528,"url":"https://myanimelist.net/manga/1528/Code_Geass__Hangyaku_no_Lelouch","images":{"jpg":{"image_url":"https://myanimelist.net/images/manga/1/259546.jpg","small_image_url":"https://myanimelist.net/images/manga/1/259546t.jpg","large_image_url":"https://myanimelist.net/images/manga/1/259546l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/manga/1/259546.webp","small_image_url":"https://myanimelist.net/images/manga/1/259546t.webp","large_image_url":"https://myanimelist.net/images/manga/1/259546l.webp"}},"title":"Code Geass: Hangyaku no Lelouch"}}],"voices":[{"person":{"mal_id":86,"url":"https://myanimelist.net/people/86/Jun_Fukuyama","images":{"jpg":{"image_url":"https://myanimelist.net/images/voiceactors/3/73507.jpg"}},"name":"Fukuyama, Jun"},"language":"Japanese"},{"person":{"mal_id":174,"url":"https://myanimelist.net/people/174/Johnny_Yong_Bosch","images":{"jpg":{"image_url":"https://myanimelist.net/images/voiceactors/1/65842.jpg"}},"name":"Bosch, Johnny Yong"},"language":"English"}]}},"properties":{"data":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true}}}}},"name":{"type":"string"},"name_kanji":{"type":"string","nullable":true},"nicknames":{"type":"array","items":{"type":"string"}},"favorites":{"type":"integer"},"about":{"type":"string","nullable":true},"anime":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"anime":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"title":{"type":"string"}}}}}},"manga":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"manga":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"title":{"type":"string"}}}}}},"voices":{"type":"array","items":{"type":"object","properties":{"person":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true}}}}},"name":{"type":"string"}}},"language":{"type":"string"}}}}}}},"additionalProperties":true}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"characters/{id}/anime":{"get":{"summary":"Character Anime Appearances","tags":["Characters"],"description":"Get a list of anime the character has appeared in","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The unique MyAnimeList character ID"}],"responses":{"200":{"description":"Successful response returning matching anime series","content":{"application/json":{"schema":{"description":"Successful response returning matching anime series","type":"object","example":{"data":[{"role":"Main","anime":{"mal_id":1575,"url":"https://myanimelist.net/anime/1575/Code_Geass__Hangyaku_no_Lelouch","images":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1841/133742.jpg","small_image_url":"https://myanimelist.net/images/anime/1841/133742t.jpg","large_image_url":"https://myanimelist.net/images/anime/1841/133742l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1841/133742.webp","small_image_url":"https://myanimelist.net/images/anime/1841/133742t.webp","large_image_url":"https://myanimelist.net/images/anime/1841/133742l.webp"}},"title":"Code Geass: Hangyaku no Lelouch"}}]},"properties":{"data":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"anime":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"title":{"type":"string"}}}}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"characters/{id}/manga":{"get":{"summary":"Character Manga Appearances","tags":["Characters"],"description":"Get a list of manga the character has appeared in","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The unique MyAnimeList character ID"}],"responses":{"200":{"description":"Successful response returning matching manga series","content":{"application/json":{"schema":{"description":"Successful response returning matching manga series","type":"object","example":{"data":[{"role":"Main","manga":{"mal_id":1528,"url":"https://myanimelist.net/manga/1528/Code_Geass__Hangyaku_no_Lelouch","images":{"jpg":{"image_url":"https://myanimelist.net/images/manga/1/259546.jpg","small_image_url":"https://myanimelist.net/images/manga/1/259546t.jpg","large_image_url":"https://myanimelist.net/images/manga/1/259546l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/manga/1/259546.webp","small_image_url":"https://myanimelist.net/images/manga/1/259546t.webp","large_image_url":"https://myanimelist.net/images/manga/1/259546l.webp"}},"title":"Code Geass: Hangyaku no Lelouch"}}]},"properties":{"data":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"manga":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"title":{"type":"string"}}}}}}},"additionalProperties":true}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"characters/{id}/voices":{"get":{"summary":"Character Voice Actors","tags":["Characters"],"description":"Get a list of voice actors for the character","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The unique MyAnimeList character ID"}],"responses":{"200":{"description":"Successful response returning voice actors","content":{"application/json":{"schema":{"description":"Successful response returning voice actors","type":"object","example":{"data":[{"language":"Japanese","person":{"mal_id":86,"url":"https://myanimelist.net/people/86/Jun_Fukuyama","images":{"jpg":{"image_url":"https://myanimelist.net/images/voiceactors/3/73507.jpg"}},"name":"Fukuyama, Jun"}},{"language":"English","person":{"mal_id":174,"url":"https://myanimelist.net/people/174/Johnny_Yong_Bosch","images":{"jpg":{"image_url":"https://myanimelist.net/images/voiceactors/1/65842.jpg"}},"name":"Bosch, Johnny Yong"}}]},"properties":{"data":{"type":"array","items":{"type":"object","properties":{"language":{"type":"string"},"person":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true}}}}},"name":{"type":"string"}}}}}}},"additionalProperties":true}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"characters/{id}/pictures":{"get":{"summary":"Character Pictures","tags":["Characters"],"description":"Get pictures for the character","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The unique MyAnimeList character ID"}],"responses":{"200":{"description":"Successful response returning character pictures","content":{"application/json":{"schema":{"description":"Successful response returning character pictures","type":"object","example":{"data":[{"jpg":{"image_url":"https://myanimelist.net/images/characters/8/406163.jpg"}}]},"properties":{"data":{"type":"array","items":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true}}}}}}},"additionalProperties":true}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"characters":{"get":{"summary":"Character Search","tags":["Characters"],"description":"Search for characters with comprehensive filters","parameters":[{"schema":{"type":"string","minLength":3},"in":"query","name":"q","required":false,"description":"The search query"},{"schema":{"type":"integer","default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":25,"maximum":50},"in":"query","name":"limit","required":false},{"schema":{"type":"string","enum":["mal_id","name","favorites"]},"in":"query","name":"order_by","required":false},{"schema":{"type":"string","enum":["asc","desc"],"default":"desc"},"in":"query","name":"sort","required":false},{"schema":{"type":"string","maxLength":1},"in":"query","name":"letter","required":false}],"responses":{"200":{"description":"Successful response returning matching characters","content":{"application/json":{"schema":{"description":"Successful response returning matching characters","type":"object","example":{"pagination":{"last_visible_page":223116,"has_next_page":true,"current_page":1,"items":{"count":1,"total":223116,"per_page":1}},"data":[{"mal_id":417,"url":"https://myanimelist.net/character/417/Lelouch_Lamperouge","images":{"jpg":{"image_url":"https://myanimelist.net/images/characters/8/406163.jpg","small_image_url":"https://myanimelist.net/images/characters/8/406163t.jpg"},"webp":{"image_url":"https://myanimelist.net/images/characters/8/406163.webp","small_image_url":"https://myanimelist.net/images/characters/8/406163t.webp"}},"name":"Lelouch Lamperouge","name_kanji":"ルルーシュ・ランペルージ","nicknames":["Lelouch vi Britannia","Zero","Lulu","Black Prince","The Demon Emperor","L.L."],"favorites":179417,"about":"Lelouch Lamperouge is the main protagonist of Code Geass: Lelouch of the Rebellion. He is the Eleventh Prince of the Holy Britannian Empire and the son of the 98th Emperor of Britannia, Charles zi Britannia. After receiving the power of Geass from C.C., he becomes the leader of the Black Knights under the alter ego Zero..."}]},"properties":{"pagination":{"type":"object","description":"Standard Jikan pagination metadata showing page count, total records, and navigation state.","example":{"last_visible_page":42,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1042,"per_page":25}},"properties":{"last_visible_page":{"type":"integer","description":"The highest page number available for this query"},"has_next_page":{"type":"boolean","description":"Whether there are more results on the next page"},"current_page":{"type":"integer","description":"The current page number requested"},"items":{"type":"object","description":"Detailed item pagination counts","properties":{"count":{"type":"integer","description":"Number of records returned on the current page"},"total":{"type":"integer","description":"Total number of matching records in the database"},"per_page":{"type":"integer","description":"Maximum number of records per page"}}}}},"data":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true}}}}},"name":{"type":"string"},"name_kanji":{"type":"string","nullable":true},"nicknames":{"type":"array","items":{"type":"string"}},"favorites":{"type":"integer"},"about":{"type":"string","nullable":true}}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"characters/ids":{"get":{"summary":"Get All Character IDs","tags":["Characters"],"description":"Retrieve all unique MAL character IDs that currently exist and are active","responses":{"200":{"description":"Successful response returning all unique character IDs","content":{"application/json":{"schema":{"description":"Successful response returning all unique character IDs","type":"object","example":{"data":[1,2,3,4,5,6,7,11,12,13,14,15,16,17,18,19,20,21]},"properties":{"data":{"type":"array","items":{"type":"integer"}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"401":{"description":"Unauthorized - Server Key is required","content":{"application/json":{"schema":{"description":"Unauthorized - Server Key is required","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":401},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"UnauthorizedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Server Key is required for this endpoint."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"people/{id}":{"get":{"summary":"Person Details","tags":["People"],"description":"Get full details for a person","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The unique MyAnimeList person ID"}],"responses":{"200":{"description":"Successful response returning person details","content":{"application/json":{"schema":{"description":"Successful response returning person details","type":"object","properties":{"data":{"type":"object","description":"Core schema representing a person (voice actor, staff, or author).","example":{"mal_id":118,"url":"https://myanimelist.net/people/118/Hiroshi_Kamiya","website_url":"http://www.aoni.co.jp/actor/ka/kamiya-hiroshi.html","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/voiceactors/3/62551.jpg"}},"name":"Kamiya, Hiroshi","given_name":"Hiroshi","family_name":"Kamiya","alternate_names":["神谷 浩史"],"birthday":"1975-01-28T00:00:00+00:00","favorites":98000,"about":"Hiroshi Kamiya is a Japanese voice actor, singer and narrator affiliated with Aoni Production."},"properties":{"mal_id":{"type":"integer","description":"Unique person ID on MyAnimeList."},"url":{"type":"string","description":"Direct profile page URL on MyAnimeList."},"website_url":{"type":"string","nullable":true,"description":"Official website URL of the person, if available."},"images":{"type":"object","description":"Portrait JPG image URLs.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true}}}}},"name":{"type":"string","description":"The full name of the person (Family, Given)."},"given_name":{"type":"string","nullable":true,"description":"The given name of the person."},"family_name":{"type":"string","nullable":true,"description":"The family name of the person."},"alternate_names":{"type":"array","items":{"type":"string"},"description":"Alternative names, nicknames or kanji aliases."},"birthday":{"type":"string","nullable":true,"description":"Birthday date in ISO 8601 format."},"favorites":{"type":"integer","description":"Total list favorited count on MyAnimeList."},"about":{"type":"string","nullable":true,"description":"Biography, career summary, and additional context description."}}}},"example":{"data":{"mal_id":118,"url":"https://myanimelist.net/people/118/Hiroshi_Kamiya","website_url":"http://www.aoni.co.jp/actor/ka/kamiya-hiroshi.html","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/voiceactors/3/62551.jpg"}},"name":"Kamiya, Hiroshi","given_name":"Hiroshi","family_name":"Kamiya","alternate_names":["神谷 浩史"],"birthday":"1975-01-28T00:00:00+00:00","favorites":98000,"about":"Hiroshi Kamiya is a Japanese voice actor, singer and narrator affiliated with Aoni Production."}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"people/{id}/anime":{"get":{"summary":"Person Anime Roles","tags":["People"],"description":"Get all anime staff roles for a person","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The unique MyAnimeList person ID"}],"responses":{"200":{"description":"Successful response returning anime roles","content":{"application/json":{"schema":{"description":"Successful response returning anime roles","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"position":{"type":"string"},"anime":{"type":"object","example":{"mal_id":38707,"url":"https://myanimelist.net/anime/38707/RobiHachi","images":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1555/100447.jpg","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.jpg","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1555/100447.webp","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.webp","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.webp"}},"title":"RobiHachi"},"properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","example":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1555/100447.jpg","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.jpg","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1555/100447.webp","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.webp","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.webp"}},"properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"title":{"type":"string"}}}}}}},"example":{"data":[{"position":"Theme Song Performance (TV OP)","anime":{"mal_id":38707,"url":"https://myanimelist.net/anime/38707/RobiHachi","images":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1555/100447.jpg","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.jpg","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1555/100447.webp","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.webp","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.webp"}},"title":"RobiHachi"}}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"people/{id}/voices":{"get":{"summary":"Person Voice Acting Roles","tags":["People"],"description":"Get all voice acting roles for a person","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The unique MyAnimeList person ID"}],"responses":{"200":{"description":"Successful response returning voice roles","content":{"application/json":{"schema":{"description":"Successful response returning voice roles","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"anime":{"type":"object","example":{"mal_id":38707,"url":"https://myanimelist.net/anime/38707/RobiHachi","images":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1555/100447.jpg","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.jpg","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1555/100447.webp","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.webp","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.webp"}},"title":"RobiHachi"},"properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","example":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1555/100447.jpg","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.jpg","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1555/100447.webp","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.webp","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.webp"}},"properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"title":{"type":"string"}}},"character":{"type":"object","example":{"mal_id":11,"url":"https://myanimelist.net/character/11/Rei_Ayanami","images":{"jpg":{"image_url":"https://myanimelist.net/images/characters/11/564624.jpg","small_image_url":"https://myanimelist.net/images/characters/11/564624t.jpg","large_image_url":"https://myanimelist.net/images/characters/11/564624l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/characters/11/564624.webp","small_image_url":"https://myanimelist.net/images/characters/11/564624t.webp","large_image_url":"https://myanimelist.net/images/characters/11/564624l.webp"}},"name":"Ayanami, Rei"},"properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","example":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1555/100447.jpg","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.jpg","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1555/100447.webp","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.webp","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.webp"}},"properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"name":{"type":"string"}}}}}}},"example":{"data":[{"role":"Main","anime":{"mal_id":5081,"url":"https://myanimelist.net/anime/5081/Bakemonogatari","images":{"jpg":{"image_url":"https://myanimelist.net/images/anime/11/75274.jpg","small_image_url":"https://myanimelist.net/images/anime/11/75274t.jpg","large_image_url":"https://myanimelist.net/images/anime/11/75274l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/11/75274.webp","small_image_url":"https://myanimelist.net/images/anime/11/75274t.webp","large_image_url":"https://myanimelist.net/images/anime/11/75274l.webp"}},"title":"Bakemonogatari"},"character":{"mal_id":22003,"url":"https://myanimelist.net/character/22003/Koyomi_Araragi","images":{"jpg":{"image_url":"https://myanimelist.net/images/characters/9/72223.jpg","small_image_url":"https://myanimelist.net/images/characters/9/72223t.jpg","large_image_url":"https://myanimelist.net/images/characters/9/72223l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/characters/9/72223.webp","small_image_url":"https://myanimelist.net/images/characters/9/72223t.webp","large_image_url":"https://myanimelist.net/images/characters/9/72223l.webp"}},"name":"Araragi, Koyomi"}}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"people/{id}/manga":{"get":{"summary":"Person Manga Roles","tags":["People"],"description":"Get all manga authorship roles for a person (author, illustrator, etc.)","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The unique MyAnimeList person ID"}],"responses":{"200":{"description":"Successful response returning manga roles","content":{"application/json":{"schema":{"description":"Successful response returning manga roles","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"position":{"type":"string"},"manga":{"type":"object","example":{"mal_id":2,"url":"https://myanimelist.net/manga/2/Berserk","images":{"jpg":{"image_url":"https://myanimelist.net/images/manga/1/157897.jpg","small_image_url":"https://myanimelist.net/images/manga/1/157897t.jpg","large_image_url":"https://myanimelist.net/images/manga/1/157897l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/manga/1/157897.webp","small_image_url":"https://myanimelist.net/images/manga/1/157897t.webp","large_image_url":"https://myanimelist.net/images/manga/1/157897l.webp"}},"title":"Berserk"},"properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","example":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1555/100447.jpg","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.jpg","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1555/100447.webp","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.webp","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.webp"}},"properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"title":{"type":"string"}}}}}}},"example":{"data":[{"position":"Story & Artist","manga":{"mal_id":2,"url":"https://myanimelist.net/manga/2/Berserk","images":{"jpg":{"image_url":"https://myanimelist.net/images/manga/1/157897.jpg","small_image_url":"https://myanimelist.net/images/manga/1/157897t.jpg","large_image_url":"https://myanimelist.net/images/manga/1/157897l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/manga/1/157897.webp","small_image_url":"https://myanimelist.net/images/manga/1/157897t.webp","large_image_url":"https://myanimelist.net/images/manga/1/157897l.webp"}},"title":"Berserk"}}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"people/{id}/pictures":{"get":{"summary":"Person Pictures","tags":["People"],"description":"Get all available pictures for a person","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The unique MyAnimeList person ID"}],"responses":{"200":{"description":"Successful response returning person pictures","content":{"application/json":{"schema":{"description":"Successful response returning person pictures","type":"object","properties":{"data":{"type":"array","items":{"type":"object","example":{"jpg":{"image_url":"https://myanimelist.net/images/voiceactors/1/81054.jpg"}},"properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string"}}}}}}},"example":{"data":[{"jpg":{"image_url":"https://myanimelist.net/images/voiceactors/1/85360.jpg"}},{"jpg":{"image_url":"https://myanimelist.net/images/voiceactors/1/81054.jpg"}}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"people/{id}/full":{"get":{"summary":"Person Full Details","tags":["People"],"description":"Get full details for a person, including anime, manga and voice actor roles","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The unique MyAnimeList person ID"}],"responses":{"200":{"description":"Successful response returning person full details","content":{"application/json":{"schema":{"description":"Successful response returning person full details","type":"object","properties":{"data":{"type":"object","properties":{"mal_id":{"type":"integer","description":"Unique person ID on MyAnimeList."},"url":{"type":"string","description":"Direct profile page URL on MyAnimeList."},"website_url":{"type":"string","nullable":true,"description":"Official website URL of the person, if available."},"images":{"type":"object","description":"Portrait JPG image URLs.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true}}}}},"name":{"type":"string","description":"The full name of the person (Family, Given)."},"given_name":{"type":"string","nullable":true,"description":"The given name of the person."},"family_name":{"type":"string","nullable":true,"description":"The family name of the person."},"alternate_names":{"type":"array","items":{"type":"string"},"description":"Alternative names, nicknames or kanji aliases."},"birthday":{"type":"string","nullable":true,"description":"Birthday date in ISO 8601 format."},"favorites":{"type":"integer","description":"Total list favorited count on MyAnimeList."},"about":{"type":"string","nullable":true,"description":"Biography, career summary, and additional context description."},"anime":{"type":"array","items":{"type":"object","properties":{"position":{"type":"string"},"anime":{"type":"object","example":{"mal_id":38707,"url":"https://myanimelist.net/anime/38707/RobiHachi","images":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1555/100447.jpg","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.jpg","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1555/100447.webp","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.webp","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.webp"}},"title":"RobiHachi"},"properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","example":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1555/100447.jpg","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.jpg","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1555/100447.webp","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.webp","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.webp"}},"properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"title":{"type":"string"}}}}}},"manga":{"type":"array","items":{"type":"object","properties":{"position":{"type":"string"},"manga":{"type":"object","example":{"mal_id":2,"url":"https://myanimelist.net/manga/2/Berserk","images":{"jpg":{"image_url":"https://myanimelist.net/images/manga/1/157897.jpg","small_image_url":"https://myanimelist.net/images/manga/1/157897t.jpg","large_image_url":"https://myanimelist.net/images/manga/1/157897l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/manga/1/157897.webp","small_image_url":"https://myanimelist.net/images/manga/1/157897t.webp","large_image_url":"https://myanimelist.net/images/manga/1/157897l.webp"}},"title":"Berserk"},"properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","example":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1555/100447.jpg","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.jpg","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1555/100447.webp","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.webp","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.webp"}},"properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"title":{"type":"string"}}}}}},"voices":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"anime":{"type":"object","example":{"mal_id":38707,"url":"https://myanimelist.net/anime/38707/RobiHachi","images":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1555/100447.jpg","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.jpg","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1555/100447.webp","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.webp","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.webp"}},"title":"RobiHachi"},"properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","example":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1555/100447.jpg","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.jpg","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1555/100447.webp","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.webp","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.webp"}},"properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"title":{"type":"string"}}},"character":{"type":"object","example":{"mal_id":11,"url":"https://myanimelist.net/character/11/Rei_Ayanami","images":{"jpg":{"image_url":"https://myanimelist.net/images/characters/11/564624.jpg","small_image_url":"https://myanimelist.net/images/characters/11/564624t.jpg","large_image_url":"https://myanimelist.net/images/characters/11/564624l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/characters/11/564624.webp","small_image_url":"https://myanimelist.net/images/characters/11/564624t.webp","large_image_url":"https://myanimelist.net/images/characters/11/564624l.webp"}},"name":"Ayanami, Rei"},"properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","example":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1555/100447.jpg","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.jpg","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1555/100447.webp","small_image_url":"https://myanimelist.net/images/anime/1555/100447t.webp","large_image_url":"https://myanimelist.net/images/anime/1555/100447l.webp"}},"properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"name":{"type":"string"}}}}}}}}},"example":{"data":{"mal_id":118,"url":"https://myanimelist.net/people/118/Hiroshi_Kamiya","website_url":"http://www.aoni.co.jp/actor/ka/kamiya-hiroshi.html","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/voiceactors/3/62551.jpg"}},"name":"Kamiya, Hiroshi","given_name":"Hiroshi","family_name":"Kamiya","alternate_names":["神谷 浩史"],"birthday":"1975-01-28T00:00:00+00:00","favorites":98000,"about":"Hiroshi Kamiya is a Japanese voice actor, singer and narrator affiliated with Aoni Production.","anime":[{"position":"Theme Song Performance","anime":{"mal_id":38234,"url":"https://myanimelist.net/anime/38234/Owarimonogatari_Second_Season","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/6/87322.jpg"}},"title":"Owarimonogatari Second Season"}}],"manga":[],"voices":[{"role":"Main","anime":{"mal_id":5081,"url":"https://myanimelist.net/anime/5081/Bakemonogatari","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/11/75274.jpg"}},"title":"Bakemonogatari"},"character":{"mal_id":22003,"url":"https://myanimelist.net/character/22003/Koyomi_Araragi","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/characters/9/72223.jpg"}},"name":"Araragi, Koyomi"}}]}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"people":{"get":{"summary":"People Search","tags":["People"],"description":"Search for people","parameters":[{"schema":{"type":"string","minLength":3},"in":"query","name":"q","required":false,"description":"Search query"},{"schema":{"type":"integer","default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":25,"maximum":50},"in":"query","name":"limit","required":false},{"schema":{"type":"string","enum":["mal_id","name","birthday","favorites"]},"in":"query","name":"order_by","required":false},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"sort","required":false},{"schema":{"type":"string","maxLength":1},"in":"query","name":"letter","required":false}],"responses":{"200":{"description":"Successful response returning matching people","content":{"application/json":{"schema":{"description":"Successful response returning matching people","type":"object","properties":{"pagination":{"type":"object","description":"Standard Jikan pagination metadata showing page count, total records, and navigation state.","example":{"last_visible_page":42,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1042,"per_page":25}},"properties":{"last_visible_page":{"type":"integer","description":"The highest page number available for this query"},"has_next_page":{"type":"boolean","description":"Whether there are more results on the next page"},"current_page":{"type":"integer","description":"The current page number requested"},"items":{"type":"object","description":"Detailed item pagination counts","properties":{"count":{"type":"integer","description":"Number of records returned on the current page"},"total":{"type":"integer","description":"Total number of matching records in the database"},"per_page":{"type":"integer","description":"Maximum number of records per page"}}}}},"data":{"type":"array","items":{"type":"object","description":"Core schema representing a person (voice actor, staff, or author).","example":{"mal_id":118,"url":"https://myanimelist.net/people/118/Hiroshi_Kamiya","website_url":"http://www.aoni.co.jp/actor/ka/kamiya-hiroshi.html","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/voiceactors/3/62551.jpg"}},"name":"Kamiya, Hiroshi","given_name":"Hiroshi","family_name":"Kamiya","alternate_names":["神谷 浩史"],"birthday":"1975-01-28T00:00:00+00:00","favorites":98000,"about":"Hiroshi Kamiya is a Japanese voice actor, singer and narrator affiliated with Aoni Production."},"properties":{"mal_id":{"type":"integer","description":"Unique person ID on MyAnimeList."},"url":{"type":"string","description":"Direct profile page URL on MyAnimeList."},"website_url":{"type":"string","nullable":true,"description":"Official website URL of the person, if available."},"images":{"type":"object","description":"Portrait JPG image URLs.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true}}}}},"name":{"type":"string","description":"The full name of the person (Family, Given)."},"given_name":{"type":"string","nullable":true,"description":"The given name of the person."},"family_name":{"type":"string","nullable":true,"description":"The family name of the person."},"alternate_names":{"type":"array","items":{"type":"string"},"description":"Alternative names, nicknames or kanji aliases."},"birthday":{"type":"string","nullable":true,"description":"Birthday date in ISO 8601 format."},"favorites":{"type":"integer","description":"Total list favorited count on MyAnimeList."},"about":{"type":"string","nullable":true,"description":"Biography, career summary, and additional context description."}}}}},"example":{"pagination":{"last_visible_page":1985,"has_next_page":true,"current_page":1,"items":{"count":25,"total":49618,"per_page":25}},"data":[{"mal_id":118,"url":"https://myanimelist.net/people/118/Hiroshi_Kamiya","website_url":"http://www.aoni.co.jp/actor/ka/kamiya-hiroshi.html","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/voiceactors/3/62551.jpg"}},"name":"Kamiya, Hiroshi","given_name":"Hiroshi","family_name":"Kamiya","alternate_names":["神谷 浩史"],"birthday":"1975-01-28T00:00:00+00:00","favorites":98000,"about":"Hiroshi Kamiya is a Japanese voice actor, singer and narrator affiliated with Aoni Production."}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"people/ids":{"get":{"summary":"Get All Person IDs","tags":["People"],"description":"Retrieve all unique MAL person IDs that currently exist and are active","responses":{"200":{"description":"Successful response returning all unique person IDs","content":{"application/json":{"schema":{"description":"Successful response returning all unique person IDs","type":"object","properties":{"data":{"type":"array","example":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],"items":{"type":"integer"}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"401":{"description":"Unauthorized - Server Key is required","content":{"application/json":{"schema":{"description":"Unauthorized - Server Key is required","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":401},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"UnauthorizedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Server Key is required for this endpoint."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"producers/{id}":{"get":{"summary":"Producer Details","tags":["Producers"],"description":"Get details for a producer or studio","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The unique MyAnimeList producer ID"}],"responses":{"200":{"description":"Successful response returning producer details","content":{"application/json":{"schema":{"description":"Successful response returning producer details","type":"object","properties":{"data":{"type":"object","description":"Core schema representing an anime studio or publishing company.","example":{"mal_id":11,"url":"https://myanimelist.net/anime/producer/11/Madhouse","titles":[{"type":"Default","title":"Madhouse"}],"images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/company/11.png"}},"favorites":45000,"established":"1972-10-17T00:00:00+00:00","about":"Madhouse Inc. is a Japanese animation studio founded in 1972.","count":380},"properties":{"mal_id":{"type":"integer","description":"Unique producer ID on MyAnimeList."},"url":{"type":"string","description":"Direct producer page URL on MyAnimeList."},"titles":{"type":"array","description":"Translations or alternative titles for this producer.","items":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"}}}},"images":{"type":"object","description":"Producer or studio logo image URL.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true}}}}},"favorites":{"type":"integer","description":"Total list favorited count on MyAnimeList."},"established":{"type":"string","nullable":true,"description":"Establishment date in ISO 8601 format."},"about":{"type":"string","nullable":true,"description":"Historical and context background information."},"count":{"type":"integer","description":"Total count of anime produced/serialized by this studio/publisher."}}}},"example":{"data":{"mal_id":1,"url":"https://myanimelist.net/anime/producer/1/Studio_Pierrot","titles":[{"type":"Default","title":"Studio Pierrot"},{"type":"Japanese","title":"スタジオぴえろ"},{"type":"Synonym","title":"Pierrot"}],"images":{"jpg":{"image_url":"https://myanimelist.net/s/common/company_logos/a0524dfa-5a6d-40a7-8a1e-233e3822acb5_600x600_i"}},"favorites":6321,"established":"1979-05-01T00:00:00+00:00","about":"Pierrot ぴえろ (Pierrot Co., Ltd.) is a Japanese animation studio established in May 1979 by former employees of both Tatsunoko Production and Mushi Production. Its headquarters are located in Mitaka, Tokyo. Pierrot is renowned for several worldwide popular anime series, such as Naruto, Bleach, Yu Yu Hakusho, Black Clover, Boruto: Naruto Next Generations, Tokyo Ghoul, and Great Teacher Onizuka.","count":328}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"producers/{id}/full":{"get":{"summary":"Producer Full Details","tags":["Producers"],"description":"Get full details for a producer or studio","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The unique MyAnimeList producer ID"}],"responses":{"200":{"description":"Successful response returning full producer details","content":{"application/json":{"schema":{"description":"Successful response returning full producer details","type":"object","properties":{"data":{"type":"object","description":"Full details for an anime studio or publishing company including external resource links.","example":{"mal_id":11,"url":"https://myanimelist.net/anime/producer/11/Madhouse","titles":[{"type":"Default","title":"Madhouse"}],"images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/company/11.png"}},"favorites":45000,"established":"1972-10-17T00:00:00+00:00","about":"Madhouse Inc. is a Japanese animation studio founded in 1972.","count":380,"external":[{"name":"Official Site","url":"http://www.madhouse.co.jp/"}]},"properties":{"mal_id":{"type":"integer","description":"Unique producer ID on MyAnimeList."},"url":{"type":"string","description":"Direct producer page URL on MyAnimeList."},"titles":{"type":"array","description":"Translations or alternative titles for this producer.","items":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"}}}},"images":{"type":"object","description":"Producer or studio logo image URL.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true}}}}},"favorites":{"type":"integer","description":"Total list favorited count on MyAnimeList."},"established":{"type":"string","nullable":true,"description":"Establishment date in ISO 8601 format."},"about":{"type":"string","nullable":true,"description":"Historical and context background information."},"count":{"type":"integer","description":"Total count of anime produced/serialized by this studio/publisher."},"external":{"type":"array","description":"External websites and links for this company.","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the external resource (e.g. Official Site, Twitter)."},"url":{"type":"string","description":"The external resource URL link."}}}}}}},"example":{"data":{"mal_id":1,"url":"https://myanimelist.net/anime/producer/1/Studio_Pierrot","titles":[{"type":"Default","title":"Studio Pierrot"},{"type":"Japanese","title":"スタジオぴえろ"},{"type":"Synonym","title":"Pierrot"}],"images":{"jpg":{"image_url":"https://myanimelist.net/s/common/company_logos/a0524dfa-5a6d-40a7-8a1e-233e3822acb5_600x600_i"}},"favorites":6321,"established":"1979-05-01T00:00:00+00:00","about":"Pierrot ぴえろ (Pierrot Co., Ltd.) is a Japanese animation studio established in May 1979 by former employees of both Tatsunoko Production and Mushi Production. Its headquarters are located in Mitaka, Tokyo. Pierrot is renowned for several worldwide popular anime series, such as Naruto, Bleach, Yu Yu Hakusho, Black Clover, Boruto: Naruto Next Generations, Tokyo Ghoul, and Great Teacher Onizuka.","count":328,"external":[{"name":"pierrot.jp","url":"http://pierrot.jp/"},{"name":"en.pierrot.jp","url":"https://en.pierrot.jp/"},{"name":"@studiopierrot_","url":"https://twitter.com/studiopierrot"},{"name":"Facebook","url":"https://www.facebook.com/studiopierrot"},{"name":"YouTube","url":"https://www.youtube.com/channel/UC0U2GG9WNndvt1wK41l9iqg"}]}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"producers/{id}/external":{"get":{"summary":"Producer External Links","tags":["Producers"],"description":"Get external links for a producer or studio","parameters":[{"schema":{"type":"integer","default":1},"in":"path","name":"id","required":true,"description":"The unique MyAnimeList producer ID"}],"responses":{"200":{"description":"Successful response returning external links","content":{"application/json":{"schema":{"description":"Successful response returning external links","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}}}}},"example":{"data":[{"name":"pierrot.jp","url":"http://pierrot.jp/"},{"name":"en.pierrot.jp","url":"https://en.pierrot.jp/"},{"name":"@studiopierrot_","url":"https://twitter.com/studiopierrot"},{"name":"Facebook","url":"https://www.facebook.com/studiopierrot"},{"name":"YouTube","url":"https://www.youtube.com/channel/UC0U2GG9WNndvt1wK41l9iqg"}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"producers":{"get":{"summary":"Producers Search","tags":["Producers"],"description":"Search for anime producers and studios","parameters":[{"schema":{"type":"string","minLength":3},"in":"query","name":"q","required":false,"description":"Search query"},{"schema":{"type":"integer","default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":25,"maximum":50},"in":"query","name":"limit","required":false},{"schema":{"type":"string","enum":["mal_id","count","favorites","established"],"default":"mal_id"},"in":"query","name":"order_by","required":false},{"schema":{"type":"string","enum":["desc","asc"],"default":"asc"},"in":"query","name":"sort","required":false},{"schema":{"type":"string","minLength":1,"maxLength":1},"in":"query","name":"letter","required":false}],"responses":{"200":{"description":"Successful response returning matching producers","content":{"application/json":{"schema":{"description":"Successful response returning matching producers","type":"object","properties":{"pagination":{"type":"object","properties":{"last_visible_page":{"type":"integer"},"has_next_page":{"type":"boolean"},"current_page":{"type":"integer"},"items":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"per_page":{"type":"integer"}}}}},"data":{"type":"array","items":{"type":"object","description":"Core schema representing an anime studio or publishing company.","example":{"mal_id":11,"url":"https://myanimelist.net/anime/producer/11/Madhouse","titles":[{"type":"Default","title":"Madhouse"}],"images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/company/11.png"}},"favorites":45000,"established":"1972-10-17T00:00:00+00:00","about":"Madhouse Inc. is a Japanese animation studio founded in 1972.","count":380},"properties":{"mal_id":{"type":"integer","description":"Unique producer ID on MyAnimeList."},"url":{"type":"string","description":"Direct producer page URL on MyAnimeList."},"titles":{"type":"array","description":"Translations or alternative titles for this producer.","items":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"}}}},"images":{"type":"object","description":"Producer or studio logo image URL.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true}}}}},"favorites":{"type":"integer","description":"Total list favorited count on MyAnimeList."},"established":{"type":"string","nullable":true,"description":"Establishment date in ISO 8601 format."},"about":{"type":"string","nullable":true,"description":"Historical and context background information."},"count":{"type":"integer","description":"Total count of anime produced/serialized by this studio/publisher."}}}}},"example":{"pagination":{"last_visible_page":108,"has_next_page":true,"current_page":1,"items":{"count":25,"total":2697,"per_page":25}},"data":[{"mal_id":1,"url":"https://myanimelist.net/anime/producer/1/Studio_Pierrot","titles":[{"type":"Default","title":"Studio Pierrot"},{"type":"Japanese","title":"スタジオぴえろ"},{"type":"Synonym","title":"Pierrot"}],"images":{"jpg":{"image_url":"https://myanimelist.net/s/common/company_logos/a0524dfa-5a6d-40a7-8a1e-233e3822acb5_600x600_i"}},"favorites":6321,"established":"1979-05-01T00:00:00+00:00","about":"Pierrot ぴえろ (Pierrot Co., Ltd.) is a Japanese animation studio established in May 1979 by former employees of both Tatsunoko Production and Mushi Production. Its headquarters are located in Mitaka, Tokyo. Pierrot is renowned for several worldwide popular anime series, such as Naruto, Bleach, Yu Yu Hakusho, Black Clover, Boruto: Naruto Next Generations, Tokyo Ghoul, and Great Teacher Onizuka.","count":328}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"producers/ids":{"get":{"summary":"Get All Producer IDs","tags":["Producers"],"description":"Retrieve all unique MAL producer IDs that currently exist and are active","responses":{"200":{"description":"Successful response returning all unique producer IDs","content":{"application/json":{"schema":{"description":"Successful response returning all unique producer IDs","type":"object","properties":{"data":{"type":"array","example":[1,2,3,4,5,6,7,8,10,11,13,14,15,16,17,18,21,22],"items":{"type":"integer"}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"401":{"description":"Unauthorized - Server Key is required","content":{"application/json":{"schema":{"description":"Unauthorized - Server Key is required","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":401},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"UnauthorizedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Server Key is required for this endpoint."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"genres/anime":{"get":{"summary":"Anime Genres","tags":["Genres"],"description":"Get all anime genre, theme, and demographic classifications with entry counts. Supports filtering by category.","parameters":[{"schema":{"type":"string","enum":["genres","explicit_genres","themes","demographics"]},"in":"query","name":"filter","required":false,"description":"Filter genres by category"}],"responses":{"200":{"description":"Successful response returning anime genres","content":{"application/json":{"schema":{"description":"Successful response returning anime genres","type":"object","example":{"data":[{"mal_id":1,"name":"Action","url":"https://myanimelist.net/anime/genre/1/Action","count":4501},{"mal_id":2,"name":"Adventure","url":"https://myanimelist.net/anime/genre/2/Adventure","count":3125}]},"properties":{"data":{"type":"array","items":{"type":"object","description":"A genre, theme, or demographic classification catalog entry.","example":{"mal_id":1,"name":"Action","url":"https://myanimelist.net/anime/genre/1/Action","count":4500},"properties":{"mal_id":{"type":"integer","description":"Unique catalog ID of the genre/theme."},"name":{"type":"string","description":"The name of the genre/theme."},"url":{"type":"string","description":"Direct genre list page URL on MyAnimeList."},"count":{"type":"integer","description":"Total entries classified under this genre/theme."}}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"genres/manga":{"get":{"summary":"Manga Genres","tags":["Genres"],"description":"Get all manga genre, theme, and demographic classifications with entry counts. Supports filtering by category.","parameters":[{"schema":{"type":"string","enum":["genres","explicit_genres","themes","demographics"]},"in":"query","name":"filter","required":false,"description":"Filter genres by category"}],"responses":{"200":{"description":"Successful response returning manga genres","content":{"application/json":{"schema":{"description":"Successful response returning manga genres","type":"object","example":{"data":[{"mal_id":1,"name":"Action","url":"https://myanimelist.net/manga/genre/1/Action","count":5218},{"mal_id":2,"name":"Adventure","url":"https://myanimelist.net/manga/genre/2/Adventure","count":2980}]},"properties":{"data":{"type":"array","items":{"type":"object","description":"A genre, theme, or demographic classification catalog entry.","example":{"mal_id":1,"name":"Action","url":"https://myanimelist.net/anime/genre/1/Action","count":4500},"properties":{"mal_id":{"type":"integer","description":"Unique catalog ID of the genre/theme."},"name":{"type":"string","description":"The name of the genre/theme."},"url":{"type":"string","description":"Direct genre list page URL on MyAnimeList."},"count":{"type":"integer","description":"Total entries classified under this genre/theme."}}}}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"magazines":{"get":{"summary":"Manga Magazines","tags":["Magazines"],"description":"Get all manga magazines with their counts.","parameters":[{"schema":{"type":"integer","default":1,"minimum":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":25,"minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string"},"in":"query","name":"q","required":false,"description":"Search query"},{"schema":{"type":"string","enum":["mal_id","name","count"],"default":"mal_id"},"in":"query","name":"order_by","required":false},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"sort","required":false},{"schema":{"type":"string"},"in":"query","name":"letter","required":false,"description":"Filter by first letter"}],"responses":{"200":{"description":"Successful response returning manga magazines","content":{"application/json":{"schema":{"description":"Successful response returning manga magazines","type":"object","properties":{"pagination":{"type":"object","description":"Standard Jikan pagination metadata showing page count, total records, and navigation state.","example":{"last_visible_page":42,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1042,"per_page":25}},"properties":{"last_visible_page":{"type":"integer","description":"The highest page number available for this query"},"has_next_page":{"type":"boolean","description":"Whether there are more results on the next page"},"current_page":{"type":"integer","description":"The current page number requested"},"items":{"type":"object","description":"Detailed item pagination counts","properties":{"count":{"type":"integer","description":"Number of records returned on the current page"},"total":{"type":"integer","description":"Total number of matching records in the database"},"per_page":{"type":"integer","description":"Maximum number of records per page"}}}}},"data":{"type":"array","items":{"type":"object","description":"A manga serialization publisher or magazine catalog entry.","example":{"mal_id":1,"name":"Shonen Jump","url":"https://myanimelist.net/manga/magazine/1/Shonen_Jump","count":245},"properties":{"mal_id":{"type":"integer","description":"Unique catalog ID of the publisher/magazine."},"name":{"type":"string","description":"The name of the publisher/magazine."},"url":{"type":"string","description":"Direct serialization catalog page URL on MyAnimeList."},"count":{"type":"integer","description":"Total manga entries serialized in this publisher/magazine."}}}}},"example":{"pagination":{"last_visible_page":60,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1482,"per_page":25}},"data":[{"mal_id":1,"name":"Big Comic Original","url":"https://myanimelist.net/manga/magazine/1/Big_Comic_Original","count":102},{"mal_id":2,"name":"Young Animal","url":"https://myanimelist.net/manga/magazine/2/Young_Animal","count":173},{"mal_id":3,"name":"Big Comic Spirits","url":"https://myanimelist.net/manga/magazine/3/Big_Comic_Spirits","count":306}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"random/anime":{"get":{"summary":"Random Anime","tags":["Random"],"description":"Get a random anime","responses":{"200":{"description":"Successful response returning random anime details","content":{"application/json":{"schema":{"description":"Successful response returning random anime details","type":"object","properties":{"data":{"type":"object","description":"Core schema representing an anime series with its main metadata.","example":{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Cowboy Bebop"},{"type":"Japanese","title":"カウボーイビバップ"}],"title":"Cowboy Bebop","title_english":"Cowboy Bebop","title_japanese":"カウボーイビバップ","title_synonyms":[],"type":"TV","source":"Original","episodes":26,"status":"Finished Airing","airing":false,"aired":{"from":"1998-04-03T00:00:00+00:00","to":"1999-04-24T00:00:00+00:00","prop":{"from":{"day":3,"month":4,"year":1998},"to":{"day":24,"month":4,"year":1999}},"string":"Apr 3, 1998 to Apr 24, 1999"},"duration":"24 min per ep","rating":"R - 17+ (violence & profanity)","score":8.75,"scored_by":980000,"rank":28,"popularity":39,"members":1900000,"favorites":95000,"synopsis":"Crime is timeless. By the year 2071, humanity has colonized several of the planets and moons of the solar system leaving the now uninhabitable surface of planet Earth behind.","background":null,"season":"spring","year":1998,"broadcast":{"day":"Saturdays","time":"01:00","timezone":"Asia/Tokyo","string":"Saturdays at 01:00 (JST)"},"producers":[{"mal_id":23,"type":"anime","name":"Bandai Visual","url":"https://myanimelist.net/anime/producer/23/Bandai_Visual"}],"licensors":[{"mal_id":102,"type":"anime","name":"Funimation","url":"https://myanimelist.net/anime/producer/102/Funimation"}],"studios":[{"mal_id":14,"type":"anime","name":"Sunrise","url":"https://myanimelist.net/anime/producer/14/Sunrise"}],"genres":[{"mal_id":1,"type":"anime","name":"Action","url":"https://myanimelist.net/anime/genre/1/Action"}],"explicit_genres":[],"themes":[{"mal_id":29,"type":"anime","name":"Space","url":"https://myanimelist.net/anime/genre/29/Space"}],"demographics":[]},"properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList catalog ID of this anime entry."},"url":{"type":"string","description":"The direct MyAnimeList catalog webpage URL of the anime."},"images":{"type":"object","description":"JPG and WebP cover image URLs in small, default, and large resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"trailer":{"type":"object","description":"YouTube trailer embedding details.","properties":{"youtube_id":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"embed_url":{"type":"string","nullable":true},"images":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"medium_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true},"maximum_image_url":{"type":"string","nullable":true}}}}},"approved":{"type":"boolean","description":"Indicates whether the entry has been officially approved by MAL moderators."},"titles":{"type":"array","description":"List of alternative titles and translations of this anime.","items":{"type":"object","properties":{"type":{"type":"string","description":"The type or language classification of the title."},"title":{"type":"string","description":"The title value."}}}},"title":{"type":"string","description":"The primary default title of the anime."},"title_english":{"type":"string","nullable":true,"description":"Official English title of the anime, if available."},"title_japanese":{"type":"string","nullable":true,"description":"Official Japanese title of the anime, if available."},"title_synonyms":{"type":"array","items":{"type":"string"},"description":"Alternative names or synonyms of the title."},"type":{"type":"string","description":"The broadcast or media type (e.g. TV, Movie, OVA, ONA, Special)."},"source":{"type":"string","description":"The source material type (e.g. Manga, Light Novel, Original)."},"episodes":{"type":"integer","nullable":true,"description":"Total episodes broadcasted (null if ongoing/not aired)."},"status":{"type":"string","description":"Airing status of the anime (e.g. Finished Airing, Currently Airing, Not yet aired)."},"airing":{"type":"boolean","description":"Whether the anime is currently broadcasting live episodes."},"aired":{"type":"object","description":"Airing dates, formatted as ISO-8601 strings, split components, and text display string.","properties":{"from":{"type":"string","nullable":true},"to":{"type":"string","nullable":true},"prop":{"type":"object","properties":{"from":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}},"to":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}}}},"string":{"type":"string","nullable":true}}},"duration":{"type":"string","nullable":true,"description":"Length per episode or total runtime of the anime."},"rating":{"type":"string","nullable":true,"description":"Age rating categorization (e.g. PG-13, R - 17+)."},"score":{"type":"number","description":"The average rating score out of 10. Returns 0 when unavailable."},"scored_by":{"type":"integer","nullable":true,"description":"Total user score count."},"rank":{"type":"integer","nullable":true,"description":"Global rank based on average score."},"popularity":{"type":"integer","nullable":true,"description":"Global popularity rank based on list members."},"members":{"type":"integer","nullable":true,"description":"Total users who have this anime added to their catalog lists."},"favorites":{"type":"integer","nullable":true,"description":"Total users who favorited this anime."},"synopsis":{"type":"string","nullable":true,"description":"Main plot summary description."},"background":{"type":"string","nullable":true,"description":"Historical or context information about the production."},"season":{"type":"string","nullable":true,"description":"Season of premier (spring, summer, fall, winter)."},"year":{"type":"integer","nullable":true,"description":"Year of premier."},"broadcast":{"type":"object","description":"Weekly broadcast schedule day, time, and timezone.","properties":{"day":{"type":"string","nullable":true},"time":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true},"string":{"type":"string","nullable":true}}},"producers":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Production companies or publishers."},"licensors":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Licensing agencies."},"studios":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Animation studios."},"genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Genre classifications."},"explicit_genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Explicit genre classifications (e.g. Hentai, Ecchi)."},"themes":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Theme classifications."},"demographics":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Demographic classifications (e.g. Shonen, Seinen)."}}}},"example":{"data":{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Cowboy Bebop"},{"type":"Japanese","title":"カウボーイビバップ"}],"title":"Cowboy Bebop","title_english":"Cowboy Bebop","title_japanese":"カウボーイビバップ","title_synonyms":[],"type":"TV","source":"Original","episodes":26,"status":"Finished Airing","airing":false,"aired":{"from":"1998-04-03T00:00:00+00:00","to":"1999-04-24T00:00:00+00:00","prop":{"from":{"day":3,"month":4,"year":1998},"to":{"day":24,"month":4,"year":1999}},"string":"Apr 3, 1998 to Apr 24, 1999"},"duration":"24 min per ep","rating":"R - 17+ (violence & profanity)","score":8.75,"scored_by":980000,"rank":28,"popularity":39,"members":1900000,"favorites":95000,"synopsis":"Crime is timeless. By the year 2071, humanity has colonized several of the planets and moons of the solar system leaving the now uninhabitable surface of planet Earth behind.","background":null,"season":"spring","year":1998,"broadcast":{"day":"Saturdays","time":"01:00","timezone":"Asia/Tokyo","string":"Saturdays at 01:00 (JST)"},"producers":[{"mal_id":23,"type":"anime","name":"Bandai Visual","url":"https://myanimelist.net/anime/producer/23/Bandai_Visual"}],"licensors":[{"mal_id":102,"type":"anime","name":"Funimation","url":"https://myanimelist.net/anime/producer/102/Funimation"}],"studios":[{"mal_id":14,"type":"anime","name":"Sunrise","url":"https://myanimelist.net/anime/producer/14/Sunrise"}],"genres":[{"mal_id":1,"type":"anime","name":"Action","url":"https://myanimelist.net/anime/genre/1/Action"}],"explicit_genres":[],"themes":[{"mal_id":29,"type":"anime","name":"Space","url":"https://myanimelist.net/anime/genre/29/Space"}],"demographics":[]}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"random/manga":{"get":{"summary":"Random Manga","tags":["Random"],"description":"Get a random manga","responses":{"200":{"description":"Successful response returning random manga details","content":{"application/json":{"schema":{"description":"Successful response returning random manga details","type":"object","properties":{"data":{"type":"object","description":"Core schema representing a manga series with its main metadata.","example":{"mal_id":2,"url":"https://myanimelist.net/manga/2/Berserk","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/manga/1/157896.jpg","small_image_url":"https://cdn.myanimelist.net/images/manga/1/157896t.jpg","large_image_url":"https://cdn.myanimelist.net/images/manga/1/157896l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/manga/1/157896.webp","small_image_url":"https://cdn.myanimelist.net/images/manga/1/157896t.webp","large_image_url":"https://cdn.myanimelist.net/images/manga/1/157896l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Berserk"},{"type":"Japanese","title":"ベルセルク"}],"title":"Berserk","title_english":"Berserk","title_japanese":"ベルセルク","title_synonyms":[],"type":"Manga","chapters":364,"volumes":41,"status":"Publishing","publishing":true,"published":{"from":"1989-08-25T00:00:00+00:00","to":null,"prop":{"from":{"day":25,"month":8,"year":1989},"to":{"day":null,"month":null,"year":null}},"string":"Aug 25, 1989 to Present"},"score":9.47,"scored":9.47,"scored_by":320000,"rank":1,"popularity":2,"members":640000,"favorites":120000,"synopsis":"Guts, a former mercenary now known as the 'Black Swordsman,' is out for revenge.","background":"Berserk won the Award for Excellence at the sixth installment of the Tezuka Osamu Cultural Prize in 2002.","authors":[{"mal_id":1868,"type":"people","name":"Miura, Kentarou","url":"https://myanimelist.net/people/1868/Kentarou_Miura","role":"Story & Art"},{"mal_id":49592,"type":"people","name":"Studio Gaga","url":"https://myanimelist.net/people/49592/Studio_Gaga","role":"Art"}],"serializations":[{"mal_id":2,"type":"manga","name":"Young Animal","url":"https://myanimelist.net/manga/magazine/2/Young_Animal"}],"genres":[{"mal_id":1,"type":"manga","name":"Action","url":"https://myanimelist.net/manga/genre/1/Action"}],"explicit_genres":[],"themes":[{"mal_id":58,"type":"manga","name":"Gore","url":"https://myanimelist.net/manga/genre/58/Gore"}],"demographics":[{"mal_id":41,"type":"manga","name":"Seinen","url":"https://myanimelist.net/manga/genre/41/Seinen"}]},"properties":{"mal_id":{"type":"integer","description":"The MyAnimeList catalog ID of this manga entry."},"url":{"type":"string","description":"The MyAnimeList catalog webpage URL of the manga."},"images":{"type":"object","description":"JPG and WebP cover image URLs in small, default, and large resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"approved":{"type":"boolean","description":"Indicates whether the entry has been officially approved by MAL moderators."},"titles":{"type":"array","description":"List of alternative titles and translations of this manga.","items":{"type":"object","properties":{"type":{"type":"string","description":"The language/type classification of this title."},"title":{"type":"string","description":"The title value."}}}},"title":{"type":"string","description":"The primary default title of the manga."},"title_english":{"type":"string","nullable":true,"description":"Official English title of the manga, if available."},"title_japanese":{"type":"string","nullable":true,"description":"Official Japanese title of the manga, if available."},"title_synonyms":{"type":"array","items":{"type":"string"},"description":"Alternative names or synonyms of the title."},"type":{"type":"string","description":"The publication format (e.g. Manga, Novel, Light Novel, One-shot)."},"chapters":{"type":"integer","nullable":true,"description":"Total chapters published (null if ongoing)."},"volumes":{"type":"integer","nullable":true,"description":"Total volumes published (null if ongoing)."},"status":{"type":"string","description":"Publishing status of the manga (e.g. Publishing, Finished, On Hiatus)."},"publishing":{"type":"boolean","description":"Whether the manga is currently in active serialization."},"published":{"type":"object","description":"Publication date details, including dates in ISO-8601 formatting, split components, and text display string.","properties":{"from":{"type":"string","nullable":true},"to":{"type":"string","nullable":true},"prop":{"type":"object","properties":{"from":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}},"to":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}}}},"string":{"type":"string","nullable":true}}},"score":{"type":"number","description":"The average rating score out of 10. Returns 0 when unavailable."},"scored":{"type":"number","description":"Duplicate score field included for Jikan v4 compatibility. Returns 0 when unavailable."},"scored_by":{"type":"integer","nullable":true,"description":"The count of users who have rated the manga."},"rank":{"type":"integer","nullable":true,"description":"Global rank of the manga based on average score."},"popularity":{"type":"integer","nullable":true,"description":"Global popularity rank based on list additions."},"members":{"type":"integer","nullable":true,"description":"Total number of users who have added this manga to their list."},"favorites":{"type":"integer","nullable":true,"description":"Total number of users who have favorited this manga."},"synopsis":{"type":"string","nullable":true,"description":"A description or synopsis of the manga storyline."},"background":{"type":"string","nullable":true,"description":"Historical, publication or marketing background context."},"authors":{"type":"array","items":{"type":"object","description":"A reference to a manga author or artist, including their credited role.","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the person."},"type":{"type":"string","description":"The type of the catalog item (always 'people')."},"name":{"type":"string","description":"The name of the author or artist."},"url":{"type":"string","description":"The MyAnimeList website link for this person."},"role":{"type":"string","nullable":true,"description":"The credited role of the person (e.g., 'Story', 'Art', 'Story & Art')."}}},"description":"Authors and artists credited for the manga, including their role (Story, Art, or Story & Art)."},"serializations":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Publications or magazines where the manga was serialized."},"genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Genre classifications of the manga."},"explicit_genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Explicit genre classifications (e.g. Hentai, Ecchi)."},"themes":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Theme classifications."},"demographics":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Demographic classifications (e.g. Shonen, Seinen, Shojo)."}}}},"example":{"data":{"mal_id":2,"url":"https://myanimelist.net/manga/2/Berserk","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/manga/1/157896.jpg","small_image_url":"https://cdn.myanimelist.net/images/manga/1/157896t.jpg","large_image_url":"https://cdn.myanimelist.net/images/manga/1/157896l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/manga/1/157896.webp","small_image_url":"https://cdn.myanimelist.net/images/manga/1/157896t.webp","large_image_url":"https://cdn.myanimelist.net/images/manga/1/157896l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Berserk"},{"type":"Japanese","title":"ベルセルク"}],"title":"Berserk","title_english":"Berserk","title_japanese":"ベルセルク","title_synonyms":[],"type":"Manga","chapters":364,"volumes":41,"status":"Publishing","publishing":true,"published":{"from":"1989-08-25T00:00:00+00:00","to":null,"prop":{"from":{"day":25,"month":8,"year":1989},"to":{"day":null,"month":null,"year":null}},"string":"Aug 25, 1989 to Present"},"score":9.47,"scored":9.47,"scored_by":320000,"rank":1,"popularity":2,"members":640000,"favorites":120000,"synopsis":"Guts, a former mercenary now known as the 'Black Swordsman,' is out for revenge.","background":"Berserk won the Award for Excellence at the sixth installment of the Tezuka Osamu Cultural Prize in 2002.","authors":[{"mal_id":1868,"type":"people","name":"Miura, Kentarou","url":"https://myanimelist.net/people/1868/Kentarou_Miura","role":"Story & Art"},{"mal_id":49592,"type":"people","name":"Studio Gaga","url":"https://myanimelist.net/people/49592/Studio_Gaga","role":"Art"}],"serializations":[{"mal_id":2,"type":"manga","name":"Young Animal","url":"https://myanimelist.net/manga/magazine/2/Young_Animal"}],"genres":[{"mal_id":1,"type":"manga","name":"Action","url":"https://myanimelist.net/manga/genre/1/Action"}],"explicit_genres":[],"themes":[{"mal_id":58,"type":"manga","name":"Gore","url":"https://myanimelist.net/manga/genre/58/Gore"}],"demographics":[{"mal_id":41,"type":"manga","name":"Seinen","url":"https://myanimelist.net/manga/genre/41/Seinen"}]}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"random/characters":{"get":{"summary":"Random Character","tags":["Random"],"description":"Get a random character","responses":{"200":{"description":"Successful response returning random character details","content":{"application/json":{"schema":{"description":"Successful response returning random character details","type":"object","properties":{"data":{"type":"object","description":"Core schema representing an anime or manga character.","example":{"mal_id":40,"url":"https://myanimelist.net/character/40/Monkey_D_Luffy","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/characters/9/310307.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/characters/9/310307.webp","small_image_url":"https://cdn.myanimelist.net/images/characters/9/310307t.webp"}},"name":"Luffy, Monkey D.","name_kanji":"モンキー・D・ルフィ","nicknames":["Straw Hat Luffy","Luffytarou"],"favorites":130000,"about":"Monkey D. Luffy is the main protagonist of the anime and manga One Piece."},"properties":{"mal_id":{"type":"integer","description":"Unique character ID on MyAnimeList."},"url":{"type":"string","description":"Direct character profile page URL on MyAnimeList."},"images":{"type":"object","description":"JPG and WebP character headshots in various resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string"}}},"webp":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string"}}}}},"name":{"type":"string","description":"The full name of the character (Family, Given)."},"name_kanji":{"type":"string","nullable":true,"description":"Kanji representation of the name, if available."},"nicknames":{"type":"array","items":{"type":"string"},"description":"Nicknames or aliases of the character."},"favorites":{"type":"integer","description":"Total favorited count on MyAnimeList."},"about":{"type":"string","nullable":true,"description":"Biography and descriptive text for the character."}}}},"example":{"data":{"mal_id":40,"url":"https://myanimelist.net/character/40/Monkey_D_Luffy","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/characters/9/310307.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/characters/9/310307.webp","small_image_url":"https://cdn.myanimelist.net/images/characters/9/310307t.webp"}},"name":"Luffy, Monkey D.","name_kanji":"モンキー・D・ルフィ","nicknames":["Straw Hat Luffy","Luffytarou"],"favorites":130000,"about":"Monkey D. Luffy is the main protagonist of the anime and manga One Piece."}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"random/people":{"get":{"summary":"Random Person","tags":["Random"],"description":"Get a random person","responses":{"200":{"description":"Successful response returning random person details","content":{"application/json":{"schema":{"description":"Successful response returning random person details","type":"object","properties":{"data":{"type":"object","description":"Core schema representing a person (voice actor, staff, or author).","example":{"mal_id":118,"url":"https://myanimelist.net/people/118/Hiroshi_Kamiya","website_url":"http://www.aoni.co.jp/actor/ka/kamiya-hiroshi.html","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/voiceactors/3/62551.jpg"}},"name":"Kamiya, Hiroshi","given_name":"Hiroshi","family_name":"Kamiya","alternate_names":["神谷 浩史"],"birthday":"1975-01-28T00:00:00+00:00","favorites":98000,"about":"Hiroshi Kamiya is a Japanese voice actor, singer and narrator affiliated with Aoni Production."},"properties":{"mal_id":{"type":"integer","description":"Unique person ID on MyAnimeList."},"url":{"type":"string","description":"Direct profile page URL on MyAnimeList."},"website_url":{"type":"string","nullable":true,"description":"Official website URL of the person, if available."},"images":{"type":"object","description":"Portrait JPG image URLs.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true}}}}},"name":{"type":"string","description":"The full name of the person (Family, Given)."},"given_name":{"type":"string","nullable":true,"description":"The given name of the person."},"family_name":{"type":"string","nullable":true,"description":"The family name of the person."},"alternate_names":{"type":"array","items":{"type":"string"},"description":"Alternative names, nicknames or kanji aliases."},"birthday":{"type":"string","nullable":true,"description":"Birthday date in ISO 8601 format."},"favorites":{"type":"integer","description":"Total list favorited count on MyAnimeList."},"about":{"type":"string","nullable":true,"description":"Biography, career summary, and additional context description."}}}},"example":{"data":{"mal_id":118,"url":"https://myanimelist.net/people/118/Hiroshi_Kamiya","website_url":"http://www.aoni.co.jp/actor/ka/kamiya-hiroshi.html","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/voiceactors/3/62551.jpg"}},"name":"Kamiya, Hiroshi","given_name":"Hiroshi","family_name":"Kamiya","alternate_names":["神谷 浩史"],"birthday":"1975-01-28T00:00:00+00:00","favorites":98000,"about":"Hiroshi Kamiya is a Japanese voice actor, singer and narrator affiliated with Aoni Production."}}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"recommendations/anime":{"get":{"summary":"Recent Anime Recommendations","tags":["Recommendations"],"description":"Get recent anime recommendations","parameters":[{"schema":{"type":"integer","default":1,"minimum":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"in":"query","name":"limit","required":false}],"responses":{"200":{"description":"Successful response returning recent anime recommendations","content":{"application/json":{"schema":{"description":"Successful response returning recent anime recommendations","type":"object","properties":{"pagination":{"type":"object","properties":{"last_visible_page":{"type":"integer"},"has_next_page":{"type":"boolean"}}},"data":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"string"},"entry":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","additionalProperties":true},"title":{"type":"string"}}}},"content":{"type":"string","nullable":true},"date":{"type":"string","nullable":true},"user":{"type":"object","properties":{"url":{"type":"string"},"username":{"type":"string"}}}}}}},"example":{"pagination":{"last_visible_page":230,"has_next_page":true},"data":[{"mal_id":"1-30","entry":[{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.webp"}},"title":"Cowboy Bebop"},{"mal_id":30,"url":"https://myanimelist.net/anime/30/Neon_Genesis_Evangelion","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/1404/98182.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/1404/98182t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/1404/98182l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/1404/98182.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/1404/98182t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/1404/98182l.webp"}},"title":"Neon Genesis Evangelion"}],"content":"Both are classic, critically acclaimed 90s sci-fi anime with deep themes, memorable soundtracks, and complex characters dealing with personal trauma.","date":"2026-06-06T12:00:00+00:00","user":{"url":"https://myanimelist.net/profile/RecommendationCritic","username":"RecommendationCritic"}}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"recommendations/manga":{"get":{"summary":"Recent Manga Recommendations","tags":["Recommendations"],"description":"Get recent manga recommendations","parameters":[{"schema":{"type":"integer","default":1,"minimum":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"in":"query","name":"limit","required":false}],"responses":{"200":{"description":"Successful response returning recent manga recommendations","content":{"application/json":{"schema":{"description":"Successful response returning recent manga recommendations","type":"object","properties":{"pagination":{"type":"object","properties":{"last_visible_page":{"type":"integer"},"has_next_page":{"type":"boolean"}}},"data":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"string"},"entry":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"images":{"type":"object","additionalProperties":true},"title":{"type":"string"}}}},"content":{"type":"string","nullable":true},"date":{"type":"string","nullable":true},"user":{"type":"object","properties":{"url":{"type":"string"},"username":{"type":"string"}}}}}}},"example":{"pagination":{"last_visible_page":150,"has_next_page":true},"data":[{"mal_id":"2-13","entry":[{"mal_id":2,"url":"https://myanimelist.net/manga/2/Berserk","images":{"jpg":{"image_url":"https://myanimelist.net/images/manga/1/157897.jpg","small_image_url":"https://myanimelist.net/images/manga/1/157897t.jpg","large_image_url":"https://myanimelist.net/images/manga/1/157897l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/manga/1/157897.webp","small_image_url":"https://myanimelist.net/images/manga/1/157897t.webp","large_image_url":"https://myanimelist.net/images/manga/1/157897l.webp"}},"title":"Berserk"},{"mal_id":13,"url":"https://myanimelist.net/manga/13/Claymore","images":{"jpg":{"image_url":"https://myanimelist.net/images/manga/3/178553.jpg","small_image_url":"https://myanimelist.net/images/manga/3/178553t.jpg","large_image_url":"https://myanimelist.net/images/manga/3/178553l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/manga/3/178553.webp","small_image_url":"https://myanimelist.net/images/manga/3/178553t.webp","large_image_url":"https://myanimelist.net/images/manga/3/178553l.webp"}},"title":"Claymore"}],"content":"Both are dark fantasy manga featuring relentless action, swords, monsters, and a dark, gritty atmosphere with detailed, gorgeous art.","date":"2026-06-06T12:00:00+00:00","user":{"url":"https://myanimelist.net/profile/MangaReaderX","username":"MangaReaderX"}}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"top/anime":{"get":{"summary":"Top Anime","tags":["Top"],"description":"Get top-ranked anime ordered by MAL score and rank.","parameters":[{"schema":{"type":"integer","default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":25,"maximum":50},"in":"query","name":"limit","required":false},{"schema":{"type":"string","enum":["tv","movie","ova","special","ona","music","cm","pv","tv_special"]},"in":"query","name":"type","required":false},{"schema":{"type":"string","enum":["airing","upcoming","bypopularity","favorite"]},"in":"query","name":"filter","required":false},{"schema":{"type":"string","enum":["g","pg","pg13","r17","r","rx"]},"in":"query","name":"rating","required":false},{"schema":{"type":"boolean"},"in":"query","name":"sfw","required":false}],"responses":{"200":{"description":"Successful response returning top anime series","content":{"application/json":{"schema":{"description":"Successful response returning top anime series","type":"object","properties":{"pagination":{"type":"object","description":"Standard Jikan pagination metadata showing page count, total records, and navigation state.","example":{"last_visible_page":42,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1042,"per_page":25}},"properties":{"last_visible_page":{"type":"integer","description":"The highest page number available for this query"},"has_next_page":{"type":"boolean","description":"Whether there are more results on the next page"},"current_page":{"type":"integer","description":"The current page number requested"},"items":{"type":"object","description":"Detailed item pagination counts","properties":{"count":{"type":"integer","description":"Number of records returned on the current page"},"total":{"type":"integer","description":"Total number of matching records in the database"},"per_page":{"type":"integer","description":"Maximum number of records per page"}}}}},"data":{"type":"array","items":{"type":"object","description":"Core schema representing an anime series with its main metadata.","example":{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Cowboy Bebop"},{"type":"Japanese","title":"カウボーイビバップ"}],"title":"Cowboy Bebop","title_english":"Cowboy Bebop","title_japanese":"カウボーイビバップ","title_synonyms":[],"type":"TV","source":"Original","episodes":26,"status":"Finished Airing","airing":false,"aired":{"from":"1998-04-03T00:00:00+00:00","to":"1999-04-24T00:00:00+00:00","prop":{"from":{"day":3,"month":4,"year":1998},"to":{"day":24,"month":4,"year":1999}},"string":"Apr 3, 1998 to Apr 24, 1999"},"duration":"24 min per ep","rating":"R - 17+ (violence & profanity)","score":8.75,"scored_by":980000,"rank":28,"popularity":39,"members":1900000,"favorites":95000,"synopsis":"Crime is timeless. By the year 2071, humanity has colonized several of the planets and moons of the solar system leaving the now uninhabitable surface of planet Earth behind.","background":null,"season":"spring","year":1998,"broadcast":{"day":"Saturdays","time":"01:00","timezone":"Asia/Tokyo","string":"Saturdays at 01:00 (JST)"},"producers":[{"mal_id":23,"type":"anime","name":"Bandai Visual","url":"https://myanimelist.net/anime/producer/23/Bandai_Visual"}],"licensors":[{"mal_id":102,"type":"anime","name":"Funimation","url":"https://myanimelist.net/anime/producer/102/Funimation"}],"studios":[{"mal_id":14,"type":"anime","name":"Sunrise","url":"https://myanimelist.net/anime/producer/14/Sunrise"}],"genres":[{"mal_id":1,"type":"anime","name":"Action","url":"https://myanimelist.net/anime/genre/1/Action"}],"explicit_genres":[],"themes":[{"mal_id":29,"type":"anime","name":"Space","url":"https://myanimelist.net/anime/genre/29/Space"}],"demographics":[]},"properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList catalog ID of this anime entry."},"url":{"type":"string","description":"The direct MyAnimeList catalog webpage URL of the anime."},"images":{"type":"object","description":"JPG and WebP cover image URLs in small, default, and large resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"trailer":{"type":"object","description":"YouTube trailer embedding details.","properties":{"youtube_id":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"embed_url":{"type":"string","nullable":true},"images":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"medium_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true},"maximum_image_url":{"type":"string","nullable":true}}}}},"approved":{"type":"boolean","description":"Indicates whether the entry has been officially approved by MAL moderators."},"titles":{"type":"array","description":"List of alternative titles and translations of this anime.","items":{"type":"object","properties":{"type":{"type":"string","description":"The type or language classification of the title."},"title":{"type":"string","description":"The title value."}}}},"title":{"type":"string","description":"The primary default title of the anime."},"title_english":{"type":"string","nullable":true,"description":"Official English title of the anime, if available."},"title_japanese":{"type":"string","nullable":true,"description":"Official Japanese title of the anime, if available."},"title_synonyms":{"type":"array","items":{"type":"string"},"description":"Alternative names or synonyms of the title."},"type":{"type":"string","description":"The broadcast or media type (e.g. TV, Movie, OVA, ONA, Special)."},"source":{"type":"string","description":"The source material type (e.g. Manga, Light Novel, Original)."},"episodes":{"type":"integer","nullable":true,"description":"Total episodes broadcasted (null if ongoing/not aired)."},"status":{"type":"string","description":"Airing status of the anime (e.g. Finished Airing, Currently Airing, Not yet aired)."},"airing":{"type":"boolean","description":"Whether the anime is currently broadcasting live episodes."},"aired":{"type":"object","description":"Airing dates, formatted as ISO-8601 strings, split components, and text display string.","properties":{"from":{"type":"string","nullable":true},"to":{"type":"string","nullable":true},"prop":{"type":"object","properties":{"from":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}},"to":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}}}},"string":{"type":"string","nullable":true}}},"duration":{"type":"string","nullable":true,"description":"Length per episode or total runtime of the anime."},"rating":{"type":"string","nullable":true,"description":"Age rating categorization (e.g. PG-13, R - 17+)."},"score":{"type":"number","description":"The average rating score out of 10. Returns 0 when unavailable."},"scored_by":{"type":"integer","nullable":true,"description":"Total user score count."},"rank":{"type":"integer","nullable":true,"description":"Global rank based on average score."},"popularity":{"type":"integer","nullable":true,"description":"Global popularity rank based on list members."},"members":{"type":"integer","nullable":true,"description":"Total users who have this anime added to their catalog lists."},"favorites":{"type":"integer","nullable":true,"description":"Total users who favorited this anime."},"synopsis":{"type":"string","nullable":true,"description":"Main plot summary description."},"background":{"type":"string","nullable":true,"description":"Historical or context information about the production."},"season":{"type":"string","nullable":true,"description":"Season of premier (spring, summer, fall, winter)."},"year":{"type":"integer","nullable":true,"description":"Year of premier."},"broadcast":{"type":"object","description":"Weekly broadcast schedule day, time, and timezone.","properties":{"day":{"type":"string","nullable":true},"time":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true},"string":{"type":"string","nullable":true}}},"producers":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Production companies or publishers."},"licensors":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Licensing agencies."},"studios":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Animation studios."},"genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Genre classifications."},"explicit_genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Explicit genre classifications (e.g. Hentai, Ecchi)."},"themes":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Theme classifications."},"demographics":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Demographic classifications (e.g. Shonen, Seinen)."}}}}},"example":{"pagination":{"last_visible_page":1203,"has_next_page":true,"current_page":1,"items":{"count":25,"total":30070,"per_page":25}},"data":[{"mal_id":52991,"url":"https://myanimelist.net/anime/52991/Sousou_no_Frieren","images":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1015/138006.jpg","small_image_url":"https://myanimelist.net/images/anime/1015/138006t.jpg","large_image_url":"https://myanimelist.net/images/anime/1015/138006l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1015/138006.webp","small_image_url":"https://myanimelist.net/images/anime/1015/138006t.webp","large_image_url":"https://myanimelist.net/images/anime/1015/138006l.webp"}},"trailer":{"youtube_id":"ZEkwCGJ3o7M","url":"https://www.youtube.com/watch?v=ZEkwCGJ3o7M","embed_url":"https://www.youtube-nocookie.com/embed/ZEkwCGJ3o7M?enablejsapi=1&wmode=opaque&autoplay=1","images":{"image_url":"https://img.youtube.com/vi/ZEkwCGJ3o7M/default.jpg","small_image_url":"https://img.youtube.com/vi/ZEkwCGJ3o7M/sddefault.jpg","medium_image_url":"https://img.youtube.com/vi/ZEkwCGJ3o7M/mqdefault.jpg","large_image_url":"https://img.youtube.com/vi/ZEkwCGJ3o7M/hqdefault.jpg","maximum_image_url":"https://img.youtube.com/vi/ZEkwCGJ3o7M/maxresdefault.jpg"}},"approved":true,"titles":[{"type":"Default","title":"Sousou no Frieren"},{"type":"Synonym","title":"Frieren at the Funeral"},{"type":"Synonym","title":"Frieren The Slayer"},{"type":"Japanese","title":"葬送のフリーレン"},{"type":"English","title":"Frieren: Beyond Journey's End"}],"title":"Sousou no Frieren","title_english":"Frieren: Beyond Journey's End","title_japanese":"葬送のフリーレン","title_synonyms":["Frieren at the Funeral","Frieren The Slayer"],"type":"TV","source":"Manga","episodes":28,"status":"Finished Airing","airing":false,"aired":{"from":"2023-09-29T00:00:00+00:00","to":"2024-03-22T00:00:00+00:00","prop":{"from":{"day":29,"month":9,"year":2023},"to":{"day":22,"month":3,"year":2024}},"string":"Sep 29, 2023 to Mar 22, 2024"},"duration":"24 min per ep","rating":"PG-13 - Teens 13 or older","score":9.26,"scored_by":895001,"rank":1,"popularity":104,"members":1453831,"favorites":90269,"synopsis":"During their decade-long quest to defeat the Demon King, the members of the hero's party—Himmel himself, the priest Heiter, the dwarf warrior Eisen, and the elven mage Frieren—forge bonds through adventures and battles, creating unforgettable precious memories for most of them...","background":"Sousou no Frieren was released on Blu-ray and DVD in seven volumes from January 24, 2024, to July 17, 2024. The series aired on Nippon TV's Friday Anime Night block.","season":"fall","year":2023,"broadcast":{"day":"Fridays","time":"23:00","timezone":"Asia/Tokyo","string":"Fridays at 23:00 (JST)"},"producers":[{"mal_id":17,"type":"anime","name":"Aniplex","url":"https://myanimelist.net/anime/producer/17/Aniplex"},{"mal_id":53,"type":"anime","name":"Dentsu","url":"https://myanimelist.net/anime/producer/53/Dentsu"},{"mal_id":62,"type":"anime","name":"Shogakukan-Shueisha Productions","url":"https://myanimelist.net/anime/producer/62/Shogakukan-Shueisha_Productions"},{"mal_id":1003,"type":"anime","name":"Nippon Television Network","url":"https://myanimelist.net/anime/producer/1003/Nippon_Television_Network"},{"mal_id":1143,"type":"anime","name":"TOHO animation","url":"https://myanimelist.net/anime/producer/1143/TOHO_animation"},{"mal_id":1430,"type":"anime","name":"Shogakukan","url":"https://myanimelist.net/anime/producer/1430/Shogakukan"}],"licensors":[{"mal_id":1468,"type":"anime","name":"Crunchyroll","url":"https://myanimelist.net/anime/producer/1468/Crunchyroll"}],"studios":[{"mal_id":11,"type":"anime","name":"Madhouse","url":"https://myanimelist.net/anime/producer/11/Madhouse"}],"genres":[{"mal_id":2,"type":"anime","name":"Adventure","url":"https://myanimelist.net/anime/genre/2/Adventure"},{"mal_id":46,"type":"anime","name":"Award Winning","url":"https://myanimelist.net/anime/genre/46/Award_Winning"},{"mal_id":8,"type":"anime","name":"Drama","url":"https://myanimelist.net/anime/genre/8/Drama"},{"mal_id":10,"type":"anime","name":"Fantasy","url":"https://myanimelist.net/anime/genre/10/Fantasy"}],"explicit_genres":[],"themes":[],"demographics":[{"mal_id":27,"type":"anime","name":"Shounen","url":"https://myanimelist.net/anime/genre/27/Shounen"}]}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"top/manga":{"get":{"summary":"Top Manga","tags":["Top"],"description":"Get top-ranked manga ordered by MAL score and rank.","parameters":[{"schema":{"type":"integer","default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":25,"maximum":50},"in":"query","name":"limit","required":false},{"schema":{"type":"string","enum":["manga","novel","lightnovel","oneshot","doujin","manhwa","manhua"]},"in":"query","name":"type","required":false},{"schema":{"type":"string","enum":["publishing","upcoming","bypopularity","favorite"]},"in":"query","name":"filter","required":false}],"responses":{"200":{"description":"Successful response returning top manga series","content":{"application/json":{"schema":{"description":"Successful response returning top manga series","type":"object","properties":{"pagination":{"type":"object","description":"Standard Jikan pagination metadata showing page count, total records, and navigation state.","example":{"last_visible_page":42,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1042,"per_page":25}},"properties":{"last_visible_page":{"type":"integer","description":"The highest page number available for this query"},"has_next_page":{"type":"boolean","description":"Whether there are more results on the next page"},"current_page":{"type":"integer","description":"The current page number requested"},"items":{"type":"object","description":"Detailed item pagination counts","properties":{"count":{"type":"integer","description":"Number of records returned on the current page"},"total":{"type":"integer","description":"Total number of matching records in the database"},"per_page":{"type":"integer","description":"Maximum number of records per page"}}}}},"data":{"type":"array","items":{"type":"object","description":"Core schema representing a manga series with its main metadata.","example":{"mal_id":2,"url":"https://myanimelist.net/manga/2/Berserk","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/manga/1/157896.jpg","small_image_url":"https://cdn.myanimelist.net/images/manga/1/157896t.jpg","large_image_url":"https://cdn.myanimelist.net/images/manga/1/157896l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/manga/1/157896.webp","small_image_url":"https://cdn.myanimelist.net/images/manga/1/157896t.webp","large_image_url":"https://cdn.myanimelist.net/images/manga/1/157896l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Berserk"},{"type":"Japanese","title":"ベルセルク"}],"title":"Berserk","title_english":"Berserk","title_japanese":"ベルセルク","title_synonyms":[],"type":"Manga","chapters":364,"volumes":41,"status":"Publishing","publishing":true,"published":{"from":"1989-08-25T00:00:00+00:00","to":null,"prop":{"from":{"day":25,"month":8,"year":1989},"to":{"day":null,"month":null,"year":null}},"string":"Aug 25, 1989 to Present"},"score":9.47,"scored":9.47,"scored_by":320000,"rank":1,"popularity":2,"members":640000,"favorites":120000,"synopsis":"Guts, a former mercenary now known as the 'Black Swordsman,' is out for revenge.","background":"Berserk won the Award for Excellence at the sixth installment of the Tezuka Osamu Cultural Prize in 2002.","authors":[{"mal_id":1868,"type":"people","name":"Miura, Kentarou","url":"https://myanimelist.net/people/1868/Kentarou_Miura","role":"Story & Art"},{"mal_id":49592,"type":"people","name":"Studio Gaga","url":"https://myanimelist.net/people/49592/Studio_Gaga","role":"Art"}],"serializations":[{"mal_id":2,"type":"manga","name":"Young Animal","url":"https://myanimelist.net/manga/magazine/2/Young_Animal"}],"genres":[{"mal_id":1,"type":"manga","name":"Action","url":"https://myanimelist.net/manga/genre/1/Action"}],"explicit_genres":[],"themes":[{"mal_id":58,"type":"manga","name":"Gore","url":"https://myanimelist.net/manga/genre/58/Gore"}],"demographics":[{"mal_id":41,"type":"manga","name":"Seinen","url":"https://myanimelist.net/manga/genre/41/Seinen"}]},"properties":{"mal_id":{"type":"integer","description":"The MyAnimeList catalog ID of this manga entry."},"url":{"type":"string","description":"The MyAnimeList catalog webpage URL of the manga."},"images":{"type":"object","description":"JPG and WebP cover image URLs in small, default, and large resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"approved":{"type":"boolean","description":"Indicates whether the entry has been officially approved by MAL moderators."},"titles":{"type":"array","description":"List of alternative titles and translations of this manga.","items":{"type":"object","properties":{"type":{"type":"string","description":"The language/type classification of this title."},"title":{"type":"string","description":"The title value."}}}},"title":{"type":"string","description":"The primary default title of the manga."},"title_english":{"type":"string","nullable":true,"description":"Official English title of the manga, if available."},"title_japanese":{"type":"string","nullable":true,"description":"Official Japanese title of the manga, if available."},"title_synonyms":{"type":"array","items":{"type":"string"},"description":"Alternative names or synonyms of the title."},"type":{"type":"string","description":"The publication format (e.g. Manga, Novel, Light Novel, One-shot)."},"chapters":{"type":"integer","nullable":true,"description":"Total chapters published (null if ongoing)."},"volumes":{"type":"integer","nullable":true,"description":"Total volumes published (null if ongoing)."},"status":{"type":"string","description":"Publishing status of the manga (e.g. Publishing, Finished, On Hiatus)."},"publishing":{"type":"boolean","description":"Whether the manga is currently in active serialization."},"published":{"type":"object","description":"Publication date details, including dates in ISO-8601 formatting, split components, and text display string.","properties":{"from":{"type":"string","nullable":true},"to":{"type":"string","nullable":true},"prop":{"type":"object","properties":{"from":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}},"to":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}}}},"string":{"type":"string","nullable":true}}},"score":{"type":"number","description":"The average rating score out of 10. Returns 0 when unavailable."},"scored":{"type":"number","description":"Duplicate score field included for Jikan v4 compatibility. Returns 0 when unavailable."},"scored_by":{"type":"integer","nullable":true,"description":"The count of users who have rated the manga."},"rank":{"type":"integer","nullable":true,"description":"Global rank of the manga based on average score."},"popularity":{"type":"integer","nullable":true,"description":"Global popularity rank based on list additions."},"members":{"type":"integer","nullable":true,"description":"Total number of users who have added this manga to their list."},"favorites":{"type":"integer","nullable":true,"description":"Total number of users who have favorited this manga."},"synopsis":{"type":"string","nullable":true,"description":"A description or synopsis of the manga storyline."},"background":{"type":"string","nullable":true,"description":"Historical, publication or marketing background context."},"authors":{"type":"array","items":{"type":"object","description":"A reference to a manga author or artist, including their credited role.","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the person."},"type":{"type":"string","description":"The type of the catalog item (always 'people')."},"name":{"type":"string","description":"The name of the author or artist."},"url":{"type":"string","description":"The MyAnimeList website link for this person."},"role":{"type":"string","nullable":true,"description":"The credited role of the person (e.g., 'Story', 'Art', 'Story & Art')."}}},"description":"Authors and artists credited for the manga, including their role (Story, Art, or Story & Art)."},"serializations":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Publications or magazines where the manga was serialized."},"genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Genre classifications of the manga."},"explicit_genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Explicit genre classifications (e.g. Hentai, Ecchi)."},"themes":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Theme classifications."},"demographics":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Demographic classifications (e.g. Shonen, Seinen, Shojo)."}}}}},"example":{"pagination":{"last_visible_page":3341,"has_next_page":true,"current_page":1,"items":{"count":25,"total":83509,"per_page":25}},"data":[{"mal_id":2,"url":"https://myanimelist.net/manga/2/Berserk","images":{"jpg":{"image_url":"https://myanimelist.net/images/manga/1/157897.jpg","small_image_url":"https://myanimelist.net/images/manga/1/157897t.jpg","large_image_url":"https://myanimelist.net/images/manga/1/157897l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/manga/1/157897.webp","small_image_url":"https://myanimelist.net/images/manga/1/157897t.webp","large_image_url":"https://myanimelist.net/images/manga/1/157897l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Berserk"},{"type":"Synonym","title":"Berserk: The Prototype"},{"type":"Japanese","title":"ベルセルク"},{"type":"English","title":"Berserk"}],"title":"Berserk","title_english":"Berserk","title_japanese":"ベルセルク","title_synonyms":["Berserk: The Prototype"],"type":"Manga","chapters":null,"volumes":null,"status":"Publishing","publishing":true,"published":{"from":"1989-08-25T00:00:00+00:00","to":null,"prop":{"from":{"day":25,"month":8,"year":1989},"to":{"day":null,"month":null,"year":null}},"string":"Aug 25, 1989 to ?"},"score":9.46,"scored":9.46,"scored_by":399805,"rank":1,"popularity":1,"members":799030,"favorites":138241,"synopsis":"Guts, a former mercenary now known as the Black Swordsman, is out for revenge...","background":"Berserk won the Excellence Award at the sixth Tezuka Osamu Cultural Prize in 2002. As of August 2025, over 70 million copies of the manga are in circulation...","authors":[{"mal_id":1868,"type":"people","name":"Miura, Kentarou","url":"https://myanimelist.net/people/1868/Kentarou_Miura","role":"Story & Art"},{"mal_id":49592,"type":"people","name":"Studio Gaga","url":"https://myanimelist.net/people/49592/Studio_Gaga","role":"Art"}],"serializations":[{"mal_id":2,"type":"manga","name":"Young Animal","url":"https://myanimelist.net/manga/magazine/2/Young_Animal"}],"genres":[{"mal_id":1,"type":"manga","name":"Action","url":"https://myanimelist.net/manga/genre/1/Action"},{"mal_id":2,"type":"manga","name":"Adventure","url":"https://myanimelist.net/manga/genre/2/Adventure"},{"mal_id":46,"type":"manga","name":"Award Winning","url":"https://myanimelist.net/manga/genre/46/Award_Winning"},{"mal_id":8,"type":"manga","name":"Drama","url":"https://myanimelist.net/manga/genre/8/Drama"},{"mal_id":10,"type":"manga","name":"Fantasy","url":"https://myanimelist.net/manga/genre/10/Fantasy"},{"mal_id":14,"type":"manga","name":"Horror","url":"https://myanimelist.net/manga/genre/14/Horror"}],"explicit_genres":[],"themes":[{"mal_id":58,"type":"manga","name":"Gore","url":"https://myanimelist.net/manga/genre/58/Gore"},{"mal_id":38,"type":"manga","name":"Military","url":"https://myanimelist.net/manga/genre/38/Military"},{"mal_id":40,"type":"manga","name":"Psychological","url":"https://myanimelist.net/manga/genre/40/Psychological"}],"demographics":[{"mal_id":41,"type":"manga","name":"Seinen","url":"https://myanimelist.net/manga/genre/41/Seinen"}]}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"top/people":{"get":{"summary":"Top People","tags":["Top"],"description":"Get the most favorited people","parameters":[{"schema":{"type":"integer","default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":25,"maximum":50},"in":"query","name":"limit","required":false}],"responses":{"200":{"description":"Successful response returning top people","content":{"application/json":{"schema":{"description":"Successful response returning top people","type":"object","properties":{"pagination":{"type":"object","description":"Standard Jikan pagination metadata showing page count, total records, and navigation state.","example":{"last_visible_page":42,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1042,"per_page":25}},"properties":{"last_visible_page":{"type":"integer","description":"The highest page number available for this query"},"has_next_page":{"type":"boolean","description":"Whether there are more results on the next page"},"current_page":{"type":"integer","description":"The current page number requested"},"items":{"type":"object","description":"Detailed item pagination counts","properties":{"count":{"type":"integer","description":"Number of records returned on the current page"},"total":{"type":"integer","description":"Total number of matching records in the database"},"per_page":{"type":"integer","description":"Maximum number of records per page"}}}}},"data":{"type":"array","items":{"type":"object","description":"Core schema representing a person (voice actor, staff, or author).","example":{"mal_id":118,"url":"https://myanimelist.net/people/118/Hiroshi_Kamiya","website_url":"http://www.aoni.co.jp/actor/ka/kamiya-hiroshi.html","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/voiceactors/3/62551.jpg"}},"name":"Kamiya, Hiroshi","given_name":"Hiroshi","family_name":"Kamiya","alternate_names":["神谷 浩史"],"birthday":"1975-01-28T00:00:00+00:00","favorites":98000,"about":"Hiroshi Kamiya is a Japanese voice actor, singer and narrator affiliated with Aoni Production."},"properties":{"mal_id":{"type":"integer","description":"Unique person ID on MyAnimeList."},"url":{"type":"string","description":"Direct profile page URL on MyAnimeList."},"website_url":{"type":"string","nullable":true,"description":"Official website URL of the person, if available."},"images":{"type":"object","description":"Portrait JPG image URLs.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true}}}}},"name":{"type":"string","description":"The full name of the person (Family, Given)."},"given_name":{"type":"string","nullable":true,"description":"The given name of the person."},"family_name":{"type":"string","nullable":true,"description":"The family name of the person."},"alternate_names":{"type":"array","items":{"type":"string"},"description":"Alternative names, nicknames or kanji aliases."},"birthday":{"type":"string","nullable":true,"description":"Birthday date in ISO 8601 format."},"favorites":{"type":"integer","description":"Total list favorited count on MyAnimeList."},"about":{"type":"string","nullable":true,"description":"Biography, career summary, and additional context description."}}}}},"example":{"pagination":{"last_visible_page":1985,"has_next_page":true,"current_page":1,"items":{"count":25,"total":49618,"per_page":25}},"data":[{"mal_id":118,"url":"https://myanimelist.net/people/118/Hiroshi_Kamiya","website_url":"http://www.seiyuawards.jp/winning/winning_09","images":{"jpg":{"image_url":"https://myanimelist.net/images/voiceactors/1/66163.jpg"}},"name":"Hiroshi Kamiya","given_name":"浩史","family_name":"神谷","alternate_names":["ヒロC","HiroC","Kamiyan"],"birthday":"1975-01-28T00:00:00+00:00","favorites":108511,"about":"Birth place: Matsudo, Chiba Prefecture, Japan\n\nHeight: 167 cm (5'6\")\n\nWeight: 53 kg (117 lbs)\n\nBlood type: A\n\nKamiya Hiroshi went to Aoni Juku and decided to pursue voice acting..."}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"top/characters":{"get":{"summary":"Top Characters","tags":["Top"],"description":"Get the most favorited characters","parameters":[{"schema":{"type":"integer","default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":25,"maximum":50},"in":"query","name":"limit","required":false}],"responses":{"200":{"description":"Successful response returning top characters","content":{"application/json":{"schema":{"description":"Successful response returning top characters","type":"object","properties":{"pagination":{"type":"object","description":"Standard Jikan pagination metadata showing page count, total records, and navigation state.","example":{"last_visible_page":42,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1042,"per_page":25}},"properties":{"last_visible_page":{"type":"integer","description":"The highest page number available for this query"},"has_next_page":{"type":"boolean","description":"Whether there are more results on the next page"},"current_page":{"type":"integer","description":"The current page number requested"},"items":{"type":"object","description":"Detailed item pagination counts","properties":{"count":{"type":"integer","description":"Number of records returned on the current page"},"total":{"type":"integer","description":"Total number of matching records in the database"},"per_page":{"type":"integer","description":"Maximum number of records per page"}}}}},"data":{"type":"array","items":{"type":"object","description":"Core schema representing an anime or manga character.","example":{"mal_id":40,"url":"https://myanimelist.net/character/40/Monkey_D_Luffy","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/characters/9/310307.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/characters/9/310307.webp","small_image_url":"https://cdn.myanimelist.net/images/characters/9/310307t.webp"}},"name":"Luffy, Monkey D.","name_kanji":"モンキー・D・ルフィ","nicknames":["Straw Hat Luffy","Luffytarou"],"favorites":130000,"about":"Monkey D. Luffy is the main protagonist of the anime and manga One Piece."},"properties":{"mal_id":{"type":"integer","description":"Unique character ID on MyAnimeList."},"url":{"type":"string","description":"Direct character profile page URL on MyAnimeList."},"images":{"type":"object","description":"JPG and WebP character headshots in various resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string"}}},"webp":{"type":"object","properties":{"image_url":{"type":"string"},"small_image_url":{"type":"string"}}}}},"name":{"type":"string","description":"The full name of the character (Family, Given)."},"name_kanji":{"type":"string","nullable":true,"description":"Kanji representation of the name, if available."},"nicknames":{"type":"array","items":{"type":"string"},"description":"Nicknames or aliases of the character."},"favorites":{"type":"integer","description":"Total favorited count on MyAnimeList."},"about":{"type":"string","nullable":true,"description":"Biography and descriptive text for the character."}}}}},"example":{"pagination":{"last_visible_page":8925,"has_next_page":true,"current_page":1,"items":{"count":25,"total":223116,"per_page":25}},"data":[{"mal_id":417,"url":"https://myanimelist.net/character/417/Lelouch_Lamperouge","images":{"jpg":{"image_url":"https://myanimelist.net/images/characters/8/406163.jpg"},"webp":{"image_url":"https://myanimelist.net/images/characters/8/406163.webp","small_image_url":"https://myanimelist.net/images/characters/8/406163t.webp"}},"name":"Lelouch Lamperouge","name_kanji":"ルルーシュ・ランペルージ","nicknames":["Lelouch vi Britannia","Zero","Lulu","Black Prince","The Demon Emperor","L.L."],"favorites":179417,"about":"Age: 17 (first season), 18 (second season)\n\nBirthdate: December 5, 1999 a.t.b. (Sagittarius)\n\nBlood Type: A\n\nNationality: Britannia\n\nHeight: 178 cm (5'10\")\n\nLelouch is the main protagonist of the anime/manga series Code Geass..."}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"top/reviews":{"get":{"summary":"Top Reviews","tags":["Top"],"description":"Get the top reviews sorted by most reactions (helpfulness).","parameters":[{"schema":{"type":"integer","default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":25,"maximum":50},"in":"query","name":"limit","required":false},{"schema":{"type":"string","enum":["anime","manga"]},"in":"query","name":"type","required":false}],"responses":{"200":{"description":"Successful response returning top reviews","content":{"application/json":{"schema":{"description":"Successful response returning top reviews","type":"object","properties":{"pagination":{"type":"object","description":"Standard Jikan pagination metadata showing page count, total records, and navigation state.","example":{"last_visible_page":42,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1042,"per_page":25}},"properties":{"last_visible_page":{"type":"integer","description":"The highest page number available for this query"},"has_next_page":{"type":"boolean","description":"Whether there are more results on the next page"},"current_page":{"type":"integer","description":"The current page number requested"},"items":{"type":"object","description":"Detailed item pagination counts","properties":{"count":{"type":"integer","description":"Number of records returned on the current page"},"total":{"type":"integer","description":"Total number of matching records in the database"},"per_page":{"type":"integer","description":"Maximum number of records per page"}}}}},"data":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"type":{"type":"string"},"reactions":{"type":"object","additionalProperties":true},"date":{"type":"string","nullable":true},"review":{"type":"string","nullable":true},"score":{"type":"integer"},"tags":{"type":"array","items":{"type":"string"}},"is_spoiler":{"type":"boolean"},"is_preliminary":{"type":"boolean"},"episodes_watched":{"type":"integer","nullable":true},"chapters_read":{"type":"integer","nullable":true},"entry":{"type":"object","additionalProperties":true},"user":{"type":"object","additionalProperties":true}}}}},"example":{"pagination":{"last_visible_page":14579,"has_next_page":true,"current_page":1,"items":{"count":25,"total":364468,"per_page":25}},"data":[{"mal_id":2772,"url":"https://myanimelist.net/reviews.php?id=2772","type":"anime","reactions":{"overall":6031,"nice":5613,"love_it":192,"funny":38,"confusing":133,"informative":7,"well_written":45,"creative":3},"date":"2008-02-28T00:00:00+00:00","review":"There are two responses I get, without fail, every time I try to get someone new to watch this show...","score":10,"tags":["Recommended"],"is_spoiler":false,"is_preliminary":false,"episodes_watched":344,"entry":{"mal_id":21,"url":"https://myanimelist.net/anime/21/One_Piece","images":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1244/138851.jpg","small_image_url":"https://myanimelist.net/images/anime/1244/138851t.jpg","large_image_url":"https://myanimelist.net/images/anime/1244/138851l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1244/138851.webp","small_image_url":"https://myanimelist.net/images/anime/1244/138851t.webp","large_image_url":"https://myanimelist.net/images/anime/1244/138851l.webp"}},"title":"One Piece"},"user":{"username":"Maxine","url":"https://myanimelist.net/profile/Maxine","images":{"jpg":{"image_url":"https://myanimelist.net/images/userimages/Maxine.jpg"},"webp":{"image_url":"https://myanimelist.net/images/userimages/Maxine.webp"}}}}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"seasons/{year}/{season}":{"get":{"summary":"Seasonal Anime","tags":["Seasons"],"description":"Get all anime from a specific season and year","parameters":[{"schema":{"type":"string","enum":["tv","movie","ova","special","ona","music"]},"in":"query","name":"filter","required":false,"description":"Filter by entry type"},{"schema":{"type":"string"},"in":"query","name":"sfw","required":false,"description":"Filter out NSFW entries when present (flag)"},{"schema":{"type":"string"},"in":"query","name":"unapproved","required":false,"description":"Include unapproved entries when present (flag)"},{"schema":{"type":"string"},"in":"query","name":"continuing","required":false,"description":"Include TV series continuing from a previous season when present (flag)"},{"schema":{"type":"string"},"in":"query","name":"kids","required":false,"description":"Filter out kids entries when present (flag)"},{"schema":{"type":"string","enum":["score","members","start_date"],"default":"score"},"in":"query","name":"order_by","required":false,"description":"Order results by a specific field (default: score)"},{"schema":{"type":"string","enum":["asc","desc"],"default":"desc"},"in":"query","name":"sort","required":false,"description":"Sort direction (default: desc)"},{"schema":{"type":"integer","default":1,"minimum":1},"in":"query","name":"page","required":false,"description":"Page number (default: 1)"},{"schema":{"type":"integer","default":25,"maximum":50},"in":"query","name":"limit","required":false,"description":"Results per page (default: 25, max: 50)"},{"schema":{"type":"integer","default":2025},"in":"path","name":"year","required":true,"description":"Year"},{"schema":{"type":"string","enum":["winter","spring","summer","fall"],"default":"winter"},"in":"path","name":"season","required":true,"description":"Season"}],"responses":{"200":{"description":"Returns seasonal anime","content":{"application/json":{"schema":{"description":"Returns seasonal anime","type":"object","properties":{"pagination":{"type":"object","description":"Standard Jikan pagination metadata showing page count, total records, and navigation state.","example":{"last_visible_page":42,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1042,"per_page":25}},"properties":{"last_visible_page":{"type":"integer","description":"The highest page number available for this query"},"has_next_page":{"type":"boolean","description":"Whether there are more results on the next page"},"current_page":{"type":"integer","description":"The current page number requested"},"items":{"type":"object","description":"Detailed item pagination counts","properties":{"count":{"type":"integer","description":"Number of records returned on the current page"},"total":{"type":"integer","description":"Total number of matching records in the database"},"per_page":{"type":"integer","description":"Maximum number of records per page"}}}}},"data":{"type":"array","items":{"type":"object","description":"Core schema representing an anime series with its main metadata.","example":{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Cowboy Bebop"},{"type":"Japanese","title":"カウボーイビバップ"}],"title":"Cowboy Bebop","title_english":"Cowboy Bebop","title_japanese":"カウボーイビバップ","title_synonyms":[],"type":"TV","source":"Original","episodes":26,"status":"Finished Airing","airing":false,"aired":{"from":"1998-04-03T00:00:00+00:00","to":"1999-04-24T00:00:00+00:00","prop":{"from":{"day":3,"month":4,"year":1998},"to":{"day":24,"month":4,"year":1999}},"string":"Apr 3, 1998 to Apr 24, 1999"},"duration":"24 min per ep","rating":"R - 17+ (violence & profanity)","score":8.75,"scored_by":980000,"rank":28,"popularity":39,"members":1900000,"favorites":95000,"synopsis":"Crime is timeless. By the year 2071, humanity has colonized several of the planets and moons of the solar system leaving the now uninhabitable surface of planet Earth behind.","background":null,"season":"spring","year":1998,"broadcast":{"day":"Saturdays","time":"01:00","timezone":"Asia/Tokyo","string":"Saturdays at 01:00 (JST)"},"producers":[{"mal_id":23,"type":"anime","name":"Bandai Visual","url":"https://myanimelist.net/anime/producer/23/Bandai_Visual"}],"licensors":[{"mal_id":102,"type":"anime","name":"Funimation","url":"https://myanimelist.net/anime/producer/102/Funimation"}],"studios":[{"mal_id":14,"type":"anime","name":"Sunrise","url":"https://myanimelist.net/anime/producer/14/Sunrise"}],"genres":[{"mal_id":1,"type":"anime","name":"Action","url":"https://myanimelist.net/anime/genre/1/Action"}],"explicit_genres":[],"themes":[{"mal_id":29,"type":"anime","name":"Space","url":"https://myanimelist.net/anime/genre/29/Space"}],"demographics":[]},"properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList catalog ID of this anime entry."},"url":{"type":"string","description":"The direct MyAnimeList catalog webpage URL of the anime."},"images":{"type":"object","description":"JPG and WebP cover image URLs in small, default, and large resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"trailer":{"type":"object","description":"YouTube trailer embedding details.","properties":{"youtube_id":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"embed_url":{"type":"string","nullable":true},"images":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"medium_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true},"maximum_image_url":{"type":"string","nullable":true}}}}},"approved":{"type":"boolean","description":"Indicates whether the entry has been officially approved by MAL moderators."},"titles":{"type":"array","description":"List of alternative titles and translations of this anime.","items":{"type":"object","properties":{"type":{"type":"string","description":"The type or language classification of the title."},"title":{"type":"string","description":"The title value."}}}},"title":{"type":"string","description":"The primary default title of the anime."},"title_english":{"type":"string","nullable":true,"description":"Official English title of the anime, if available."},"title_japanese":{"type":"string","nullable":true,"description":"Official Japanese title of the anime, if available."},"title_synonyms":{"type":"array","items":{"type":"string"},"description":"Alternative names or synonyms of the title."},"type":{"type":"string","description":"The broadcast or media type (e.g. TV, Movie, OVA, ONA, Special)."},"source":{"type":"string","description":"The source material type (e.g. Manga, Light Novel, Original)."},"episodes":{"type":"integer","nullable":true,"description":"Total episodes broadcasted (null if ongoing/not aired)."},"status":{"type":"string","description":"Airing status of the anime (e.g. Finished Airing, Currently Airing, Not yet aired)."},"airing":{"type":"boolean","description":"Whether the anime is currently broadcasting live episodes."},"aired":{"type":"object","description":"Airing dates, formatted as ISO-8601 strings, split components, and text display string.","properties":{"from":{"type":"string","nullable":true},"to":{"type":"string","nullable":true},"prop":{"type":"object","properties":{"from":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}},"to":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}}}},"string":{"type":"string","nullable":true}}},"duration":{"type":"string","nullable":true,"description":"Length per episode or total runtime of the anime."},"rating":{"type":"string","nullable":true,"description":"Age rating categorization (e.g. PG-13, R - 17+)."},"score":{"type":"number","description":"The average rating score out of 10. Returns 0 when unavailable."},"scored_by":{"type":"integer","nullable":true,"description":"Total user score count."},"rank":{"type":"integer","nullable":true,"description":"Global rank based on average score."},"popularity":{"type":"integer","nullable":true,"description":"Global popularity rank based on list members."},"members":{"type":"integer","nullable":true,"description":"Total users who have this anime added to their catalog lists."},"favorites":{"type":"integer","nullable":true,"description":"Total users who favorited this anime."},"synopsis":{"type":"string","nullable":true,"description":"Main plot summary description."},"background":{"type":"string","nullable":true,"description":"Historical or context information about the production."},"season":{"type":"string","nullable":true,"description":"Season of premier (spring, summer, fall, winter)."},"year":{"type":"integer","nullable":true,"description":"Year of premier."},"broadcast":{"type":"object","description":"Weekly broadcast schedule day, time, and timezone.","properties":{"day":{"type":"string","nullable":true},"time":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true},"string":{"type":"string","nullable":true}}},"producers":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Production companies or publishers."},"licensors":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Licensing agencies."},"studios":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Animation studios."},"genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Genre classifications."},"explicit_genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Explicit genre classifications (e.g. Hentai, Ecchi)."},"themes":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Theme classifications."},"demographics":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Demographic classifications (e.g. Shonen, Seinen)."}}}}},"example":{"pagination":{"last_visible_page":6,"has_next_page":true,"current_page":1,"items":{"count":25,"total":144,"per_page":25}},"data":[{"mal_id":61316,"url":"https://myanimelist.net/anime/61316/Re__Zero_kara_Hajimeru_Isekai_Seikatsu_4th_Season","images":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1540/155824.jpg","small_image_url":"https://myanimelist.net/images/anime/1540/155824t.jpg","large_image_url":"https://myanimelist.net/images/anime/1540/155824l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1540/155824.webp","small_image_url":"https://myanimelist.net/images/anime/1540/155824t.webp","large_image_url":"https://myanimelist.net/images/anime/1540/155824l.webp"}},"trailer":{"youtube_id":"jVl4bY81iIs","url":"https://www.youtube.com/watch?v=jVl4bY81iIs","embed_url":"https://www.youtube-nocookie.com/embed/jVl4bY81iIs?enablejsapi=1&wmode=opaque&autoplay=1","images":{"image_url":"https://img.youtube.com/vi/jVl4bY81iIs/default.jpg","small_image_url":"https://img.youtube.com/vi/jVl4bY81iIs/sddefault.jpg","medium_image_url":"https://img.youtube.com/vi/jVl4bY81iIs/mqdefault.jpg","large_image_url":"https://img.youtube.com/vi/jVl4bY81iIs/hqdefault.jpg","maximum_image_url":"https://img.youtube.com/vi/jVl4bY81iIs/maxresdefault.jpg"}},"approved":true,"titles":[{"type":"Default","title":"Re:Zero kara Hajimeru Isekai Seikatsu 4th Season"},{"type":"Synonym","title":"Re: Life in a different world from zero"},{"type":"Synonym","title":"ReZero"},{"type":"Japanese","title":"Re:ゼロから始める異世界生活 4th season"},{"type":"English","title":"Re:ZERO -Starting Life in Another World- Season 4"}],"title":"Re:Zero kara Hajimeru Isekai Seikatsu 4th Season","title_english":"Re:ZERO -Starting Life in Another World- Season 4","title_japanese":"Re:ゼロから始める異世界生活 4th season","title_synonyms":["Re: Life in a different world from zero","ReZero"],"type":"TV","source":"Light novel","episodes":19,"status":"Currently Airing","airing":true,"aired":{"from":"2026-04-08T00:00:00+00:00","to":null,"prop":{"from":{"day":8,"month":4,"year":2026},"to":{"day":null,"month":null,"year":null}},"string":"Apr 8, 2026 to ?"},"duration":"23 min per ep","rating":"R - 17+ (violence & profanity)","score":8.98,"scored_by":42320,"rank":16,"popularity":1175,"members":242617,"favorites":2863,"synopsis":"In the deadly battle at the Watergate City of Priestella, Subaru and his allies barely emerged victorious—but their triumph came at a great cost. Through the \"Authority of Gluttony,\" Rem was put into suspended animation, while Crusch's memories and even Julius’s name were devoured. As he searches for a way to save them, Subaru learns of the \"Sage\" Shaula—an all-seeing being said to possess every form of knowledge...","background":"Re:Zero kara Hajimeru Isekai Seikatsu 4th Season is comprised of two arcs. The first eleven episodes are subtitled Soushitsu-hen (Loss Arc). The latter eight, subtitled Dakkan-hen (Recapture Arc), began airing on August 12, 2026.","season":"spring","year":2026,"broadcast":{"day":"Wednesdays","time":"22:00","timezone":"Asia/Tokyo","string":"Wednesdays at 22:00 (JST)"},"producers":[{"mal_id":238,"type":"anime","name":"AT-X","url":"https://myanimelist.net/anime/producer/238/AT-X"},{"mal_id":306,"type":"anime","name":"Magic Capsule","url":"https://myanimelist.net/anime/producer/306/Magic_Capsule"},{"mal_id":647,"type":"anime","name":"Memory-Tech","url":"https://myanimelist.net/anime/producer/647/Memory-Tech"},{"mal_id":1333,"type":"anime","name":"Hakuhodo DY Music & Pictures","url":"https://myanimelist.net/anime/producer/1333/Hakuhodo_DY_Music___Pictures"},{"mal_id":1696,"type":"anime","name":"Kadokawa","url":"https://myanimelist.net/anime/producer/1696/Kadokawa"},{"mal_id":2927,"type":"anime","name":"DAXEL","url":"https://myanimelist.net/anime/producer/2927/DAXEL"}],"licensors":[],"studios":[{"mal_id":314,"type":"anime","name":"White Fox","url":"https://myanimelist.net/anime/producer/314/White_Fox"}],"genres":[{"mal_id":8,"type":"anime","name":"Drama","url":"https://myanimelist.net/anime/genre/8/Drama"},{"mal_id":10,"type":"anime","name":"Fantasy","url":"https://myanimelist.net/anime/genre/10/Fantasy"},{"mal_id":41,"type":"anime","name":"Suspense","url":"https://myanimelist.net/anime/genre/41/Suspense"}],"explicit_genres":[],"themes":[{"mal_id":62,"type":"anime","name":"Isekai","url":"https://myanimelist.net/anime/genre/62/Isekai"},{"mal_id":40,"type":"anime","name":"Psychological","url":"https://myanimelist.net/anime/genre/40/Psychological"},{"mal_id":78,"type":"anime","name":"Time Travel","url":"https://myanimelist.net/anime/genre/78/Time_Travel"}],"demographics":[]}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"seasons/now":{"get":{"summary":"Seasonal Anime Current","tags":["Seasons"],"description":"Get anime from the current airing season","parameters":[{"schema":{"type":"string","enum":["tv","movie","ova","special","ona","music"]},"in":"query","name":"filter","required":false,"description":"Filter by entry type"},{"schema":{"type":"string"},"in":"query","name":"sfw","required":false,"description":"Filter out NSFW entries when present (flag)"},{"schema":{"type":"string"},"in":"query","name":"unapproved","required":false,"description":"Include unapproved entries when present (flag)"},{"schema":{"type":"string"},"in":"query","name":"continuing","required":false,"description":"Include TV series continuing from a previous season when present (flag)"},{"schema":{"type":"string"},"in":"query","name":"kids","required":false,"description":"Filter out kids entries when present (flag)"},{"schema":{"type":"string","enum":["score","members","start_date"],"default":"score"},"in":"query","name":"order_by","required":false,"description":"Order results by a specific field (default: score)"},{"schema":{"type":"string","enum":["asc","desc"],"default":"desc"},"in":"query","name":"sort","required":false,"description":"Sort direction (default: desc)"},{"schema":{"type":"integer","default":1,"minimum":1},"in":"query","name":"page","required":false,"description":"Page number (default: 1)"},{"schema":{"type":"integer","default":25,"maximum":50},"in":"query","name":"limit","required":false,"description":"Results per page (default: 25, max: 50)"}],"responses":{"200":{"description":"Returns seasonal anime","content":{"application/json":{"schema":{"description":"Returns seasonal anime","type":"object","properties":{"pagination":{"type":"object","description":"Standard Jikan pagination metadata showing page count, total records, and navigation state.","example":{"last_visible_page":42,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1042,"per_page":25}},"properties":{"last_visible_page":{"type":"integer","description":"The highest page number available for this query"},"has_next_page":{"type":"boolean","description":"Whether there are more results on the next page"},"current_page":{"type":"integer","description":"The current page number requested"},"items":{"type":"object","description":"Detailed item pagination counts","properties":{"count":{"type":"integer","description":"Number of records returned on the current page"},"total":{"type":"integer","description":"Total number of matching records in the database"},"per_page":{"type":"integer","description":"Maximum number of records per page"}}}}},"data":{"type":"array","items":{"type":"object","description":"Core schema representing an anime series with its main metadata.","example":{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Cowboy Bebop"},{"type":"Japanese","title":"カウボーイビバップ"}],"title":"Cowboy Bebop","title_english":"Cowboy Bebop","title_japanese":"カウボーイビバップ","title_synonyms":[],"type":"TV","source":"Original","episodes":26,"status":"Finished Airing","airing":false,"aired":{"from":"1998-04-03T00:00:00+00:00","to":"1999-04-24T00:00:00+00:00","prop":{"from":{"day":3,"month":4,"year":1998},"to":{"day":24,"month":4,"year":1999}},"string":"Apr 3, 1998 to Apr 24, 1999"},"duration":"24 min per ep","rating":"R - 17+ (violence & profanity)","score":8.75,"scored_by":980000,"rank":28,"popularity":39,"members":1900000,"favorites":95000,"synopsis":"Crime is timeless. By the year 2071, humanity has colonized several of the planets and moons of the solar system leaving the now uninhabitable surface of planet Earth behind.","background":null,"season":"spring","year":1998,"broadcast":{"day":"Saturdays","time":"01:00","timezone":"Asia/Tokyo","string":"Saturdays at 01:00 (JST)"},"producers":[{"mal_id":23,"type":"anime","name":"Bandai Visual","url":"https://myanimelist.net/anime/producer/23/Bandai_Visual"}],"licensors":[{"mal_id":102,"type":"anime","name":"Funimation","url":"https://myanimelist.net/anime/producer/102/Funimation"}],"studios":[{"mal_id":14,"type":"anime","name":"Sunrise","url":"https://myanimelist.net/anime/producer/14/Sunrise"}],"genres":[{"mal_id":1,"type":"anime","name":"Action","url":"https://myanimelist.net/anime/genre/1/Action"}],"explicit_genres":[],"themes":[{"mal_id":29,"type":"anime","name":"Space","url":"https://myanimelist.net/anime/genre/29/Space"}],"demographics":[]},"properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList catalog ID of this anime entry."},"url":{"type":"string","description":"The direct MyAnimeList catalog webpage URL of the anime."},"images":{"type":"object","description":"JPG and WebP cover image URLs in small, default, and large resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"trailer":{"type":"object","description":"YouTube trailer embedding details.","properties":{"youtube_id":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"embed_url":{"type":"string","nullable":true},"images":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"medium_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true},"maximum_image_url":{"type":"string","nullable":true}}}}},"approved":{"type":"boolean","description":"Indicates whether the entry has been officially approved by MAL moderators."},"titles":{"type":"array","description":"List of alternative titles and translations of this anime.","items":{"type":"object","properties":{"type":{"type":"string","description":"The type or language classification of the title."},"title":{"type":"string","description":"The title value."}}}},"title":{"type":"string","description":"The primary default title of the anime."},"title_english":{"type":"string","nullable":true,"description":"Official English title of the anime, if available."},"title_japanese":{"type":"string","nullable":true,"description":"Official Japanese title of the anime, if available."},"title_synonyms":{"type":"array","items":{"type":"string"},"description":"Alternative names or synonyms of the title."},"type":{"type":"string","description":"The broadcast or media type (e.g. TV, Movie, OVA, ONA, Special)."},"source":{"type":"string","description":"The source material type (e.g. Manga, Light Novel, Original)."},"episodes":{"type":"integer","nullable":true,"description":"Total episodes broadcasted (null if ongoing/not aired)."},"status":{"type":"string","description":"Airing status of the anime (e.g. Finished Airing, Currently Airing, Not yet aired)."},"airing":{"type":"boolean","description":"Whether the anime is currently broadcasting live episodes."},"aired":{"type":"object","description":"Airing dates, formatted as ISO-8601 strings, split components, and text display string.","properties":{"from":{"type":"string","nullable":true},"to":{"type":"string","nullable":true},"prop":{"type":"object","properties":{"from":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}},"to":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}}}},"string":{"type":"string","nullable":true}}},"duration":{"type":"string","nullable":true,"description":"Length per episode or total runtime of the anime."},"rating":{"type":"string","nullable":true,"description":"Age rating categorization (e.g. PG-13, R - 17+)."},"score":{"type":"number","description":"The average rating score out of 10. Returns 0 when unavailable."},"scored_by":{"type":"integer","nullable":true,"description":"Total user score count."},"rank":{"type":"integer","nullable":true,"description":"Global rank based on average score."},"popularity":{"type":"integer","nullable":true,"description":"Global popularity rank based on list members."},"members":{"type":"integer","nullable":true,"description":"Total users who have this anime added to their catalog lists."},"favorites":{"type":"integer","nullable":true,"description":"Total users who favorited this anime."},"synopsis":{"type":"string","nullable":true,"description":"Main plot summary description."},"background":{"type":"string","nullable":true,"description":"Historical or context information about the production."},"season":{"type":"string","nullable":true,"description":"Season of premier (spring, summer, fall, winter)."},"year":{"type":"integer","nullable":true,"description":"Year of premier."},"broadcast":{"type":"object","description":"Weekly broadcast schedule day, time, and timezone.","properties":{"day":{"type":"string","nullable":true},"time":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true},"string":{"type":"string","nullable":true}}},"producers":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Production companies or publishers."},"licensors":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Licensing agencies."},"studios":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Animation studios."},"genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Genre classifications."},"explicit_genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Explicit genre classifications (e.g. Hentai, Ecchi)."},"themes":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Theme classifications."},"demographics":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Demographic classifications (e.g. Shonen, Seinen)."}}}}},"example":{"pagination":{"last_visible_page":6,"has_next_page":true,"current_page":1,"items":{"count":25,"total":144,"per_page":25}},"data":[{"mal_id":61316,"url":"https://myanimelist.net/anime/61316/Re__Zero_kara_Hajimeru_Isekai_Seikatsu_4th_Season","images":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1540/155824.jpg","small_image_url":"https://myanimelist.net/images/anime/1540/155824t.jpg","large_image_url":"https://myanimelist.net/images/anime/1540/155824l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1540/155824.webp","small_image_url":"https://myanimelist.net/images/anime/1540/155824t.webp","large_image_url":"https://myanimelist.net/images/anime/1540/155824l.webp"}},"trailer":{"youtube_id":"jVl4bY81iIs","url":"https://www.youtube.com/watch?v=jVl4bY81iIs","embed_url":"https://www.youtube-nocookie.com/embed/jVl4bY81iIs?enablejsapi=1&wmode=opaque&autoplay=1","images":{"image_url":"https://img.youtube.com/vi/jVl4bY81iIs/default.jpg","small_image_url":"https://img.youtube.com/vi/jVl4bY81iIs/sddefault.jpg","medium_image_url":"https://img.youtube.com/vi/jVl4bY81iIs/mqdefault.jpg","large_image_url":"https://img.youtube.com/vi/jVl4bY81iIs/hqdefault.jpg","maximum_image_url":"https://img.youtube.com/vi/jVl4bY81iIs/maxresdefault.jpg"}},"approved":true,"titles":[{"type":"Default","title":"Re:Zero kara Hajimeru Isekai Seikatsu 4th Season"},{"type":"Synonym","title":"Re: Life in a different world from zero"},{"type":"Synonym","title":"ReZero"},{"type":"Japanese","title":"Re:ゼロから始める異世界生活 4th season"},{"type":"English","title":"Re:ZERO -Starting Life in Another World- Season 4"}],"title":"Re:Zero kara Hajimeru Isekai Seikatsu 4th Season","title_english":"Re:ZERO -Starting Life in Another World- Season 4","title_japanese":"Re:ゼロから始める異世界生活 4th season","title_synonyms":["Re: Life in a different world from zero","ReZero"],"type":"TV","source":"Light novel","episodes":19,"status":"Currently Airing","airing":true,"aired":{"from":"2026-04-08T00:00:00+00:00","to":null,"prop":{"from":{"day":8,"month":4,"year":2026},"to":{"day":null,"month":null,"year":null}},"string":"Apr 8, 2026 to ?"},"duration":"23 min per ep","rating":"R - 17+ (violence & profanity)","score":8.98,"scored_by":42320,"rank":16,"popularity":1175,"members":242617,"favorites":2863,"synopsis":"In the deadly battle at the Watergate City of Priestella, Subaru and his allies barely emerged victorious—but their triumph came at a great cost. Through the \"Authority of Gluttony,\" Rem was put into suspended animation, while Crusch's memories and even Julius’s name were devoured. As he searches for a way to save them, Subaru learns of the \"Sage\" Shaula—an all-seeing being said to possess every form of knowledge...","background":"Re:Zero kara Hajimeru Isekai Seikatsu 4th Season is comprised of two arcs. The first eleven episodes are subtitled Soushitsu-hen (Loss Arc). The latter eight, subtitled Dakkan-hen (Recapture Arc), began airing on August 12, 2026.","season":"spring","year":2026,"broadcast":{"day":"Wednesdays","time":"22:00","timezone":"Asia/Tokyo","string":"Wednesdays at 22:00 (JST)"},"producers":[{"mal_id":238,"type":"anime","name":"AT-X","url":"https://myanimelist.net/anime/producer/238/AT-X"},{"mal_id":306,"type":"anime","name":"Magic Capsule","url":"https://myanimelist.net/anime/producer/306/Magic_Capsule"},{"mal_id":647,"type":"anime","name":"Memory-Tech","url":"https://myanimelist.net/anime/producer/647/Memory-Tech"},{"mal_id":1333,"type":"anime","name":"Hakuhodo DY Music & Pictures","url":"https://myanimelist.net/anime/producer/1333/Hakuhodo_DY_Music___Pictures"},{"mal_id":1696,"type":"anime","name":"Kadokawa","url":"https://myanimelist.net/anime/producer/1696/Kadokawa"},{"mal_id":2927,"type":"anime","name":"DAXEL","url":"https://myanimelist.net/anime/producer/2927/DAXEL"}],"licensors":[],"studios":[{"mal_id":314,"type":"anime","name":"White Fox","url":"https://myanimelist.net/anime/producer/314/White_Fox"}],"genres":[{"mal_id":8,"type":"anime","name":"Drama","url":"https://myanimelist.net/anime/genre/8/Drama"},{"mal_id":10,"type":"anime","name":"Fantasy","url":"https://myanimelist.net/anime/genre/10/Fantasy"},{"mal_id":41,"type":"anime","name":"Suspense","url":"https://myanimelist.net/anime/genre/41/Suspense"}],"explicit_genres":[],"themes":[{"mal_id":62,"type":"anime","name":"Isekai","url":"https://myanimelist.net/anime/genre/62/Isekai"},{"mal_id":40,"type":"anime","name":"Psychological","url":"https://myanimelist.net/anime/genre/40/Psychological"},{"mal_id":78,"type":"anime","name":"Time Travel","url":"https://myanimelist.net/anime/genre/78/Time_Travel"}],"demographics":[]}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"seasons/upcoming":{"get":{"summary":"Seasonal Anime Upcoming","tags":["Seasons"],"description":"Get all upcoming/announced anime that may or may not have a release date","parameters":[{"schema":{"type":"string","enum":["tv","movie","ova","special","ona","music"]},"in":"query","name":"filter","required":false,"description":"Filter by entry type"},{"schema":{"type":"string"},"in":"query","name":"sfw","required":false,"description":"Filter out NSFW entries when present (flag)"},{"schema":{"type":"string"},"in":"query","name":"unapproved","required":false,"description":"Include unapproved entries when present (flag)"},{"schema":{"type":"string"},"in":"query","name":"continuing","required":false,"description":"Include TV series continuing from a previous season when present (flag)"},{"schema":{"type":"string"},"in":"query","name":"kids","required":false,"description":"Filter out kids entries when present (flag)"},{"schema":{"type":"string","enum":["score","members","start_date"],"default":"score"},"in":"query","name":"order_by","required":false,"description":"Order results by a specific field (default: score)"},{"schema":{"type":"string","enum":["asc","desc"],"default":"desc"},"in":"query","name":"sort","required":false,"description":"Sort direction (default: desc)"},{"schema":{"type":"integer","default":1,"minimum":1},"in":"query","name":"page","required":false,"description":"Page number (default: 1)"},{"schema":{"type":"integer","default":25,"maximum":50},"in":"query","name":"limit","required":false,"description":"Results per page (default: 25, max: 50)"}],"responses":{"200":{"description":"Returns seasonal anime","content":{"application/json":{"schema":{"description":"Returns seasonal anime","type":"object","properties":{"pagination":{"type":"object","description":"Standard Jikan pagination metadata showing page count, total records, and navigation state.","example":{"last_visible_page":42,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1042,"per_page":25}},"properties":{"last_visible_page":{"type":"integer","description":"The highest page number available for this query"},"has_next_page":{"type":"boolean","description":"Whether there are more results on the next page"},"current_page":{"type":"integer","description":"The current page number requested"},"items":{"type":"object","description":"Detailed item pagination counts","properties":{"count":{"type":"integer","description":"Number of records returned on the current page"},"total":{"type":"integer","description":"Total number of matching records in the database"},"per_page":{"type":"integer","description":"Maximum number of records per page"}}}}},"data":{"type":"array","items":{"type":"object","description":"Core schema representing an anime series with its main metadata.","example":{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Cowboy Bebop"},{"type":"Japanese","title":"カウボーイビバップ"}],"title":"Cowboy Bebop","title_english":"Cowboy Bebop","title_japanese":"カウボーイビバップ","title_synonyms":[],"type":"TV","source":"Original","episodes":26,"status":"Finished Airing","airing":false,"aired":{"from":"1998-04-03T00:00:00+00:00","to":"1999-04-24T00:00:00+00:00","prop":{"from":{"day":3,"month":4,"year":1998},"to":{"day":24,"month":4,"year":1999}},"string":"Apr 3, 1998 to Apr 24, 1999"},"duration":"24 min per ep","rating":"R - 17+ (violence & profanity)","score":8.75,"scored_by":980000,"rank":28,"popularity":39,"members":1900000,"favorites":95000,"synopsis":"Crime is timeless. By the year 2071, humanity has colonized several of the planets and moons of the solar system leaving the now uninhabitable surface of planet Earth behind.","background":null,"season":"spring","year":1998,"broadcast":{"day":"Saturdays","time":"01:00","timezone":"Asia/Tokyo","string":"Saturdays at 01:00 (JST)"},"producers":[{"mal_id":23,"type":"anime","name":"Bandai Visual","url":"https://myanimelist.net/anime/producer/23/Bandai_Visual"}],"licensors":[{"mal_id":102,"type":"anime","name":"Funimation","url":"https://myanimelist.net/anime/producer/102/Funimation"}],"studios":[{"mal_id":14,"type":"anime","name":"Sunrise","url":"https://myanimelist.net/anime/producer/14/Sunrise"}],"genres":[{"mal_id":1,"type":"anime","name":"Action","url":"https://myanimelist.net/anime/genre/1/Action"}],"explicit_genres":[],"themes":[{"mal_id":29,"type":"anime","name":"Space","url":"https://myanimelist.net/anime/genre/29/Space"}],"demographics":[]},"properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList catalog ID of this anime entry."},"url":{"type":"string","description":"The direct MyAnimeList catalog webpage URL of the anime."},"images":{"type":"object","description":"JPG and WebP cover image URLs in small, default, and large resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"trailer":{"type":"object","description":"YouTube trailer embedding details.","properties":{"youtube_id":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"embed_url":{"type":"string","nullable":true},"images":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"medium_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true},"maximum_image_url":{"type":"string","nullable":true}}}}},"approved":{"type":"boolean","description":"Indicates whether the entry has been officially approved by MAL moderators."},"titles":{"type":"array","description":"List of alternative titles and translations of this anime.","items":{"type":"object","properties":{"type":{"type":"string","description":"The type or language classification of the title."},"title":{"type":"string","description":"The title value."}}}},"title":{"type":"string","description":"The primary default title of the anime."},"title_english":{"type":"string","nullable":true,"description":"Official English title of the anime, if available."},"title_japanese":{"type":"string","nullable":true,"description":"Official Japanese title of the anime, if available."},"title_synonyms":{"type":"array","items":{"type":"string"},"description":"Alternative names or synonyms of the title."},"type":{"type":"string","description":"The broadcast or media type (e.g. TV, Movie, OVA, ONA, Special)."},"source":{"type":"string","description":"The source material type (e.g. Manga, Light Novel, Original)."},"episodes":{"type":"integer","nullable":true,"description":"Total episodes broadcasted (null if ongoing/not aired)."},"status":{"type":"string","description":"Airing status of the anime (e.g. Finished Airing, Currently Airing, Not yet aired)."},"airing":{"type":"boolean","description":"Whether the anime is currently broadcasting live episodes."},"aired":{"type":"object","description":"Airing dates, formatted as ISO-8601 strings, split components, and text display string.","properties":{"from":{"type":"string","nullable":true},"to":{"type":"string","nullable":true},"prop":{"type":"object","properties":{"from":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}},"to":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}}}},"string":{"type":"string","nullable":true}}},"duration":{"type":"string","nullable":true,"description":"Length per episode or total runtime of the anime."},"rating":{"type":"string","nullable":true,"description":"Age rating categorization (e.g. PG-13, R - 17+)."},"score":{"type":"number","description":"The average rating score out of 10. Returns 0 when unavailable."},"scored_by":{"type":"integer","nullable":true,"description":"Total user score count."},"rank":{"type":"integer","nullable":true,"description":"Global rank based on average score."},"popularity":{"type":"integer","nullable":true,"description":"Global popularity rank based on list members."},"members":{"type":"integer","nullable":true,"description":"Total users who have this anime added to their catalog lists."},"favorites":{"type":"integer","nullable":true,"description":"Total users who favorited this anime."},"synopsis":{"type":"string","nullable":true,"description":"Main plot summary description."},"background":{"type":"string","nullable":true,"description":"Historical or context information about the production."},"season":{"type":"string","nullable":true,"description":"Season of premier (spring, summer, fall, winter)."},"year":{"type":"integer","nullable":true,"description":"Year of premier."},"broadcast":{"type":"object","description":"Weekly broadcast schedule day, time, and timezone.","properties":{"day":{"type":"string","nullable":true},"time":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true},"string":{"type":"string","nullable":true}}},"producers":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Production companies or publishers."},"licensors":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Licensing agencies."},"studios":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Animation studios."},"genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Genre classifications."},"explicit_genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Explicit genre classifications (e.g. Hentai, Ecchi)."},"themes":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Theme classifications."},"demographics":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Demographic classifications (e.g. Shonen, Seinen)."}}}}},"example":{"pagination":{"last_visible_page":17,"has_next_page":true,"current_page":1,"items":{"count":25,"total":421,"per_page":25}},"data":[{"mal_id":35853,"url":"https://myanimelist.net/anime/35853/Zero_Seiki_Movie_1__Emeraldas","images":{"jpg":{"image_url":"https://myanimelist.net/images/anime/11/86764.jpg","small_image_url":"https://myanimelist.net/images/anime/11/86764t.jpg","large_image_url":"https://myanimelist.net/images/anime/11/86764l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/11/86764.webp","small_image_url":"https://myanimelist.net/images/anime/11/86764t.webp","large_image_url":"https://myanimelist.net/images/anime/11/86764l.webp"}},"trailer":{"youtube_id":null,"url":null,"embed_url":null,"images":{"image_url":null,"small_image_url":null,"medium_image_url":null,"large_image_url":null,"maximum_image_url":null}},"approved":true,"titles":[{"type":"Default","title":"Zero Seiki Movie 1: Emeraldas"},{"type":"Synonym","title":"The Zero Century Movie 1: Emeraldas"},{"type":"Synonym","title":"The Zero Century: Emeraldas"},{"type":"Japanese","title":"零世紀 エメラルダス"}],"title":"Zero Seiki Movie 1: Emeraldas","title_english":null,"title_japanese":"零世紀 エメラルダス","title_synonyms":["The Zero Century Movie 1: Emeraldas","The Zero Century: Emeraldas"],"type":"Movie","source":"Manga","episodes":1,"status":"Not yet aired","airing":false,"aired":{"from":null,"to":null,"prop":{"from":{"day":null,"month":null,"year":null},"to":{"day":null,"month":null,"year":null}},"string":null},"duration":"Unknown","rating":"None","score":0,"scored_by":0,"rank":null,"popularity":10912,"members":3306,"favorites":0,"synopsis":"An anime movie that was announced at Japan Expo and was supposed to be screened in 2020 before production was delayed.","background":null,"season":null,"year":null,"broadcast":{"day":null,"time":null,"timezone":null,"string":null},"producers":[],"licensors":[],"studios":[{"mal_id":1317,"type":"anime","name":"Production GoodBook","url":"https://myanimelist.net/anime/producer/1317/Production_GoodBook"}],"genres":[{"mal_id":1,"type":"anime","name":"Action","url":"https://myanimelist.net/anime/genre/1/Action"},{"mal_id":2,"type":"anime","name":"Adventure","url":"https://myanimelist.net/anime/genre/2/Adventure"},{"mal_id":24,"type":"anime","name":"Sci-Fi","url":"https://myanimelist.net/anime/genre/24/Sci-Fi"}],"explicit_genres":[],"themes":[],"demographics":[]}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"seasons":{"get":{"summary":"Available Seasons","tags":["Seasons"],"description":"Returns a list of all available seasons","responses":{"200":{"description":"Returns list of available year/season pairs","content":{"application/json":{"schema":{"description":"Returns list of available year/season pairs","type":"object","properties":{"pagination":{"type":"object","description":"Standard Jikan pagination metadata showing page count, total records, and navigation state.","example":{"last_visible_page":42,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1042,"per_page":25}},"properties":{"last_visible_page":{"type":"integer","description":"The highest page number available for this query"},"has_next_page":{"type":"boolean","description":"Whether there are more results on the next page"},"current_page":{"type":"integer","description":"The current page number requested"},"items":{"type":"object","description":"Detailed item pagination counts","properties":{"count":{"type":"integer","description":"Number of records returned on the current page"},"total":{"type":"integer","description":"Total number of matching records in the database"},"per_page":{"type":"integer","description":"Maximum number of records per page"}}}}},"data":{"type":"array","items":{"type":"object","properties":{"year":{"type":"integer"},"seasons":{"type":"array","items":{"type":"string"}}}}}},"example":{"pagination":{"last_visible_page":1,"has_next_page":false,"current_page":1,"items":{"count":102,"total":102,"per_page":102}},"data":[{"year":2026,"seasons":["winter","spring","summer","fall"]},{"year":2025,"seasons":["winter","spring","summer","fall"]}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"reviews/anime":{"get":{"summary":"Recent Anime Reviews","tags":["Reviews"],"description":"Get recent anime reviews from all entries","parameters":[{"schema":{"type":"integer","default":1,"minimum":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":50,"minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","enum":["newest","oldest","most_helpful"],"default":"most_helpful"},"in":"query","name":"sort","required":false,"description":"Sort by newest, oldest, or most helpful"},{"schema":{"type":"string","enum":["true","false","only"]},"in":"query","name":"preliminary","required":false,"description":"Filter preliminary reviews (true = include, false = exclude, only = exclusive)"},{"schema":{"type":"string","enum":["true","false","only"]},"in":"query","name":"spoilers","required":false,"description":"Filter spoiler reviews (true = include, false = exclude, only = exclusive)"},{"schema":{"type":"string","enum":["recommended","mixed_feelings","not_recommended"]},"in":"query","name":"sentiment","required":false,"description":"Filter by review sentiment"}],"responses":{"200":{"description":"Successful response returning recent anime reviews","content":{"application/json":{"schema":{"description":"Successful response returning recent anime reviews","type":"object","properties":{"pagination":{"type":"object","properties":{"last_visible_page":{"type":"integer"},"has_next_page":{"type":"boolean"}}},"data":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"type":{"type":"string"},"reactions":{"type":"object","additionalProperties":true},"date":{"type":"string","nullable":true},"review":{"type":"string","nullable":true},"score":{"type":"integer"},"tags":{"type":"array","items":{"type":"string"}},"is_spoiler":{"type":"boolean"},"is_preliminary":{"type":"boolean"},"episodes_watched":{"type":"integer","nullable":true},"chapters_read":{"type":"integer","nullable":true},"entry":{"type":"object","additionalProperties":true},"user":{"type":"object","additionalProperties":true}}}}},"example":{"pagination":{"last_visible_page":25,"has_next_page":true},"data":[{"mal_id":12345,"url":"https://myanimelist.net/reviews.php?id=12345","type":"anime","reactions":{"overall":45,"nice":30,"love_it":10,"funny":5,"confusing":0,"informative":20,"well_written":15,"creative":5},"date":"2026-06-06T12:00:00+00:00","review":"An absolute masterpiece. The animation, characters, soundtrack, and pacing are all top tier. Highly recommended for any anime fan.","score":10,"tags":["Recommended"],"is_spoiler":false,"is_preliminary":false,"episodes_watched":26,"entry":{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.webp"}},"title":"Cowboy Bebop"},"user":{"username":"BebopFanatic","url":"https://myanimelist.net/profile/BebopFanatic","images":{"jpg":{"image_url":"https://myanimelist.net/images/userimages/BebopFanatic.jpg"},"webp":{"image_url":"https://myanimelist.net/images/userimages/BebopFanatic.webp"}}}}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"reviews/manga":{"get":{"summary":"Recent Manga Reviews","tags":["Reviews"],"description":"Get recent manga reviews from all entries","parameters":[{"schema":{"type":"integer","default":1,"minimum":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":50,"minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","enum":["newest","oldest","most_helpful"],"default":"most_helpful"},"in":"query","name":"sort","required":false,"description":"Sort by newest, oldest, or most helpful"},{"schema":{"type":"string","enum":["true","false","only"]},"in":"query","name":"preliminary","required":false,"description":"Filter preliminary reviews (true = include, false = exclude, only = exclusive)"},{"schema":{"type":"string","enum":["true","false","only"]},"in":"query","name":"spoilers","required":false,"description":"Filter spoiler reviews (true = include, false = exclude, only = exclusive)"},{"schema":{"type":"string","enum":["recommended","mixed_feelings","not_recommended"]},"in":"query","name":"sentiment","required":false,"description":"Filter by review sentiment"}],"responses":{"200":{"description":"Successful response returning recent manga reviews","content":{"application/json":{"schema":{"description":"Successful response returning recent manga reviews","type":"object","properties":{"pagination":{"type":"object","properties":{"last_visible_page":{"type":"integer"},"has_next_page":{"type":"boolean"}}},"data":{"type":"array","items":{"type":"object","properties":{"mal_id":{"type":"integer"},"url":{"type":"string"},"type":{"type":"string"},"reactions":{"type":"object","additionalProperties":true},"date":{"type":"string","nullable":true},"review":{"type":"string","nullable":true},"score":{"type":"integer"},"tags":{"type":"array","items":{"type":"string"}},"is_spoiler":{"type":"boolean"},"is_preliminary":{"type":"boolean"},"episodes_watched":{"type":"integer","nullable":true},"chapters_read":{"type":"integer","nullable":true},"entry":{"type":"object","additionalProperties":true},"user":{"type":"object","additionalProperties":true}}}}},"example":{"pagination":{"last_visible_page":18,"has_next_page":true},"data":[{"mal_id":67890,"url":"https://myanimelist.net/reviews.php?id=67890","type":"manga","reactions":{"overall":82,"nice":50,"love_it":20,"funny":2,"confusing":1,"informative":35,"well_written":30,"creative":10},"date":"2026-06-06T12:00:00+00:00","review":"A gritty, dark, and masterfully told fantasy epic. The detail in Urasawa's art and depth of storytelling is unparalleled. A must-read.","score":10,"tags":["Recommended"],"is_spoiler":false,"is_preliminary":false,"chapters_read":162,"entry":{"mal_id":1,"url":"https://myanimelist.net/manga/1/Monster","images":{"jpg":{"image_url":"https://myanimelist.net/images/manga/3/258224.jpg","small_image_url":"https://myanimelist.net/images/manga/3/258224t.jpg","large_image_url":"https://myanimelist.net/images/manga/3/258224l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/manga/3/258224.webp","small_image_url":"https://myanimelist.net/images/manga/3/258224t.webp","large_image_url":"https://myanimelist.net/images/manga/3/258224l.webp"}},"title":"Monster"},"user":{"username":"MangaSeer","url":"https://myanimelist.net/profile/MangaSeer","images":{"jpg":{"image_url":"https://myanimelist.net/images/userimages/MangaSeer.jpg"},"webp":{"image_url":"https://myanimelist.net/images/userimages/MangaSeer.webp"}}}}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}},"schedules":{"get":{"summary":"Anime Schedules","tags":["Schedules"],"description":"Get currently airing anime by their broadcast schedule","parameters":[{"schema":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday","unknown","other"]},"in":"query","name":"filter","required":false,"description":"Filter by day of the week"},{"schema":{"type":"string","enum":["true","false",""]},"in":"query","name":"kids","required":false,"description":"Filter out kids entries (flag)"},{"schema":{"type":"string","enum":["true","false",""]},"in":"query","name":"sfw","required":false,"description":"Filter out NSFW entries (flag)"},{"schema":{"type":"boolean"},"in":"query","name":"unapproved","required":false,"description":"Include unapproved entries (flag)"},{"schema":{"type":"integer","default":1,"minimum":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","default":25,"maximum":50},"in":"query","name":"limit","required":false}],"responses":{"200":{"description":"Successful response returning scheduled anime","content":{"application/json":{"schema":{"description":"Successful response returning scheduled anime","type":"object","properties":{"pagination":{"type":"object","description":"Standard Jikan pagination metadata showing page count, total records, and navigation state.","example":{"last_visible_page":42,"has_next_page":true,"current_page":1,"items":{"count":25,"total":1042,"per_page":25}},"properties":{"last_visible_page":{"type":"integer","description":"The highest page number available for this query"},"has_next_page":{"type":"boolean","description":"Whether there are more results on the next page"},"current_page":{"type":"integer","description":"The current page number requested"},"items":{"type":"object","description":"Detailed item pagination counts","properties":{"count":{"type":"integer","description":"Number of records returned on the current page"},"total":{"type":"integer","description":"Total number of matching records in the database"},"per_page":{"type":"integer","description":"Maximum number of records per page"}}}}},"data":{"type":"array","items":{"type":"object","description":"Core schema representing an anime series with its main metadata.","example":{"mal_id":1,"url":"https://myanimelist.net/anime/1/Cowboy_Bebop","images":{"jpg":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.jpg","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.jpg","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.jpg"},"webp":{"image_url":"https://cdn.myanimelist.net/images/anime/4/19644.webp","small_image_url":"https://cdn.myanimelist.net/images/anime/4/19644t.webp","large_image_url":"https://cdn.myanimelist.net/images/anime/4/19644l.webp"}},"approved":true,"titles":[{"type":"Default","title":"Cowboy Bebop"},{"type":"Japanese","title":"カウボーイビバップ"}],"title":"Cowboy Bebop","title_english":"Cowboy Bebop","title_japanese":"カウボーイビバップ","title_synonyms":[],"type":"TV","source":"Original","episodes":26,"status":"Finished Airing","airing":false,"aired":{"from":"1998-04-03T00:00:00+00:00","to":"1999-04-24T00:00:00+00:00","prop":{"from":{"day":3,"month":4,"year":1998},"to":{"day":24,"month":4,"year":1999}},"string":"Apr 3, 1998 to Apr 24, 1999"},"duration":"24 min per ep","rating":"R - 17+ (violence & profanity)","score":8.75,"scored_by":980000,"rank":28,"popularity":39,"members":1900000,"favorites":95000,"synopsis":"Crime is timeless. By the year 2071, humanity has colonized several of the planets and moons of the solar system leaving the now uninhabitable surface of planet Earth behind.","background":null,"season":"spring","year":1998,"broadcast":{"day":"Saturdays","time":"01:00","timezone":"Asia/Tokyo","string":"Saturdays at 01:00 (JST)"},"producers":[{"mal_id":23,"type":"anime","name":"Bandai Visual","url":"https://myanimelist.net/anime/producer/23/Bandai_Visual"}],"licensors":[{"mal_id":102,"type":"anime","name":"Funimation","url":"https://myanimelist.net/anime/producer/102/Funimation"}],"studios":[{"mal_id":14,"type":"anime","name":"Sunrise","url":"https://myanimelist.net/anime/producer/14/Sunrise"}],"genres":[{"mal_id":1,"type":"anime","name":"Action","url":"https://myanimelist.net/anime/genre/1/Action"}],"explicit_genres":[],"themes":[{"mal_id":29,"type":"anime","name":"Space","url":"https://myanimelist.net/anime/genre/29/Space"}],"demographics":[]},"properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList catalog ID of this anime entry."},"url":{"type":"string","description":"The direct MyAnimeList catalog webpage URL of the anime."},"images":{"type":"object","description":"JPG and WebP cover image URLs in small, default, and large resolutions.","properties":{"jpg":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}},"webp":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true}}}}},"trailer":{"type":"object","description":"YouTube trailer embedding details.","properties":{"youtube_id":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"embed_url":{"type":"string","nullable":true},"images":{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"small_image_url":{"type":"string","nullable":true},"medium_image_url":{"type":"string","nullable":true},"large_image_url":{"type":"string","nullable":true},"maximum_image_url":{"type":"string","nullable":true}}}}},"approved":{"type":"boolean","description":"Indicates whether the entry has been officially approved by MAL moderators."},"titles":{"type":"array","description":"List of alternative titles and translations of this anime.","items":{"type":"object","properties":{"type":{"type":"string","description":"The type or language classification of the title."},"title":{"type":"string","description":"The title value."}}}},"title":{"type":"string","description":"The primary default title of the anime."},"title_english":{"type":"string","nullable":true,"description":"Official English title of the anime, if available."},"title_japanese":{"type":"string","nullable":true,"description":"Official Japanese title of the anime, if available."},"title_synonyms":{"type":"array","items":{"type":"string"},"description":"Alternative names or synonyms of the title."},"type":{"type":"string","description":"The broadcast or media type (e.g. TV, Movie, OVA, ONA, Special)."},"source":{"type":"string","description":"The source material type (e.g. Manga, Light Novel, Original)."},"episodes":{"type":"integer","nullable":true,"description":"Total episodes broadcasted (null if ongoing/not aired)."},"status":{"type":"string","description":"Airing status of the anime (e.g. Finished Airing, Currently Airing, Not yet aired)."},"airing":{"type":"boolean","description":"Whether the anime is currently broadcasting live episodes."},"aired":{"type":"object","description":"Airing dates, formatted as ISO-8601 strings, split components, and text display string.","properties":{"from":{"type":"string","nullable":true},"to":{"type":"string","nullable":true},"prop":{"type":"object","properties":{"from":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}},"to":{"type":"object","properties":{"day":{"type":"integer","nullable":true},"month":{"type":"integer","nullable":true},"year":{"type":"integer","nullable":true}}}}},"string":{"type":"string","nullable":true}}},"duration":{"type":"string","nullable":true,"description":"Length per episode or total runtime of the anime."},"rating":{"type":"string","nullable":true,"description":"Age rating categorization (e.g. PG-13, R - 17+)."},"score":{"type":"number","description":"The average rating score out of 10. Returns 0 when unavailable."},"scored_by":{"type":"integer","nullable":true,"description":"Total user score count."},"rank":{"type":"integer","nullable":true,"description":"Global rank based on average score."},"popularity":{"type":"integer","nullable":true,"description":"Global popularity rank based on list members."},"members":{"type":"integer","nullable":true,"description":"Total users who have this anime added to their catalog lists."},"favorites":{"type":"integer","nullable":true,"description":"Total users who favorited this anime."},"synopsis":{"type":"string","nullable":true,"description":"Main plot summary description."},"background":{"type":"string","nullable":true,"description":"Historical or context information about the production."},"season":{"type":"string","nullable":true,"description":"Season of premier (spring, summer, fall, winter)."},"year":{"type":"integer","nullable":true,"description":"Year of premier."},"broadcast":{"type":"object","description":"Weekly broadcast schedule day, time, and timezone.","properties":{"day":{"type":"string","nullable":true},"time":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true},"string":{"type":"string","nullable":true}}},"producers":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Production companies or publishers."},"licensors":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Licensing agencies."},"studios":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Animation studios."},"genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Genre classifications."},"explicit_genres":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Explicit genre classifications (e.g. Hentai, Ecchi)."},"themes":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Theme classifications."},"demographics":{"type":"array","items":{"type":"object","description":"A reference to another metadata catalog entry (such as a studio, author, genre, or theme).","properties":{"mal_id":{"type":"integer","description":"The unique MyAnimeList ID of the catalog item."},"type":{"type":"string","description":"The type of the catalog item (e.g., anime, manga, people)."},"name":{"type":"string","description":"The name of the catalog item."},"url":{"type":"string","description":"The MyAnimeList website link for this catalog item."}}},"description":"Demographic classifications (e.g. Shonen, Seinen)."}}}}},"example":{"pagination":{"last_visible_page":6,"has_next_page":true,"current_page":1,"items":{"count":25,"total":144,"per_page":25}},"data":[{"mal_id":61316,"url":"https://myanimelist.net/anime/61316/Re__Zero_kara_Hajimeru_Isekai_Seikatsu_4th_Season","images":{"jpg":{"image_url":"https://myanimelist.net/images/anime/1540/155824.jpg","small_image_url":"https://myanimelist.net/images/anime/1540/155824t.jpg","large_image_url":"https://myanimelist.net/images/anime/1540/155824l.jpg"},"webp":{"image_url":"https://myanimelist.net/images/anime/1540/155824.webp","small_image_url":"https://myanimelist.net/images/anime/1540/155824t.webp","large_image_url":"https://myanimelist.net/images/anime/1540/155824l.webp"}},"trailer":{"youtube_id":"jVl4bY81iIs","url":"https://www.youtube.com/watch?v=jVl4bY81iIs","embed_url":"https://www.youtube-nocookie.com/embed/jVl4bY81iIs?enablejsapi=1&wmode=opaque&autoplay=1","images":{"image_url":"https://img.youtube.com/vi/jVl4bY81iIs/default.jpg","small_image_url":"https://img.youtube.com/vi/jVl4bY81iIs/sddefault.jpg","medium_image_url":"https://img.youtube.com/vi/jVl4bY81iIs/mqdefault.jpg","large_image_url":"https://img.youtube.com/vi/jVl4bY81iIs/hqdefault.jpg","maximum_image_url":"https://img.youtube.com/vi/jVl4bY81iIs/maxresdefault.jpg"}},"approved":true,"titles":[{"type":"Default","title":"Re:Zero kara Hajimeru Isekai Seikatsu 4th Season"},{"type":"Synonym","title":"Re: Life in a different world from zero"},{"type":"Synonym","title":"ReZero"},{"type":"Japanese","title":"Re:ゼロから始める異世界生活 4th season"},{"type":"English","title":"Re:ZERO -Starting Life in Another World- Season 4"}],"title":"Re:Zero kara Hajimeru Isekai Seikatsu 4th Season","title_english":"Re:ZERO -Starting Life in Another World- Season 4","title_japanese":"Re:ゼロから始める異世界生活 4th season","title_synonyms":["Re: Life in a different world from zero","ReZero"],"type":"TV","source":"Light novel","episodes":19,"status":"Currently Airing","airing":true,"aired":{"from":"2026-04-08T00:00:00+00:00","to":null,"prop":{"from":{"day":8,"month":4,"year":2026},"to":{"day":null,"month":null,"year":null}},"string":"Apr 8, 2026 to ?"},"duration":"23 min per ep","rating":"R - 17+ (violence & profanity)","score":8.98,"scored_by":42320,"rank":16,"popularity":1175,"members":242617,"favorites":2863,"synopsis":"In the deadly battle at the Watergate City of Priestella, Subaru and his allies barely emerged victorious—but their triumph came at a great cost. Through the \"Authority of Gluttony,\" Rem was put into suspended animation, while Crusch's memories and even Julius’s name were devoured. As he searches for a way to save them, Subaru learns of the \"Sage\" Shaula—an all-seeing being said to possess every form of knowledge...","background":"Re:Zero kara Hajimeru Isekai Seikatsu 4th Season is comprised of two arcs. The first eleven episodes are subtitled Soushitsu-hen (Loss Arc). The latter eight, subtitled Dakkan-hen (Recapture Arc), began airing on August 12, 2026.","season":"spring","year":2026,"broadcast":{"day":"Wednesdays","time":"22:00","timezone":"Asia/Tokyo","string":"Wednesdays at 22:00 (JST)"},"producers":[{"mal_id":238,"type":"anime","name":"AT-X","url":"https://myanimelist.net/anime/producer/238/AT-X"},{"mal_id":306,"type":"anime","name":"Magic Capsule","url":"https://myanimelist.net/anime/producer/306/Magic_Capsule"},{"mal_id":647,"type":"anime","name":"Memory-Tech","url":"https://myanimelist.net/anime/producer/647/Memory-Tech"},{"mal_id":1333,"type":"anime","name":"Hakuhodo DY Music & Pictures","url":"https://myanimelist.net/anime/producer/1333/Hakuhodo_DY_Music___Pictures"},{"mal_id":1696,"type":"anime","name":"Kadokawa","url":"https://myanimelist.net/anime/producer/1696/Kadokawa"},{"mal_id":2927,"type":"anime","name":"DAXEL","url":"https://myanimelist.net/anime/producer/2927/DAXEL"}],"licensors":[],"studios":[{"mal_id":314,"type":"anime","name":"White Fox","url":"https://myanimelist.net/anime/producer/314/White_Fox"}],"genres":[{"mal_id":8,"type":"anime","name":"Drama","url":"https://myanimelist.net/anime/genre/8/Drama"},{"mal_id":10,"type":"anime","name":"Fantasy","url":"https://myanimelist.net/anime/genre/10/Fantasy"},{"mal_id":41,"type":"anime","name":"Suspense","url":"https://myanimelist.net/anime/genre/41/Suspense"}],"explicit_genres":[],"themes":[{"mal_id":62,"type":"anime","name":"Isekai","url":"https://myanimelist.net/anime/genre/62/Isekai"},{"mal_id":40,"type":"anime","name":"Psychological","url":"https://myanimelist.net/anime/genre/40/Psychological"},{"mal_id":78,"type":"anime","name":"Time Travel","url":"https://myanimelist.net/anime/genre/78/Time_Travel"}],"demographics":[]}]}}}}},"400":{"description":"Bad Request - Invalid parameters or request body","content":{"application/json":{"schema":{"description":"Bad Request - Invalid parameters or request body","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":400},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"BadRequestException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Invalid request parameters"},"error":{"type":"string","description":"An error details summary message.","example":"Check your input and try again."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"403":{"description":"Forbidden - You do not have permission to access this resource","content":{"application/json":{"schema":{"description":"Forbidden - You do not have permission to access this resource","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":403},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ForbiddenException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Access denied."},"error":{"type":"string","description":"An error details summary message.","example":"You do not have permission to access this resource."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"404":{"description":"Resource Not Found - The requested record does not exist","content":{"application/json":{"schema":{"description":"Resource Not Found - The requested record does not exist","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":404},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ResourceNotFoundException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Anime with ID 1 not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested resource does not exist in our database or the ID is invalid."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"405":{"description":"Method Not Allowed - Incorrect HTTP method used","content":{"application/json":{"schema":{"description":"Method Not Allowed - Incorrect HTTP method used","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":405},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"MethodNotAllowedException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Route GET /your/requested/path not found."},"error":{"type":"string","description":"An error details summary message.","example":"The requested API endpoint does not exist."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"429":{"description":"Rate Limit Exceeded - Too many requests","content":{"application/json":{"schema":{"description":"Rate Limit Exceeded - Too many requests","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":429},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"RateLimitException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"Too many requests, please try again later."},"error":{"type":"string","description":"An error details summary message.","example":"Rate limit exceeded. Please wait before making more requests."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"500":{"description":"Internal Server Error - Something went wrong on our end","content":{"application/json":{"schema":{"description":"Internal Server Error - Something went wrong on our end","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":500},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"InternalServerErrorException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"An internal server error occurred."},"error":{"type":"string","description":"An error details summary message.","example":"An unexpected error occurred."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}},"503":{"description":"Service Unavailable - The API is temporarily offline or busy","content":{"application/json":{"schema":{"description":"Service Unavailable - The API is temporarily offline or busy","type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code of the error.","example":503},"type":{"type":"string","description":"The type/class of the exception encountered.","example":"ServiceUnavailableException"},"message":{"type":"string","description":"A message explaining the cause of the error.","example":"The service is temporarily unavailable."},"error":{"type":"string","description":"An error details summary message.","example":"The API is temporarily offline for maintenance."},"path":{"type":"string","description":"The requested path that triggered the error.","example":"/your/requested/path"}}}}}}}}}},"servers":[{"url":"https://api.tenrai.org/v1/"}],"tags":[{"name":"Anime","description":"Search and retrieve anime entries. Covers full metadata including genres, studios, broadcast info, streaming links, episodes, relations, characters, and staff."},{"name":"Manga","description":"Search and retrieve manga entries. Includes authors, serialization, genres, themes, demographics, and character lists."},{"name":"Characters","description":"Character profiles with biography, kanji name, nicknames, images, and full anime/manga appearance history with voice actors."},{"name":"People","description":"Voice actor and staff profiles including anime staff roles, manga authorship credits, and voice acting roles per character."},{"name":"Producers","description":"Anime producers and studios with full production history and anime counts."},{"name":"Seasons","description":"Anime listings organized by season and year, covering every season from 1917 through current and upcoming seasons. Supports type and SFW filters."},{"name":"Top","description":"Top-ranked and most popular anime, manga, characters, and people ordered by MAL score, rank, or favorites count."},{"name":"Genres","description":"Genre, theme, and demographic classifications for anime and manga, each with a total entry count."},{"name":"Magazines","description":"Manga serialization magazines and publishers with entry counts."},{"name":"Random","description":"Returns a random anime, manga, character, or person. Useful for discovery and testing."},{"name":"Recommendations","description":"Recent community-sourced anime and manga recommendations scraped from MyAnimeList."}],"externalDocs":{"url":"https://api.tenrai.org/llms.txt","description":"AI-friendly API docs (llms.txt)"}}