Files
justanime.fun/README.md
Tejas Panchal 0e1955eb42 core
2026-03-01 13:03:47 +05:30

1517 lines
32 KiB
Markdown

<div align="center">
![Static Badge](https://img.shields.io/badge/node.js-grey?logo=nodedotjs) ![GitHub stars](https://img.shields.io/github/stars/JustAnimeCore/HiAnime-api?logo=github)
![GitHub forks](https://img.shields.io/github/forks/JustAnimeCore/HiAnime-api?logo=github)
![Static Badge](https://img.shields.io/badge/version-1.0.0-blue)
</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
[![Deploy to Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/JustAnimeCore/HiAnime-Api)
### Render
Host your own instance of anime-api on Render.
[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](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>