jikan-rest/apiary.apib

808 lines
28 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

FORMAT: 1A
HOST: https://api.jikan.moe/v3
# Jikan
[Jikan](https://jikan.moe) is an **Unofficial** MyAnimeList API. It scrapes the website to satisfy the need for an API - which MyAnimeList lacks.
The word Jikan literally translates to Time in Japanese (時間). And that's what this API saves you of. ;)
Notice: Jikan does not support authenticated requests. You can not update your lists.
⚡ Jikan is powered thanks to all its [backers](https://github.com/jikan-me/jikan#sugoi-%E3%81%99%E3%81%94%E3%81%84-backers)! 🙏 [[Become a backer]](https://patreon.com/jikan)
##
**API Path:** `https://api.jikan.moe/v3`
**API Version**: `v3.4`
[Status](https://status.jikan.moe) | [Report an Issue](https://github.com/jikan-me/jikan-rest/issues/new) | **[Discord](http://discord.jikan.moe)**
# Information
## Links
- [Jikan.moe](https://jikan.moe)
- [About](https://jikan.moe/about)
- [Stuff using Jikan](https://jikan.moe/showcase)
## Wrappers
Wrappers are available in more than 10 different languages, see the [Wrapper List](https://github.com/jikan-me/jikan#wrappers)
## Rate Limiting
Daily Limit: **Unlimited**
- **30 requests** / minute
- **2 requests** / second
**Note: Cached requests are NOT throttled**
## Bulk Requests
This API serves as a purpose for apps/projects that are user based and make a nominal amount of requests.
⚠️ If you're using the service for the sake of populating data/making your own database;
- You are breaching [MyAnimeList's Terms Of Service](https://myanimelist.net/membership/terms_of_use). **You are responsible for what you're doing.**
- **You MUST use a delay of 4 (FOUR) SECONDS between each request**
- Requesting from multiple servers/IPs is being cheeky and is **NOT** allowed
- **ABUSING THE API WILL RESULT IN GETTING BLOCKED FROM THE SERVICE**
If you're not comfortable being that restrictive, consider setting up your own Jikan REST API - It's super easy.
- [Jikan REST API - GitHub](https://github.com/jikan-me/jikan-rest)
- [Jikan REST API - Docker](https://github.com/fethica/jikan-rest-docker)
## Disclaimer
- Jikan is not affiliated with MyAnimeList.net
- Jikan is a **free**, open-source API. Use it responsibly!
## JSON Notes
- Any property (except arrays) whose value does not exist or is undetermined, will be `null`
- Any array property whose value does not exist or is undetermined, will be **empty**
- Any `score` property whose value does not exist or is undetermined, will be `0`
- All dates and timestamps are returned in **ISO8601** format and in **UTC**
## Caching
By "caching", we refer to the data parsed from MyAnimeList that is cached temporarily on our servers for better performance.
All requests by default are cached for **24 hours** except for a few API endpoints which have their own unique cache expiry time.
Request | Cache TTL
:-------------- | :--------
All (Default) | 24 hours
Meta | 5 minutes
User | 5 minutes
Search | 120 hours (5 days)
The following Response Headers will detail cache information
Header | Remarks
:--------------------- | :--------
`Expires` | Expiry timestamp for the cache
`X-Request-Cached` | (boolean) Is the request cached?
`X-Request-Cache-Ttl` | (integer) Cache Time-To-Live in seconds
**FAQ: Why is `X-Request-Cache-Ttl` negative?**
If the cache expires, it queues a job in the background to update the cache.
So you're getting stale cache until the cache update completes.
## Allowed HTTP(s) requests
<pre>
GET: All requests are done via GET
</pre>
**The Jikan REST API does not provide authenticated requests for MyAnimeList.**
This means you can not use it to update your anime/manga lists.
**Reasons:**
- Why on earth would you send your credentials to a 3rd party API?
- MyAnimeList will block our IP after multiple failed login attempts
However, do not fret. This is possible via their own website. [Read the Specification](https://github.com/jikan-me/jikan-auth/blob/master/SPECIFICATION.md)
Furthermore, [JikanAuth](https://github.com/jikan-me/jikan-auth) is a PHP API which you can use to update your lists - it implements the **Specification** above. So feel free to come up with your own client-side solution.
# HTTP Response
- 200 `OK` - the request was successful.
- 304 `Not Modified` - You have the latest data
- 400 `Bad Request` - Youve made an invalid request
- 404 `Not Found` - Resource not found, i.e MyAnimeList responded with a 404
- 405 `Method Not Allowed` - requested method is not supported for resource
- 429 `Too Many Requests` - You are being rate limited or Jikan is being rate limited by MyAnimeList (either is specified in the error message)
- 500 `Internal Server Error` - Something is not working on our end, please open a Github issue by clicking on the generated `report_url`
- 503 `Service Unavailable` - Something is not working on MyAnimeLists end. MyAnimeList is either down/unavailable or is refusing to connect
# JSON Error Response
This is a typical error response
```
{
"status": 404,
"type": "BadResponseException",
"message": "Resource does not exist"
"error": "Something Happened"
}
```
Property | Remarks
:-------------- | :--------
`status` | HTTP Status returned
`type` | `Exception` generated from the PHP API
`message` | Appropriate error message from the REST API
`error` | Error response from the PHP API
`report_url` (fatal errors only) | Clicking on this would redirect you to a generated GitHub Issue
# Cache Validation
- All requests return a `ETag` header which is an md5 hash of the content.
- You can use this hash to verify if there's new or updated content by supplying it as the value for the `If-None-Match` header.
- You will get a `304` HTTP response if your value and the data on Jikan matches.
- If there's new/updated content, you'll get a normal `200` HTTP response with the updated content.
### How To Use
1. Use the `ETag` value as a header value for `If-None-Match` for future requests
2. If the content has changed, you will get a `304 - Not Modified` header response, otherwise `200 - OK`
![Cache Validation](https://i.imgur.com/925ozVn.png "Cache Validation")
## Anime [/anime/{id}/{request}/{parameter}]
A single anime object with all its details
**Endpoint Path:** `/anime/{id}(/request)`
### Requests
| Request | Parameter | Description |
| ------------- | ------------- | ------------- |
| `/` | N/A | Resource object with all it's details |
| `/characters_staff` | N/A | List of character and staff members |
| `/episodes` | Page number (integer) | List of episodes |
| `/news` | N/A | List of Related news |
| `/pictures` | N/A | List of Related pictures |
| `/videos` | N/A | List of Promotional Videos & episodes (if any) |
| `/stats` | N/A | Related statistical information |
| `/forum` | N/A | List of Related forum topics |
| `/moreinfo` | N/A | A string of more information (if any) |
| `/reviews` | Page number (integer) | List of Reviews written by users |
| `/recommendations` | N/A | List of Recommendations and their weightage made by users |
| `/userupdates` | Page number (integer) | List of the latest list updates made by users |
#### Remarks
##### `/episodes`
- The field `episodes_last_page` will tell you the last page of the paginated episodes list.
- The episodes page on MyAnimeList get paginated after 100 episodes. If there's an anime with more than 100 episodes, you'll have to use the parameter.
##### `/reviews`
- Only 20 items are shown per page for reviews
### Examples
- `/anime/1/characters_staff` - Returns the list of characters and staff
- `/anime/1/episodes` - Defaults to the 1st page
- `/anime/1/episodes/1` - Same as above
- `/anime/1/episodes/2` - Returns 2nd page if there's any
### Fetch Resource [GET]
+ Parameters
+ id (required, Number, `1`) ... MyAnimeList ID of the anime
+ request (optional, String, `episodes`) ... More details such as characters, staff, episodes
+ parameter (optional, Number, `2`) ... Anime with more than 100 episodes are paginated, hence this parameter is required.
+ Response 200 (application/json)
[
]
## Manga [/manga/{id}/{request}]
A single manga object with all its details
### Requests
| Request | Parameter | Description |
| ------------- | ------------- | ------------- |
| characters | N/A | Fetches the list of characters & staff members of the manga |
| news | N/A | News related to the item |
| pictures | N/A | Pictures related to the item |
| stats | N/A | Statistical information related to the item |
| forum | N/A | Forum topics related to the item |
| moreinfo | N/A | More info related to the item |
| reviews | Page number (integer) | Reviews written by users |
| recommendations | N/A | Recommendations and their weightage made by users |
| userupdates | Page number (integer) | Latest list updates made by users |
### Example Calls
- `/manga/1/characters` Returns the list of characters and staff
#### Remarks
- Only 20 items are shown per page for reviews
### Manga Request Example+Schema [GET]
+ Parameters
+ id (required, Number, `1`) ... Returns the Character details from that the ID
+ request (optional, String, `characters`) ... More details such as characters
+ Response 200 (application/json)
[
]
## Person [/person/{id}/{request}]
A single person object with all its details
### Requests
| Request | Parameter | Description |
| ------------- | ------------- | ------------- |
| pictures | N/A | Pictures related to the item |
### Person Request Example+Schema [GET]
+ Parameters
+ id (required, Number, `1`) ... Returns the Person details from that the ID
+ request (optional, String, `pictures`) ... Pictures related to the item
+ Response 200 (application/json)
[
]
## Character [/character/{id}/{request}]
A single character object with all its details
### Requests
| Request | Parameter | Description |
| ------------- | ------------- | ------------- |
| pictures | N/A | Pictures related to the item |
### Character Request Example+Schema [GET]
+ Parameters
+ id (required, Number, `1`) ... Returns the Character details from that the ID
+ request (optional, String, `pictures`) ... Pictures related to the item
+ Response 200 (application/json)
[
]
## Search [/search/{type}?q=Fate/Zero&page=1]
Search results for the query
**NOTE: MyAnimeList only processes queries with a minimum of 3 letters.** However, the search function can be used without `q`! Check examples below for more details.
### Parameters
| Parameter | Argument | Description |
| ------------- | ------------- | ------------- |
| type | anime, manga, person, character | Specify where to search |
| page | INTEGER | Page number of the results |
### Advanced Search Parameters (Anime & Manga)
**Note:** These are search filters which have to be passed as GET `key=value`
| Parameter | Argument | Description |
| ------------- | ------------- | ------------- |
| q | STRING | For UTF8 characters, percentage encoded and queries including back slashes |
| page | INTEGER | Page number |
| type | **See Enums Below** | Filter type of results |
| status | **See Enums Below** | Filter status of results |
| rated | **See Enums Below** | Filter age rating of results |
| genre | **See Enums Below** | Filter by genre ID(s) |
| score | FLOAT : 0.0-10.0 | Filter score of results |
| start_date | `yyyy-mm-dd` | Filter start date of results |
| end_date | `yyyy-mm-dd` | Filter end date of results |
| genre_exclude | boolean : 0/1 | To exclude/include the `genre` you added in your request |
| limit | INTEGER | Limits item results to the number specified |
| order_by | **See Enums Below** | Order results with respect to a property |
| sort | **See Enums Below** | Sort `order_by` (Default is `descending`) |
| producer | INTEGER | MAL ID of the producer |
| magazine | INTEGER | MAL ID of the magazine |
| letter | UTF8 Character | Search anime or manga by the letter/character it starts with |
#### Enums
##### `type`
| Anime Types | Manga Types |
| :------------ | :---------- |
| `tv` | `manga` |
| `ova` | `novel` |
| `movie` | `oneshot` |
| `special` | `doujin` |
| `ona` | `manhwa` |
| `music` | `manhua` |
##### `status`
| Anime Status | Manga Status |
| :------------ | :---------- |
| `airing` | `publishing` |
| `completed` | `completed` |
| `complete` (alias) | `complete` (alias) |
| `to_be_aired` | `to_be_published` |
| `tba` (alias) | `tbp` (alias) |
| `upcoming` (alias) | `upcoming` (alias) |
##### `rated`
Anime ratings are based on MyAnimeList's rating system.
Read more about them [here](https://myanimelist.net/info.php?go=mpaa)
| Anime Search | Remarks |
| :------------ | :----- |
| `g` | **G** - All Ages |
| `pg` | **PG** - Children |
| `pg13` | **PG-13** - Teens 13 or older |
| `r17` | **R** - 17+ recommended (violence & profanity) |
| `r` | **R+** - Mild Nudity (may also contain violence & profanity) |
| `rx` | **Rx** - Hentai (extreme sexual content/nudity) |
##### `order_by`
| Anime Search | Manga Search |
| :------------ | :---------- |
| `title` | `title` |
| `start_date` | `start_date` |
| `end_date` | `end_date` |
| `score` | `score` |
| `type` | `type` |
| `members` | `members` |
| `id` | `id` |
| `episodes` | `chapters` |
| `rating` | `volumes` |
##### `sort`
| Anime & Manga Sort |
| :------------ |
| `ascending` |
| `asc` (alias) |
| `descending` |
| `desc` (alias) |
##### `genre`
| Anime Genre | Manga Genre |
| :------------ | :---------- |
| **Action:** `1` | **Action:** `1` |
| **Adventure:** `2` | **Adventure:** `2` |
| **Cars:** `3` | **Cars:** `3` |
| **Comedy:** `4` | **Comedy:** `4` |
| **Dementia:** `5` | **Dementia:** `5` |
| **Demons:** `6` | **Demons:** `6` |
| **Mystery:** `7` | **Mystery:** `7` |
| **Drama:** `8` | **Drama:** `8` |
| **Ecchi:** `9` | **Ecchi:** `9` |
| **Fantasy:** `10` | **Fantasy:** `10` |
| **Game:** `11` | **Game:** `11` |
| **Hentai:** `12` | **Hentai:** `12` |
| **Historical:** `13` | **Historical:** `13` |
| **Horror:** `14` | **Horror:** `14` |
| **Kids:** `15` | **Kids:** `15` |
| **Magic:** `16` | **Magic:** `16` |
| **Martial Arts:** `17` | **Martial Arts:** `17` |
| **Mecha:** `18` | **Mecha:** `18` |
| **Music:** `19` | **Music:** `19` |
| **Parody:** `20` | **Parody:** `20` |
| **Samurai:** `21` | **Samurai:** `21` |
| **Romance:** `22` | **Romance:** `22` |
| **School:** `23` | **School:** `23` |
| **Sci Fi:** `24` | **Sci Fi:** `24` |
| **Shoujo:** `25` | **Shoujo:** `25` |
| **Shoujo Ai:** `26` | **Shoujo Ai:** `26` |
| **Shounen:** `27` | **Shounen:** `27` |
| **Shounen Ai:** `28` | *Shounen Ai*: `28` |
| **Space:** `29` | **Space:** `29` |
| **Sports:** `30` | **Sports:** `30` |
| **Super Power:** `31` | **Super Power:** `31` |
| **Vampire:** `32` | **Vampire:** `32` |
| **Yaoi:** `33` | **Yaoi:** `33` |
| **Yuri:** `34` | **Yuri:** `34` |
| **Harem:** `35` | **Harem:** `35` |
| **Slice Of Life:** `36` | **Slice Of Life:** `36` |
| **Supernatural:** `37` | **Supernatural:** `37` |
| **Military:** `38` | **Military:** `38` |
| **Police:** `39` | **Police:** `39` |
| **Psychological:** `40` | **Psychological:** `40` |
| **Thriller:** `41` | **Seinen:** `41` |
| **Seinen:** `42` | **Josei:** `42` |
| **Josei:** `43` | **Doujinshi:** `43` |
| | **Gender Bender:** `44` |
| | **Thriller:** `45` |
#### Examples
- `/search/manga?q=Grand%20Blue&page=1` - Search manga for 'Grand Blue'
- `/search/anime?q=Fate/Zero&page=1` - Search anime for 'Fate/Zero'
- `/search/people/?q=Sawashiro&limit=3` - Search people for 'Sawashiro', limit to 3 results
- `/search/anime?q=Boku&page=1&genre=12&genre_exclude=0` - Filter out NSFW entries by using the `genre` and `genre_exclude` parameters
In many cases, if you want to filter results by a condition, you can provide an empty query (`q=`) with the `order_by` and `sort` parameters:
- `/search/anime?q=&order_by=members&sort=desc&page=1` - Search for all anime, ordered by popularity (members, descending)
- `/search/anime?q=&page=1&genre=1,10&order_by=start_date&sort=desc` - Search for all anime which have both Genre 1 and 10 (Action, Fantasy), order by most recently released
#### Remarks
- The `last_page` field is the same as what is avaiable on the MAL Search page, its often paginated to 20 pages if there are too many results.
### Search Request Example+Schema [GET]
+ Parameters
+ type (required, String, `anime`) ... Returns result from anime search
+ Response 200 (application/json)
[
]
## Season [/season/{year}/{season}]
Anime of the specified season
**Note:** Not using parameters will return the current season's anime listing
### Parameters
| Parameter | Argument | Description |
| ------------- | ------------- | ------------- |
| year | Integer: Year | Specify the year |
| season | `summer` `spring` `fall` `winter` | Specify the season |
### Season Request Example+Schema [GET]
+ Parameters
+ year (optional, Integer, `2018`) ... Returns anime of the year
+ season (optional, String, `winter`) ... Returns anime of the season
+ Response 200 (application/json)
[
]
## Season Archive [/season/archive]
All the years & their respective seasons that can be parsed from MyAnimeList
### Season Archive Request Example+Schema [GET]
+ Response 200 (application/json)
[
]
## Season Later [/season/later]
Anime that have been announced for the upcoming seasons
### Season Later Request Example+Schema [GET]
+ Response 200 (application/json)
[
]
## Schedule [/schedule/{day}]
Anime schedule of the week or specified day
**Note:** If you don't pass the `day` parameter, it'll return the schedule for **all** days of the week
### Parameters
| Parameter | Argument | Description |
| ------------- | ------------- | ------------- |
| day (optional) | `monday` `tuesday` `wednesday` `thursday` `friday` `saturday` `sunday`, `other` **(v3)**, `unknown` **(v3)** | Anime scheduled for that specific day |
### Schedule Request Example+Schema [GET]
+ Parameters
+ day (optional, String, `monday`) ... Returns scheduled anime of that specific day
+ Response 200 (application/json)
[
]
## Top [/top/{type}/{page}/{subtype}]
Top items on MyAnimeList
**Note:** `subtype` returns a filtered top list of a type `type` item. For example, the top Anime (type) movies (subtype)
**Note 2:** `subtype` is only for `anime` and `manga` types.
**Note 3:** Date properties are returned in string as they only consist of the month and year - which is not appropriate for ISO8601
### Parameters
| Parameter | Argument | Description |
| ------------- | ------------- | ------------- |
| type | `anime` `manga`, `people` (v3+), `characters` (v3+) | Top items of this type |
| page (optional) | INTEGER | The Top page on MyAnimeList is paginated offers 50 items per page |
| subtype (optional) | **Anime:** `airing` `upcoming` `tv` `movie` `ova` `special` **Manga:** `manga` `novels` `oneshots` `doujin` `manhwa` `manhua` **Both:** `bypopularity` `favorite` |
### Top Request Example+Schema [GET]
+ Parameters
+ type (required, String, `anime`) ... Returns top items of this type
+ page (optional, Integer, `1`) ... Pagination support
+ subtype (optional, String, `upcoming`) ... Returns top items of this type filtered by their subtypes
+ Response 200 (application/json)
[
]
## Genre [/genre/{type}/{genre_id}/{page}]
Anime/Manga items of the genre
**Note:** Genres with their respective IDs are listed [here]()
### Parameters
| Parameter | Argument | Description |
| ------------- | ------------- | ------------- |
| type | `anime` `manga` | Genre of this type |
| genre_id | INTEGER | Genre ID from MyAnimeList - [Genre Mapping]() |
| page (optional) | |
### Genre Request Example+Schema [GET]
+ Parameters
+ type (required, String, `anime`) ... Returns anime/manga items of this genre
+ genre_id (optional, Integer, `1`) ... Genre ID
+ page (optional, Integer, `1`) ... Pagination
+ Response 200 (application/json)
[
]
## Producer [/producer/{producer_id}/{page}]
Anime by this Producer/Studio/Licensor
### Parameters
| Parameter | Argument | Description |
| ------------- | ------------- | ------------- |
| producer_id | INTEGER | Producer ID from MyAnimeList |
| page (optional) | |
### Producer Request Example+Schema [GET]
+ Parameters
+ producer_id (optional, Integer, `1`) ... Producer ID
+ page (optional, Integer, `1`) ... Pagination
+ Response 200 (application/json)
[
]
## Magazine [/magazine/{magazine_id}/{page}]
Manga by this Magazine/Serializer/Publisher
### Parameters
| Parameter | Argument | Description |
| ------------- | ------------- | ------------- |
| magazine_id | INTEGER | Magazine ID from MyAnimeList |
| page (optional) | |
### Magazine Request Example+Schema [GET]
+ Parameters
+ magazine_id (optional, Integer, `1`) ... Magazine ID
+ page (optional, Integer, `1`) ... Pagination
+ Response 200 (application/json)
[
]
## User [/user/{username}/{request}/{argument}]
User related data
**Note:** About is returned in HTML as MyAnimeList allows custom "about" sections for users that can consist of images, formatting, etc.
**Note 2:** Anime & Manga Lists are paginated. Only 300 items are returned per page.
### Parameters
| Parameter | Argument | Description |
| ------------- | ------------- | ------------- |
| username | string | Username on MyAnimeList |
| request | `profile`, `history`, `friends`, `animelist`, `mangalist` |
| data (optional) | Additional data for the requests |
#### Data
| Data | Argument | Description |
| ------------- | ------------- | ------------- |
| history | `anime`, `manga` | Returns both combined if neither are passed |
| friends | INTEGER | Pagination support; Status 404 if there's no friends on the page |
| animelist | **See Enums Below** |
| mangalist | **See Enums Below** |
#### User List Filter
| Anime List `/animelist` | Manga List `/mangalist` |
| :------------ | :---------- |
| `/` | `/` |
| `/all` (alias) | `/all` (alias) |
| `/watching` | `/reading` |
| `/completed` | `/completed` |
| `/onhold` | `/onhold` |
| `/dropped` | `/dropped` |
| `/plantowatch` | `/plantoread` |
| `/ptw` (alias) | `/ptr` |
### Advanced User List Parameters (Anime & Manga)
**Note:** These are search filters which have to be passed as GET `key=value`
| Parameter | Argument | Description |
| ------------- | ------------- | ------------- |
| `search` | STRING | Return items in your list matching the string |
| `q` (alias) | STRING | Return items in your list matching the string |
| `page` (alias) | INTEGER | Pass page number as a `key=value` |
| `sort` | **See Enums Below** | Sort `order_by` (Default is `descending`) |
### Advanced User List Parameters (ANIME)
| Parameter | Argument | Description |
| ------------- | ------------- | ------------- |
| `order_by` | **See Enums Below** | Order items with respect to a property |
| `order_by2` | **See Enums Below** | Order items with respect to a second property |
| `aired_from` | `yyyy-mm-dd` | Filter Anime that have aired from this date |
| `aired_to` | `yyyy-mm-dd` | Filter Anime that have aired till this date |
| `producer` | Integer | Filter Anime by this Producer ID |
| `year` | Integer: Year | Filter anime from a year |
| `season` | `summer` `spring` `fall` `winter` | Filter anime from a season (require `year`) |
| `airing_status` | **See Enums Below** | Filter Anime with a status |
### Advanced User List Parameters (MANGA)
| Parameter | Argument | Description |
| ------------- | ------------- | ------------- |
| `order_by` | **See Enums Below** | Order items with respect to a property |
| `order_by2` | **See Enums Below** | Order items with respect to a second property |
| `published_from` | `yyyy-mm-dd` | Filter Manga that have published from this date |
| `published_to` | `yyyy-mm-dd` | Filter Manga that have published till this date |
| `magazine` | Integer | Filter Manga by this Magazine ID |
| `publishing_status` | **See Enums Below** | Filter Manga with a status |
Regarding `yyyy-mm-dd` dates, you can search for only the year or only the year and the month as well.
Just pass it as `yyyy-00-00` or `yyyy-mm-00`. e.g `2018-00-00`, `2018-12-00`
#### Enums
##### `order_by` & `order_by2`
| Anime List | Manga List |
| :------------ | :---------- |
| `title` | `title` |
| `finish_date` | `finish_date` |
| `start_date` | `start_date` |
| `score` | `score` |
| `last_updated` | `last_updated` |
| `type` | `type` |
| `rated` | `` |
| `rewatch` | `` |
| `rewatch_value` (alias) | `` |
| `priority` | `priority` |
| `progress` | `progress` (`chapters_read`) |
| `episodes_watched` (alias) | `chapters_read` (alias) |
| | `volumes_read` |
| `storage` | `` |
| `air_start` | `publish_start` |
| `air_end` | `publish_end` |
| `status` | `status` |
##### `sort`
| Anime & Manga Sort |
| :------------ |
| `ascending` |
| `asc` (alias) |
| `descending` |
| `desc` (alias) |
##### `airing_status` & `publishing_status`
| Anime Airing Status | Manga Publishing Status |
| :------------ | :------------ |
| `airing` | `publishing` |
| `finished` | `finished` |
| `complete` (alias) | `complete` (alias) |
| `to_be_aired` | `to_be_published` |
| `not_yet_aired` (alias) | `not_yet_published` (alias) |
| `tba` (alias) | `tbp` (alias) |
| `nya` (alias) | `nyp` (alias) |
#### Examples
- `/user/nekomata1037` - Parses Profile
- `/user/nekomata1037/profile` (alias)
- `/user/nekomata1037/history` - Parses user history (anime+manga)
- `/user/nekomata1037/history/anime` - Parses user history (anime only)
- `/user/nekomata1037/friends` - Parses user friends
The request below will return 404 because I don't have that many friends on MAL to generate a second page.
`/user/nekomata1037/friends/2` - Parses user friends (from page 2)
**Anime & Manga Lists**
Lists are paginated (300 items per page).
- `/user/nekomata1037/animelist/all` - All anime in user list
- `/user/nekomata1037/animelist/all/2` - Page 2
- `/user/nekomata1037/mangalist/reading` - Manga that I'm currently reading
### User Request Example+Schema [GET]
+ Parameters
+ username (required, string, `Nekomata1037`) ... Username on MyAnimeList
+ request (optional, string, `history`) ... Request
+ argument (optional, string, `anime`) ... Request argument
+ Response 200 (application/json)
[
]
## Club [/club/{id}/{request}]
A single club object with all its details
### Requests
| Request | Parameter | Description |
| ------------- | ------------- | ------------- |
| members | Page (INTEGER) | Fetches list of club members |
### Example Calls
- `/club/1` // Returns club information
- `/club/1/members/1` // Returns list of club members
#### Remarks
- Only 35 items are shown per page for members
### Club Request Example+Schema [GET]
+ Parameters
+ id (required, Number, `1`) ... Returns the Club details from that the ID
+ request (optional, String, `members`) ... Return club members
+ Response 200 (application/json)
[
]
## Meta [/meta/{request}/{type}/{period}]
Requests related to meta information regarding the Jikan REST Instance.
Such as the most requested endpoints for a specific period, or just status on the REST API.
### Parameters
| Parameter | Argument | Description |
| ------------- | ------------- | ------------- |
| request | `requests` `status` | |
| type | `anime` `manga` `character` `person` `search` `top` `schedule` `season` | This is only for the `requests` endpoint |
| period | `today` `weekly` `monthly` | This is only for the `requests` endpoint |
| offset | int | 1,000 requests are shown per page, you can use the offset to show more |
### Meta Request Example+Schema [GET]
+ Parameters
+ request (required, String, `requests`) ...
+ type (required, String, `anime`) ...
+ period (required, String, `today`) ...
+ Response 200 (application/json)
[
]