mirror of
https://github.com/JustAnimeCore/HiAnime-Api.git
synced 2026-04-17 13:51:44 +00:00
1517 lines
32 KiB
Markdown
1517 lines
32 KiB
Markdown
<div align="center">
|
|
|
|
 
|
|

|
|

|
|
|
|
</div>
|
|
|
|
## <span>Disclaimer</span>
|
|
|
|
1. This `api` does not store any files , it only link to the media which is hosted on 3rd party services.
|
|
|
|
2. This `api` is explicitly made for educational purposes only and not for commercial usage. This repo will not be responsible for any misuse of it.
|
|
|
|
<p align="center">
|
|
<img
|
|
src="./public/anya.gif"
|
|
width="200"
|
|
height="200"
|
|
/>
|
|
</p>
|
|
|
|
# <p align="center">HiAnime API</p>
|
|
|
|
>
|
|
|
|
<p align="center">RestFul API made with Node.js <br/>(Checkout this anime streaming website <a href="https://justanime.fun" target="_blank">JustAnime</a> powered by this API)</p>
|
|
|
|
> <h2> Table of Contents </h2>
|
|
|
|
- [Installation](#installation)
|
|
- [Local installation](#local-installation)
|
|
- [Deployment](#deployment)
|
|
- [Vercel](#Vercel)
|
|
- [Render](#Render)
|
|
- [Documentation](#documentation)
|
|
- [GET Home Info](#get-home-info)
|
|
- [GET Top 10 Anime's Info](#get-top-10-animes-info)
|
|
- [GET Top Search](#get-top-search)
|
|
- [GET Specified Anime's Info](#get-specified-animes-info)
|
|
- [GET Random Anime's Info](#get-random-animes-info)
|
|
- [GET Categories Info](#get-categories-info)
|
|
- [GET Producer's & studio's Anime](#get-anime-of-specific-producers-or-studio)
|
|
- [GET Search Result's Info](#get-search-results-info)
|
|
- [GET Search Suggestions](#get-search-suggestions)
|
|
- [GET Anime Schedule](#get-schedule-of-upcoming-anime)
|
|
- [GET Anime's Next Epiosde's Schedule](#get-schedule-of-next-episode-of-anime)
|
|
- [GET Anime Qtip Info](#get-qtip-info)
|
|
- [GET Anime Characters](#get-characters)
|
|
- [GET Character Details](#get-character-details)
|
|
- [GET Voice Actor Details](#get-voice-actor-details)
|
|
- [GET Anime Stream Info](#get-streaming-info)
|
|
- [GET Anime Backup Stream Info](#get-fallback-streaming-info)
|
|
- [GET Anime Episodes](#get-animes-episode-list)
|
|
- [GET Anime Episode's Available Servers](#get-available-servers-of-anime)
|
|
- [Pull Requests](#pull-requests)
|
|
- [Reporting Issues](#reporting-issues)
|
|
- [Support](#support)
|
|
|
|
> # Installation
|
|
|
|
## Local installation
|
|
|
|
Make sure you have node installed on your device
|
|
|
|
1. Run the following code to clone the repository and install all required dependencies
|
|
|
|
```bash
|
|
$ git clone https://github.com/JustAnimeCore/HiAnime-Api.git
|
|
$ cd anime-api
|
|
$ npm install
|
|
```
|
|
|
|
2. Refer the [.env.example](https://github.com/JustAnimeCore/HiAnime-Api/blob/main/.env.example) file to setup `.env` file
|
|
|
|
```bash
|
|
# Origins you want to allow
|
|
|
|
ALLOWED_ORIGIN=<https://site1.com>,<https://site2.com>,...
|
|
```
|
|
|
|
3. Start the server
|
|
|
|
```bash
|
|
$ npm start #or npm run devStart
|
|
```
|
|
|
|
> # Deployment
|
|
|
|
### Vercel
|
|
|
|
Host your own instance of anime-api on vercel
|
|
|
|
[](https://vercel.com/new/clone?repository-url=https://github.com/JustAnimeCore/HiAnime-Api)
|
|
|
|
### Render
|
|
|
|
Host your own instance of anime-api on Render.
|
|
|
|
[](https://render.com/deploy?repo=https://github.com/JustAnimeCore/HiAnime-Api)
|
|
|
|
> # Documentation
|
|
|
|
### `GET` Home info
|
|
|
|
```bash
|
|
GET /api/
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/
|
|
```
|
|
|
|
> #### No parameter required ❌
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": {
|
|
"spotlights": [
|
|
{
|
|
"id":string,
|
|
"data_id": number,
|
|
"poster": string,
|
|
"title": string,
|
|
"japanese_title": string,
|
|
"description": string,
|
|
"tvInfo": {
|
|
"showType": string,
|
|
"duration": string,
|
|
"releaseDate": string,
|
|
"quality": string,
|
|
"episodeInfo": [object]
|
|
}
|
|
},
|
|
{...}
|
|
],
|
|
"trending": [
|
|
{
|
|
"id":string,
|
|
"data_id": number,
|
|
"number": number,
|
|
"poster": string,
|
|
"title": string,
|
|
"japanese_title": string,
|
|
}
|
|
{...}
|
|
],
|
|
"today":[
|
|
"schedule":[
|
|
{
|
|
"id":string,
|
|
"data_id":number,
|
|
"title":string,
|
|
"japanese_title":string,
|
|
"releaseDate":string,
|
|
"time":string,
|
|
"episode_no":number,
|
|
},{...}
|
|
]
|
|
],
|
|
"topAiring":[
|
|
{
|
|
"id":string,
|
|
"data_id":number,
|
|
"poster":string,
|
|
"title":string,
|
|
"japanese_title":string,
|
|
"description":string,
|
|
tvInfo:[object]
|
|
}
|
|
],
|
|
"mostPopular":[
|
|
{
|
|
"id":string,
|
|
"data_id":number,
|
|
"poster":string,
|
|
"title":string,
|
|
"japanese_title":string,
|
|
"description":string,
|
|
tvInfo:[object]
|
|
},
|
|
"mostFavorite":[
|
|
{
|
|
"id":string,
|
|
"data_id":number,
|
|
"poster":string,
|
|
"title":string,
|
|
"japanese_title":string,
|
|
"description":string,
|
|
tvInfo:[object]
|
|
}
|
|
],
|
|
"latestCompleted":[
|
|
{
|
|
"id":string,
|
|
"data_id":number,
|
|
"poster":string,
|
|
"title":string,
|
|
"japanese_title":string,
|
|
"description":string,
|
|
tvInfo:[object]
|
|
}
|
|
],
|
|
"latestEpisode":[
|
|
{
|
|
"id":string,
|
|
"data_id":number,
|
|
"poster":string,
|
|
"title":string,
|
|
"japanese_title":string,
|
|
"description":string,
|
|
tvInfo:[object]
|
|
}
|
|
],
|
|
"genres":[
|
|
string,
|
|
string,
|
|
string,
|
|
...
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
### `GET` Top 10 anime's info
|
|
|
|
```bash
|
|
GET /api/top-ten
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/top-ten
|
|
```
|
|
|
|
> #### No parameter required ❌
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/top-ten");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": [
|
|
"topTen":[
|
|
"today":[
|
|
{
|
|
"id":string,
|
|
"data_id": number,
|
|
"number": number,
|
|
"name": string,
|
|
"poster": string,
|
|
"tvInfo": [Object]
|
|
},
|
|
{...}
|
|
],
|
|
"week":[
|
|
{
|
|
"id":string,
|
|
"data_id": number,
|
|
"number": number,
|
|
"name": string,
|
|
"poster": string,
|
|
"tvInfo": [Object]
|
|
},
|
|
{...}
|
|
],
|
|
"month":[
|
|
{
|
|
"id":string,
|
|
"data_id": number,
|
|
"number": number,
|
|
"name": string,
|
|
"poster": string,
|
|
"tvInfo": [Object]
|
|
},
|
|
{...}
|
|
],
|
|
]
|
|
]
|
|
}
|
|
```
|
|
|
|
### `GET` Top Search
|
|
|
|
```bash
|
|
GET /api/top-search
|
|
```
|
|
|
|
> #### No parameter required ❌
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/top-search");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": [
|
|
{
|
|
"title": string,
|
|
"link": string
|
|
},
|
|
{...}
|
|
]
|
|
}
|
|
```
|
|
|
|
### `GET` Specified anime's info
|
|
|
|
```bash
|
|
GET /api/info
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/info?id={string}
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameter | Parameter-Type | Data-Type | Description | Mandatory ? | Default |
|
|
| :-------: | :------------: | :-------: | :---------: | :---------: | :-----: |
|
|
| `id` | `query` | string | anime-id | Yes ✔️ | -- |
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/info?id=yami-shibai-9-17879");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": {
|
|
"data": {
|
|
"adultContent":boolean,
|
|
"id":string,
|
|
"data_id": number,
|
|
"title": string,
|
|
"japanese_title": string,
|
|
"poster": string,
|
|
"showType":string,
|
|
"animeInfo": {
|
|
"Overview": string,
|
|
"Japanese": string,
|
|
"Synonyms": string,
|
|
"Aired": string,
|
|
"Premiered": string,
|
|
"Duration": string,
|
|
"Status": string,
|
|
"MAL Score": string,
|
|
"Genres": [Object],
|
|
"Studios": string,
|
|
"Producers": [Object]
|
|
}
|
|
},
|
|
"seasons": [
|
|
{
|
|
"id":string,
|
|
"data_number": number,
|
|
"data_id": number,
|
|
"season": string,
|
|
"title": string,
|
|
"japanese_title": string,
|
|
"season_poster": string
|
|
},
|
|
{...}
|
|
],
|
|
|
|
}
|
|
}
|
|
```
|
|
|
|
### `GET` Random anime's info
|
|
|
|
```bash
|
|
GET /api/random
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/random
|
|
```
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/random");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": {
|
|
"data": {
|
|
"adultContent":boolean,
|
|
"id":string,
|
|
"data_id": number,
|
|
"title": string,
|
|
"japanese_title": string,
|
|
"poster": string,
|
|
"showType":string,
|
|
"animeInfo": {
|
|
"Overview": string,
|
|
"Japanese": string,
|
|
"Synonyms": string,
|
|
"Aired": string,
|
|
"Premiered": string,
|
|
"Duration": string,
|
|
"Status": string,
|
|
"MAL Score": string,
|
|
"Genres": [Object],
|
|
"Studios": string,
|
|
"Producers": [Object]
|
|
}
|
|
},
|
|
"related_data":[
|
|
[
|
|
{
|
|
"duration": "string",
|
|
"data_id": "number",
|
|
"id": "string",
|
|
"title": "string",
|
|
"japanese_title": "string",
|
|
"poster": "string",
|
|
"tvInfo": {
|
|
"dub": "number",
|
|
"sub": "number",
|
|
"showType": "string",
|
|
"eps": "number"
|
|
}
|
|
},{...}
|
|
]
|
|
],
|
|
"recommended_data":[
|
|
[
|
|
{
|
|
"duration": "string",
|
|
"data_id": "number",
|
|
"id": "string",
|
|
"title": "string",
|
|
"japanese_title": "string",
|
|
"poster": "string",
|
|
"tvInfo": {
|
|
"dub": "number",
|
|
"sub": "number",
|
|
"showType": "string",
|
|
"eps": "number"
|
|
}
|
|
},{...}
|
|
]
|
|
],
|
|
"seasons": [
|
|
{
|
|
"id":string,
|
|
"data_number": number,
|
|
"data_id": number,
|
|
"season": string,
|
|
"title": string,
|
|
"japanese_title": string,
|
|
"season_poster": string
|
|
},
|
|
{...}
|
|
],
|
|
|
|
}
|
|
}
|
|
```
|
|
|
|
### `GET` Categories info
|
|
|
|
```bash
|
|
GET /api/<category>
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/{string}?page={number}
|
|
#or
|
|
/api/{string}
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameter | Parameter-Type | Data-Type | Description | Mandatory ? | Default |
|
|
| :--------: | :------------: | :-------: | :---------: | :---------: | :-----: |
|
|
| `category` | `path` | `string` | `Category` | Yes ✔️ | -- |
|
|
| `page` | `query` | `number` | `Page-no.` | No ❌ | `1` |
|
|
|
|
#### List of Categories
|
|
|
|
- top-airing
|
|
- most-popular
|
|
- most-favorite
|
|
- completed
|
|
- recently-updated
|
|
- recently-added
|
|
- top-upcoming
|
|
- subbed-anime
|
|
- dubbed-anime
|
|
- top-upcoming
|
|
- genre/action
|
|
- genre/adventure
|
|
- genre/cars
|
|
- genre/comedy
|
|
- genre/dementia
|
|
- genre/demons
|
|
- genre/drama
|
|
- genre/ecchi
|
|
- genre/fantasy
|
|
- genre/game
|
|
- genre/harem
|
|
- genre/historical
|
|
- genre/horror
|
|
- genre/isekai
|
|
- genre/josei
|
|
- genre/kids
|
|
- genre/magic
|
|
- genre/martial-arts
|
|
- genre/mecha
|
|
- genre/military
|
|
- genre/music
|
|
- genre/mystery
|
|
- genre/parody
|
|
- genre/police
|
|
- genre/psychological
|
|
- genre/romance
|
|
- genre/samurai
|
|
- genre/school
|
|
- genre/sci-fi
|
|
- genre/seinen
|
|
- genre/shoujo
|
|
- genre/shoujo-ai
|
|
- genre/shounen
|
|
- genre/shounen-ai
|
|
- genre/slice-of-life
|
|
- genre/space
|
|
- genre/sports
|
|
- genre/super-power
|
|
- genre/supernatural
|
|
- genre/thriller
|
|
- genre/vampire
|
|
- az-list
|
|
- az-list/other
|
|
- az-list/0-9
|
|
- az-list/a
|
|
- az-list/b
|
|
- az-list/c
|
|
- az-list/d
|
|
- az-list/e
|
|
- az-list/f
|
|
- az-list/g
|
|
- az-list/h
|
|
- az-list/i
|
|
- az-list/j
|
|
- az-list/k
|
|
- az-list/l
|
|
- az-list/m
|
|
- az-list/n
|
|
- az-list/o
|
|
- az-list/p
|
|
- az-list/q
|
|
- az-list/r
|
|
- az-list/s
|
|
- az-list/t
|
|
- az-list/u
|
|
- az-list/v
|
|
- az-list/w
|
|
- az-list/x
|
|
- az-list/y
|
|
- az-list/z
|
|
- movie
|
|
- special
|
|
- ova
|
|
- ona
|
|
- tv
|
|
- music
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/most-popular?page=1");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": {
|
|
"totalPages": number,
|
|
"data": [
|
|
{
|
|
"id":string,
|
|
"data_id": number,
|
|
"poster": string,
|
|
"title": string,
|
|
"japanese_title": string,
|
|
"description": string,
|
|
"tvInfo": {
|
|
"showType": string,
|
|
"duration": string,
|
|
"sub": number,
|
|
"dub": number
|
|
},
|
|
"adultContent":boolean,
|
|
},
|
|
{
|
|
"id":string,
|
|
"data_id": number,
|
|
"poster": string,
|
|
"title": string,
|
|
"japanese_title": string,
|
|
"description": string,
|
|
"tvInfo": {
|
|
"showType": sting,
|
|
"duration": string,
|
|
"sub": number,
|
|
"dub": number,
|
|
"eps": number
|
|
},
|
|
"adultContent":boolean,
|
|
},
|
|
{...}
|
|
],
|
|
"totalPages":number
|
|
}
|
|
}
|
|
```
|
|
|
|
### `GET` Anime of specific producers or studio
|
|
|
|
```bash
|
|
GET /api/<producer>/
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/producer/{string}?page={number}
|
|
#or
|
|
/api/producer/{string}
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameter | Parameter-Type | Data-Type | Description | Mandatory ? | Default |
|
|
| :--------: | :------------: | :-------: | :---------: | :---------: | :-----: |
|
|
| `producer` | `path` | `string` | `Producer` | Yes ✔️ | -- |
|
|
| `page` | `query` | `number` | `Page-no.` | No ❌ | `1` |
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/producer/ufotable?page=1");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": {
|
|
"totalPages": number,
|
|
"data": [
|
|
{
|
|
"id":string,
|
|
"data_id": number,
|
|
"poster": string,
|
|
"title": string,
|
|
"japanese_title": string,
|
|
"description": string,
|
|
"tvInfo": {
|
|
"showType": string,
|
|
"duration": string,
|
|
"sub": number,
|
|
"dub": number
|
|
},
|
|
"adultContent":boolean,
|
|
},
|
|
{
|
|
"id":string,
|
|
"data_id": number,
|
|
"poster": string,
|
|
"title": string,
|
|
"japanese_title": string,
|
|
"description": string,
|
|
"tvInfo": {
|
|
"showType": sting,
|
|
"duration": string,
|
|
"sub": number,
|
|
"dub": number,
|
|
"eps": number
|
|
},
|
|
"adultContent":boolean,
|
|
},
|
|
{...}
|
|
],
|
|
"totalPages":number
|
|
}
|
|
}
|
|
```
|
|
|
|
### `GET` Search result's info
|
|
|
|
```bash
|
|
GET /api/search
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/search?keyword={string}
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameter | Parameter-Type | Type | Description | Mandatory ? | Default |
|
|
| :-------: | :------------: | :------: | :---------: | :---------: | :-----: |
|
|
| `keyword` | `query` | `string` | `keyword` | Yes ✔️ | -- |
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/search?keyword=one%20punch%20man");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": [
|
|
{
|
|
"id":string,
|
|
"data_id": number,
|
|
"poster": string,
|
|
"title": string,
|
|
"japanese_title": string,
|
|
"tvInfo": [Object]
|
|
},
|
|
{
|
|
"id":string,
|
|
"data_id": number,
|
|
"poster": string,
|
|
"title": string,
|
|
"japanese_title": string,
|
|
"tvInfo": [Object]
|
|
},
|
|
{...}
|
|
]
|
|
}
|
|
```
|
|
|
|
### `GET` Search suggestions
|
|
|
|
```bash
|
|
GET /api/search/suggest
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/search/suggest?keyword={string}
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameter | Parameter-Type | Type | Description | Mandatory ? | Default |
|
|
| :-------: | :------------: | :------: | :---------: | :---------: | :-----: |
|
|
| `keyword` | `query` | `string` | `keyword` | Yes ✔️ | -- |
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/search/suggest?keyword=demon");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": [
|
|
{
|
|
"id":"string",
|
|
"data_id": number,
|
|
"poster": string,
|
|
"title": string,
|
|
"japanese_title": string,
|
|
"releaseDate": string,
|
|
"showType": string,
|
|
"duration": string,
|
|
},
|
|
{
|
|
"id":"string",
|
|
"data_id": number,
|
|
"poster": string,
|
|
"title": string,
|
|
"japanese_title": string,
|
|
"releaseDate": string,
|
|
"showType": string,
|
|
"duration": string,
|
|
},
|
|
{...}
|
|
]
|
|
}
|
|
```
|
|
|
|
### `GET` Filter Anime
|
|
|
|
```bash
|
|
GET /api/filter
|
|
```
|
|
|
|
#### Endpoint
|
|
|
|
```bash
|
|
/api/filter
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameter | Parameter-Type | Data-Type | Description | Mandatory ? | Default |
|
|
| :--------: | :------------: | :-------: | :----------------------------------------------------------- | :---------: | :---------: |
|
|
| `type` | `query` | string | Type of anime (e.g., `movie`, `tv`, etc.) | No ❌ | `ALL` |
|
|
| `status` | `query` | string | Status of anime (e.g., `finished`, `currently_airing`, etc.) | No ❌ | `ALL` |
|
|
| `rated` | `query` | string | Rating of anime (e.g., `G`, `PG`, etc.) | No ❌ | `ALL` |
|
|
| `score` | `query` | string | Score rating (e.g., `1` to `10`) | No ❌ | `ALL` |
|
|
| `season` | `query` | string | Season of anime (e.g., `spring`, `summer`, etc.) | No ❌ | `ALL` |
|
|
| `language` | `query` | string | Language of anime (e.g., `sub`, `dub`) | No ❌ | `ALL` |
|
|
| `genres` | `query` | string | Comma-separated list of genres (e.g., `action, comedy`) | No ❌ | `ALL` |
|
|
| `sort` | `query` | string | Sorting method (e.g., `default`, `score`, etc.) | No ❌ | `DEFAULT` |
|
|
| `page` | `query` | number | Page number for pagination | No ❌ | `1` |
|
|
| `sy` | `query` | number | Start year | No ❌ | `undefined` |
|
|
| `sm` | `query` | number | Start month | No ❌ | `undefined` |
|
|
| `sd` | `query` | number | Start day | No ❌ | `undefined` |
|
|
| `ey` | `query` | number | End year | No ❌ | `undefined` |
|
|
| `em` | `query` | number | End month | No ❌ | `undefined` |
|
|
| `ed` | `query` | number | End day | No ❌ | `undefined` |
|
|
| `keyword` | `query` | string | Search keyword | No ❌ | `undefined` |
|
|
|
|
#### Example of Request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
|
|
const params = {
|
|
type: "2", // TV
|
|
status: "1", // Finished
|
|
rated: "5", // R+
|
|
sort: "default",
|
|
page: 1,
|
|
};
|
|
|
|
const resp = await axios.get("/api/filter", { params });
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": {
|
|
"totalPages": number,
|
|
"data": [
|
|
{
|
|
"id": string,
|
|
"data_id": number,
|
|
"poster": string,
|
|
"title": string,
|
|
"japanese_title": string,
|
|
"description": string,
|
|
"tvInfo": {
|
|
"showType": string,
|
|
"duration": string,
|
|
"sub": number,
|
|
"dub": number
|
|
},
|
|
"adultContent": boolean
|
|
},
|
|
{...}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
### `GET` Anime's episode list
|
|
|
|
```bash
|
|
GET /api/episodes/
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/episodes/{param}
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameter-Type | Data-Type | Description | Mandatory ? | Default |
|
|
| :------------: | :-------: | :---------: | :---------: | :-----: |
|
|
| `param` | string | anime-id | Yes ✔️ | -- |
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/episodes/one-piece-100");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": [
|
|
"totalEpisodes":number,
|
|
"episodes":[
|
|
{ "episode_no": number,
|
|
"id": string,
|
|
"data_id": number,
|
|
"jname": string,
|
|
"title": string,
|
|
"japanese_title": string
|
|
},
|
|
{...}
|
|
]
|
|
]
|
|
}
|
|
```
|
|
|
|
### `GET` Schedule of upcoming anime
|
|
|
|
```bash
|
|
GET /api/schedule
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/schedule?date={string}
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameter | Parameter-Type | Data-Type | Description | Mandatory ? | Default |
|
|
| :-------: | :------------: | :-------: | :---------: | :---------: | :-----: |
|
|
| `date` | query | string | date | Yes ✔️ | -- |
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/schedule?date=2024-09-23");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": [
|
|
{
|
|
"id":string,
|
|
"data_id":number,
|
|
"title":string,
|
|
"japanese_title":string,
|
|
"releaseDate":string,
|
|
"time":string,
|
|
"episode_no":number
|
|
},
|
|
{...}
|
|
]
|
|
}
|
|
```
|
|
|
|
### `GET` Schedule of next episode of Anime
|
|
|
|
```bash
|
|
GET /api/schedule/
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/schedule/:id
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameter | Parameter-Type | Data-Type | Description | Mandatory ? | Default |
|
|
| :-------: | :------------: | :-------: | :---------: | :---------: | :-----: |
|
|
| `id` | param | string | anime-id | Yes ✔️ | -- |
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/schedule/one-piece-100");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success":true,
|
|
"results":
|
|
{
|
|
"nextEpisodeSchedule":"2025-02-08 16:30:00"
|
|
}
|
|
}
|
|
```
|
|
|
|
### `GET` Qtip info
|
|
|
|
```bash
|
|
GET /api/qtip/
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/qtip/{id}
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameter | Data-Type | Description | Mandatory ? | Default |
|
|
| :-------: | :-------: | :---------: | :---------: | :-----: |
|
|
| `param` | `number` | id | Yes ✔️ | Yes ✔️ |
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/qtip/3365");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": {
|
|
"title": string,
|
|
"rating": double,
|
|
"quality": string,
|
|
"subCount": number,
|
|
"dubCount": number,
|
|
"episodeCount": number,
|
|
"type": string,
|
|
"description": string,
|
|
"japaneseTitle": string,
|
|
"Synonyms": string,
|
|
"airedDate": string,
|
|
"status": string,
|
|
"genres": [Object],
|
|
"watchLink": string
|
|
}
|
|
}
|
|
```
|
|
|
|
### `GET` Characters
|
|
|
|
```bash
|
|
GET /api/character/list/
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/character/list/{id}
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameter-Type | Data-Type | Description | Mandatory ? | Default |
|
|
| :------------: | :-------: | :---------: | :---------: | :-----: |
|
|
| `param` | `string` | anime-id | Yes ✔️ | Yes ✔️ |
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/character/list/one-piece-100");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": {
|
|
"currentPage": number,
|
|
"totalPages": number,
|
|
"data": [
|
|
{
|
|
"character": {
|
|
"id": string,
|
|
"poster": string,
|
|
"name": string,
|
|
"cast": string
|
|
},
|
|
"voiceActors": [
|
|
{
|
|
"id": string,
|
|
"poster": string,
|
|
"name": string
|
|
},
|
|
{
|
|
"id": string,
|
|
"poster": string,
|
|
"name": string
|
|
},
|
|
{...}
|
|
]
|
|
},{...}
|
|
]
|
|
}
|
|
}
|
|
|
|
```
|
|
|
|
### `GET` Streaming info
|
|
|
|
```bash
|
|
GET /api/stream
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/stream?id={string}&server={string}&type={string}
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameters | Parameter-Type | Type | Mandatory ? | Default |
|
|
| :----------------------: | :------------: | :------: | :---------: | :-----: |
|
|
| `id` , `server` , `type` | `query` | `string` | Yes ✔️ | -- |
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get(
|
|
"/api/stream?id=frieren-beyond-journeys-end-18542?ep=107257&server=hd-1&type=sub"
|
|
);
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": {
|
|
"streamingLink": [
|
|
{
|
|
"id":number,
|
|
"type": "sub",
|
|
"link": {
|
|
"file":string,
|
|
"type":string,
|
|
},
|
|
"tracks": [
|
|
{
|
|
"file": string,
|
|
"label": string,
|
|
"kind": string,
|
|
"default": boolean
|
|
},{...}
|
|
],
|
|
"intro": [Object],
|
|
"outro": [Object],
|
|
"server":string
|
|
}
|
|
],
|
|
"servers": [
|
|
{
|
|
"type":string,
|
|
"data_id": number,
|
|
"server_id": number,
|
|
"server_name": string
|
|
},
|
|
{...}
|
|
]
|
|
}
|
|
}
|
|
|
|
|
|
```
|
|
### `GET` Fallback Streaming info
|
|
|
|
```bash
|
|
GET /api/stream/fallback
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/stream/fallback?id={string}&server={string}&type={string}
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameters | Parameter-Type | Type | Mandatory ? | Default |
|
|
| :----------------------: | :------------: | :------: | :---------: | :-----: |
|
|
| `id` , `server` , `type` | `query` | `string` | Yes ✔️ | -- |
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get(
|
|
"/api/stream/fallback?id=frieren-beyond-journeys-end-18542?ep=107257&server=hd-1&type=sub"
|
|
);
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": {
|
|
"streamingLink": [
|
|
{
|
|
"id":number,
|
|
"type": "sub",
|
|
"link": {
|
|
"file":string,
|
|
"type":string,
|
|
},
|
|
"tracks": [
|
|
{
|
|
"file": string,
|
|
"label": string,
|
|
"kind": string,
|
|
"default": boolean
|
|
},{...}
|
|
],
|
|
"intro": [Object],
|
|
"outro": [Object],
|
|
"server":string
|
|
}
|
|
],
|
|
"servers": [
|
|
{
|
|
"type":string,
|
|
"data_id": number,
|
|
"server_id": number,
|
|
"server_name": string
|
|
},
|
|
{...}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
### `GET` Available servers of anime
|
|
|
|
```bash
|
|
GET /api/servers/
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/servers/{id}
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameter-Type | Data-Type | Description | Mandatory ? | Default |
|
|
| :------------: | :-------: | :---------: | :---------: | :-----: |
|
|
| `params` | `string` | `keyword` | Yes ✔️ | -- |
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get(
|
|
"/api/servers/demon-slayer-kimetsu-no-yaiba-hashira-training-arc-19107?ep=124260"
|
|
);
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": [
|
|
{
|
|
"type": string,
|
|
"data_id": number,
|
|
"server_id": number,
|
|
"serverName": string
|
|
},
|
|
{...},
|
|
]
|
|
}
|
|
```
|
|
|
|
### `GET` Character Details
|
|
|
|
```bash
|
|
GET /api/character/
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/character/{id}
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameter-Type | Data-Type | Description | Mandatory ? | Default |
|
|
| :------------: | :-------: | :----------: | :---------: | :-----: |
|
|
| `params` | `string` | character-id | Yes ✔️ | -- |
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/character/asta-340");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": {
|
|
"data": [{
|
|
"id": "asta-340",
|
|
"name": "Asta",
|
|
"profile": "https://cdn.noitatnemucod.net/thumbnail/400x400/100/945515d313d02fdcd33be3085512c550.jpg",
|
|
"japaneseName": "アスタ",
|
|
"about": {
|
|
"description": "Asta is the main protagonist of Black Clover...",
|
|
"style": "<p>Asta is the main protagonist of Black Clover...</p>"
|
|
},
|
|
"voiceActors": [
|
|
{
|
|
"name": "Kajiwara, Gakuto",
|
|
"profile": "https://example.com/profile.jpg",
|
|
"language": "Japanese",
|
|
"id": "gakuto-kajiwara-534"
|
|
},
|
|
{
|
|
"name": "Dallas Reid",
|
|
"profile": "https://example.com/profile2.jpg",
|
|
"language": "English",
|
|
"id": "dallas-reid-892"
|
|
}
|
|
],
|
|
"animeography": [
|
|
{
|
|
"title": "Black Clover",
|
|
"id": "2404",
|
|
"role": "Main",
|
|
"type": "TV",
|
|
"poster": "https://example.com/poster.jpg"
|
|
},
|
|
{
|
|
"title": "Black Clover: Sword of the Wizard King",
|
|
"id": "2405",
|
|
"role": "Main",
|
|
"type": "Movie",
|
|
"poster": "https://example.com/poster2.jpg"
|
|
}
|
|
]
|
|
}]
|
|
}
|
|
}
|
|
```
|
|
|
|
### `GET` Voice Actor Details
|
|
|
|
```bash
|
|
GET /api/actors/
|
|
```
|
|
|
|
### Endpoint
|
|
|
|
```bash
|
|
/api/actors/{id}
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Parameter-Type | Data-Type | Description | Mandatory ? | Default |
|
|
| :------------: | :-------: | :------------: | :---------: | :-----: |
|
|
| `params` | `string` | voice-actor-id | Yes ✔️ | -- |
|
|
|
|
#### Example of request
|
|
|
|
```javascript
|
|
import axios from "axios";
|
|
const resp = await axios.get("/api/actors/gakuto-kajiwara-534");
|
|
console.log(resp.data);
|
|
```
|
|
|
|
#### Sample Response
|
|
|
|
```javascript
|
|
{
|
|
"success": true,
|
|
"results": {
|
|
"data": [{
|
|
"id": "gakuto-kajiwara-534",
|
|
"name": "Kajiwara, Gakuto",
|
|
"profile": "https://cdn.noitatnemucod.net/thumbnail/400x400/100/945515d313d02fdcd33be3085512c550.jpg",
|
|
"japaneseName": "梶原岳人",
|
|
"about": {
|
|
"description": "Kajiwara Gakuto is a Japanese voice actor...",
|
|
"style": "<p>Kajiwara Gakuto is a Japanese voice actor...</p>"
|
|
},
|
|
"roles": [
|
|
{
|
|
"anime": {
|
|
"title": "Black Clover",
|
|
"poster": "https://example.com/poster.jpg",
|
|
"type": "TV",
|
|
"year": "2017",
|
|
"id": "black-clover"
|
|
},
|
|
"character": {
|
|
"name": "Asta",
|
|
"profile": "https://example.com/asta.jpg",
|
|
"role": "Main"
|
|
}
|
|
},
|
|
// ... more roles ...
|
|
]
|
|
}]
|
|
}
|
|
}
|
|
```
|
|
|
|
> ### Pull Requests
|
|
|
|
- Pull requests are welcomed that address bug fixes, improvements, or new features.
|
|
- Fork the repository and create a new branch for your changes.
|
|
- Ensure your code follows our coding standards.
|
|
- Include tests if applicable.
|
|
- Describe your changes clearly in the pull request, explaining the problem and solution.
|
|
|
|
> ### Reporting Issues
|
|
|
|
If you discover any issues or have suggestions for improvement, please open an issue. Provide a clear and concise description of the problem, steps to reproduce it, and any relevant information about your environment.
|
|
|
|
> ### Support
|
|
>
|
|
> If you like the project feel free to drop a star ✨. Your appreciation means a lot.
|
|
|
|
<p align="center" style="text-decoration: none;">Made by <a href="https://github.com/JustAnimeCore" tarGET="_blank">JustAnime
|
|
</a>🫰</p> |