mirror of
https://github.com/Shineii86/AniKotoAPI.git
synced 2026-10-22 02:45:10 +00:00
v1.7.1: Update Vercel URL to anikototvapi.vercel.app
- Changed anikoto.vercel.app → anikototvapi.vercel.app - 80 references updated across all files
This commit is contained in:
+8
-2
@@ -5,14 +5,20 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [1.7.1] - 2026-06-08
|
||||
|
||||
### Changed
|
||||
- Updated all Vercel URLs from `anikoto.vercel.app` to `anikototvapi.vercel.app`
|
||||
- Updated across 80 references in HTML, JS, MD, XML, SVG, JSON files
|
||||
|
||||
## [1.7.0] - 2026-06-08
|
||||
|
||||
### Changed
|
||||
- **BREAKING**: Rebranded entire project from `AniKatoAPI` to `AniKotoAPI`
|
||||
- Renamed all references across 50+ source files (controllers, extractors, configs, routes)
|
||||
- Renamed all references across 66 files (controllers, extractors, configs, routes)
|
||||
- Updated README.md, package.json, server.js, all public pages
|
||||
- Updated GitHub repository URLs from `AniKatoAPI` to `AniKotoAPI`
|
||||
- Updated Vercel URLs from `anikato.vercel.app` to `anikoto.vercel.app`
|
||||
- Updated Vercel URLs from `anikato.vercel.app` to `anikototvapi.vercel.app`
|
||||
- Preserved `anikototv.to` domain references (source website, not project name)
|
||||
|
||||
## [1.6.0] - 2026-06-08
|
||||
|
||||
@@ -413,7 +413,7 @@ The `vercel.json` file handles:
|
||||
|
||||
### Base URL
|
||||
```
|
||||
https://anikoto.vercel.app/api
|
||||
https://anikototvapi.vercel.app/api
|
||||
```
|
||||
|
||||
---
|
||||
@@ -433,12 +433,12 @@ https://anikoto.vercel.app/api
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/"
|
||||
curl "https://anikototvapi.vercel.app/api/"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/");
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/");
|
||||
console.log(resp.data);
|
||||
```
|
||||
|
||||
@@ -485,12 +485,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/top-ten"
|
||||
curl "https://anikototvapi.vercel.app/api/top-ten"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/top-ten");
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/top-ten");
|
||||
console.log(resp.data);
|
||||
```
|
||||
|
||||
@@ -539,12 +539,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/search?keyword=one+piece"
|
||||
curl "https://anikototvapi.vercel.app/api/search?keyword=one+piece"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/search", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/search", {
|
||||
params: { keyword: "one piece", page: 1 }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -585,12 +585,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/info?id=one-piece-odmau"
|
||||
curl "https://anikototvapi.vercel.app/api/info?id=one-piece-odmau"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/info", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/info", {
|
||||
params: { id: "one-piece-odmau" }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -643,12 +643,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/random"
|
||||
curl "https://anikototvapi.vercel.app/api/random"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/random");
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/random");
|
||||
console.log(resp.data);
|
||||
```
|
||||
|
||||
@@ -691,12 +691,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/schedule?date=2026-06-08"
|
||||
curl "https://anikototvapi.vercel.app/api/schedule?date=2026-06-08"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/schedule", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/schedule", {
|
||||
params: { date: "2026-06-08" }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -740,12 +740,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/episodes/one-piece-odmau"
|
||||
curl "https://anikototvapi.vercel.app/api/episodes/one-piece-odmau"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/episodes/one-piece-odmau");
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/episodes/one-piece-odmau");
|
||||
console.log(resp.data);
|
||||
```
|
||||
|
||||
@@ -783,12 +783,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/watch?slug=one-piece-odmau&ep=1165"
|
||||
curl "https://anikototvapi.vercel.app/api/watch?slug=one-piece-odmau&ep=1165"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/watch", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/watch", {
|
||||
params: { slug: "one-piece-odmau", ep: 1165 }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -853,12 +853,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/servers?ids={episodeIds}"
|
||||
curl "https://anikototvapi.vercel.app/api/servers?ids={episodeIds}"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/servers", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/servers", {
|
||||
params: { ids: "yourEpisodeIds" }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -902,12 +902,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/mapper-servers?malId=21&slug=one-piece×tamp=1717900000"
|
||||
curl "https://anikototvapi.vercel.app/api/mapper-servers?malId=21&slug=one-piece×tamp=1717900000"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/mapper-servers", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/mapper-servers", {
|
||||
params: { malId: 21, slug: "one-piece", timestamp: 1717900000 }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -946,12 +946,12 @@ Server list for an episode — returns available streaming servers with their na
|
||||
| `ids` | `string` | **required** | Episode IDs |
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/servers?ids={episodeIds}"
|
||||
curl "https://anikototvapi.vercel.app/api/servers?ids={episodeIds}"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/servers", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/servers", {
|
||||
params: { ids: "yourEpisodeIds" }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -989,12 +989,12 @@ Mapper API — fetches additional streaming servers from gogoanime/anivibe via t
|
||||
| `timestamp` | `number` | **required** | Current timestamp |
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/mapper-servers?malId=21&slug=one-piece×tamp=1717900000"
|
||||
curl "https://anikototvapi.vercel.app/api/mapper-servers?malId=21&slug=one-piece×tamp=1717900000"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/mapper-servers", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/mapper-servers", {
|
||||
params: { malId: 21, slug: "one-piece", timestamp: 1717900000 }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -1031,12 +1031,12 @@ console.log(resp.data);
|
||||
Top 10 anime rankings for day, week, and month.
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/top-ten"
|
||||
curl "https://anikototvapi.vercel.app/api/top-ten"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/top-ten");
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/top-ten");
|
||||
console.log(resp.data);
|
||||
```
|
||||
|
||||
@@ -1084,12 +1084,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/spotlight"
|
||||
curl "https://anikototvapi.vercel.app/api/spotlight"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/spotlight");
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/spotlight");
|
||||
console.log(resp.data);
|
||||
```
|
||||
|
||||
@@ -1150,12 +1150,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/trending"
|
||||
curl "https://anikototvapi.vercel.app/api/trending"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/trending");
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/trending");
|
||||
console.log(resp.data);
|
||||
```
|
||||
|
||||
@@ -1218,12 +1218,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/most-popular?page=1"
|
||||
curl "https://anikototvapi.vercel.app/api/most-popular?page=1"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/most-popular", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/most-popular", {
|
||||
params: { page: 1 }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -1297,12 +1297,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/new-release?page=1"
|
||||
curl "https://anikototvapi.vercel.app/api/new-release?page=1"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/new-release", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/new-release", {
|
||||
params: { page: 1 }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -1343,12 +1343,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/newly-added?page=1"
|
||||
curl "https://anikototvapi.vercel.app/api/newly-added?page=1"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/newly-added", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/newly-added", {
|
||||
params: { page: 1 }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -1387,12 +1387,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/trending-sidebar"
|
||||
curl "https://anikototvapi.vercel.app/api/trending-sidebar"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/trending-sidebar");
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/trending-sidebar");
|
||||
console.log(resp.data);
|
||||
```
|
||||
|
||||
@@ -1446,12 +1446,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/genre/action?page=1"
|
||||
curl "https://anikototvapi.vercel.app/api/genre/action?page=1"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/genre/action", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/genre/action", {
|
||||
params: { page: 1 }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -1491,12 +1491,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/type/movie?page=1"
|
||||
curl "https://anikototvapi.vercel.app/api/type/movie?page=1"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/type/movie", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/type/movie", {
|
||||
params: { page: 1 }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -1549,12 +1549,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/status/currently-airing?page=1"
|
||||
curl "https://anikototvapi.vercel.app/api/status/currently-airing?page=1"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/status/currently-airing", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/status/currently-airing", {
|
||||
params: { page: 1 }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -1606,12 +1606,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/az-list/a?page=1"
|
||||
curl "https://anikototvapi.vercel.app/api/az-list/a?page=1"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/az-list/a", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/az-list/a", {
|
||||
params: { page: 1 }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -1668,12 +1668,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/filter?genre=action&type=tv&page=1"
|
||||
curl "https://anikototvapi.vercel.app/api/filter?genre=action&type=tv&page=1"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/filter", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/filter", {
|
||||
params: { genre: "action", type: "tv", page: 1 }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -1714,12 +1714,12 @@ console.log(resp.data);
|
||||
#### Example of request
|
||||
|
||||
```bash
|
||||
curl "https://anikoto.vercel.app/api/suggestions?keyword=naruto"
|
||||
curl "https://anikototvapi.vercel.app/api/suggestions?keyword=naruto"
|
||||
```
|
||||
|
||||
```javascript
|
||||
import axios from "axios";
|
||||
const resp = await axios.get("https://anikoto.vercel.app/api/suggestions", {
|
||||
const resp = await axios.get("https://anikototvapi.vercel.app/api/suggestions", {
|
||||
params: { keyword: "naruto" }
|
||||
});
|
||||
console.log(resp.data);
|
||||
@@ -1946,7 +1946,7 @@ Use <code>/api/filter</code> with query params. The <code>keyword</code> param i
|
||||
<details>
|
||||
<summary><b>📡 Can I use this in my frontend app?</b></summary>
|
||||
<br/>
|
||||
Yes! CORS is enabled for all origins (<code>*</code>). Just make fetch requests to the API endpoints. No API key needed. Example: <code>fetch('https://anikoto.vercel.app/api/search?keyword=naruto')</code>
|
||||
Yes! CORS is enabled for all origins (<code>*</code>). Just make fetch requests to the API endpoints. No API key needed. Example: <code>fetch('https://anikototvapi.vercel.app/api/search?keyword=naruto')</code>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
||||
+21
-21
@@ -261,7 +261,7 @@
|
||||
<a href="#endpoints">Endpoints</a>
|
||||
<a href="#playground">Playground</a>
|
||||
<a href="https://github.com/Shineii86/AniKotoAPI" target="_blank">GitHub</a>
|
||||
<a href="https://anikoto.vercel.app/api" target="_blank" class="nav-cta">Open API</a>
|
||||
<a href="https://anikototvapi.vercel.app/api" target="_blank" class="nav-cta">Open API</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
@@ -286,11 +286,11 @@
|
||||
<div class="console" id="heroConsole">
|
||||
<div class="console-bar">
|
||||
<span class="console-dot"></span><span class="console-dot"></span><span class="console-dot"></span>
|
||||
<span class="console-title">anikoto.vercel.app — API Console</span>
|
||||
<span class="console-title">anikototvapi.vercel.app — API Console</span>
|
||||
</div>
|
||||
<div class="console-body">
|
||||
<textarea class="console-input" id="consoleInput" rows="6" spellcheck="false">// Fetch trending anime
|
||||
fetch("https://anikoto.vercel.app/api")
|
||||
fetch("https://anikototvapi.vercel.app/api")
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
console.log(data.trending);
|
||||
@@ -408,7 +408,7 @@ fetch("https://anikoto.vercel.app/api")
|
||||
API Reference
|
||||
</div>
|
||||
<h2 class="section-title">Endpoints</h2>
|
||||
<p class="section-desc">All endpoints return JSON. Base URL: <code style="color:var(--pink);background:rgba(236,72,153,.1);padding:2px 8px;border-radius:4px">https://anikoto.vercel.app/api</code></p>
|
||||
<p class="section-desc">All endpoints return JSON. Base URL: <code style="color:var(--pink);background:rgba(236,72,153,.1);padding:2px 8px;border-radius:4px">https://anikototvapi.vercel.app/api</code></p>
|
||||
</div>
|
||||
|
||||
<div class="explorer reveal" id="explorer">
|
||||
@@ -497,7 +497,7 @@ fetch("https://anikoto.vercel.app/api")
|
||||
<h2 class="cta-title">Start building with AniKotoAPI</h2>
|
||||
<p class="cta-desc">Free, open source, no API key required. Deploy your own instance or use ours.</p>
|
||||
<div class="cta-actions">
|
||||
<a href="https://anikoto.vercel.app/api" target="_blank" class="btn btn-primary">
|
||||
<a href="https://anikototvapi.vercel.app/api" target="_blank" class="btn btn-primary">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width:16px;height:16px"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg>
|
||||
View API
|
||||
</a>
|
||||
@@ -624,7 +624,7 @@ fetch("https://anikoto.vercel.app/api")
|
||||
});
|
||||
|
||||
/* ── Console ── */
|
||||
const BASE = 'https://anikoto.vercel.app/api';
|
||||
const BASE = 'https://anikototvapi.vercel.app/api';
|
||||
const endpoints = {
|
||||
home: { url: '/api', label: 'Home' },
|
||||
search: { url: '/api/search?keyword=naruto', label: 'Search' },
|
||||
@@ -663,21 +663,21 @@ fetch("https://anikoto.vercel.app/api")
|
||||
|
||||
/* ── Explorer ── */
|
||||
const explorerData = [
|
||||
{ id: 'home', title: 'Home Info', desc: 'Spotlight, trending, popular, top-airing, genres, and more.', path: '/api', params: [], code: { curl: 'curl https://anikoto.vercel.app/api', js: 'const res = await fetch("https://anikoto.vercel.app/api");\nconst data = await res.json();\nconsole.log(data.trending);', python: 'import requests\nr = requests.get("https://anikoto.vercel.app/api")\nprint(r.json()["trending"])' } },
|
||||
{ id: 'search', title: 'Search', desc: 'Search anime by keyword with pagination.', path: '/api/search?keyword={q}&page={n}', params: [{ name: 'keyword', type: 'string', desc: 'Search query' }, { name: 'page', type: 'number', desc: 'Page (default 1)' }], code: { curl: 'curl "https://anikoto.vercel.app/api/search?keyword=naruto"', js: 'const res = await fetch("https://anikoto.vercel.app/api/search?keyword=naruto");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikoto.vercel.app/api/search", params={"keyword": "naruto"})\nprint(r.json())' } },
|
||||
{ id: 'suggest', title: 'Search Suggest', desc: 'Autocomplete suggestions for search.', path: '/api/search/suggest?keyword={q}', params: [{ name: 'keyword', type: 'string', desc: 'Partial query' }], code: { curl: 'curl "https://anikoto.vercel.app/api/search/suggest?keyword=dea"', js: 'const res = await fetch("https://anikoto.vercel.app/api/search/suggest?keyword=dea");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikoto.vercel.app/api/search/suggest", params={"keyword": "dea"})\nprint(r.json())' } },
|
||||
{ id: 'info', title: 'Anime Info', desc: 'Detailed info: synopsis, genres, relations, recommendations.', path: '/api/info?id={slug}', params: [{ name: 'id', type: 'string', desc: 'Anime slug' }], code: { curl: 'curl "https://anikoto.vercel.app/api/info?id=naruto"', js: 'const res = await fetch("https://anikoto.vercel.app/api/info?id=naruto");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikoto.vercel.app/api/info", params={"id": "naruto"})\nprint(r.json())' } },
|
||||
{ id: 'episodes', title: 'Episodes', desc: 'Episode list loaded via AJAX.', path: '/api/episodes/{slug}', params: [{ name: 'slug', type: 'string', desc: 'Anime slug' }], code: { curl: 'curl "https://anikoto.vercel.app/api/episodes/naruto"', js: 'const res = await fetch("https://anikoto.vercel.app/api/episodes/naruto");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikoto.vercel.app/api/episodes/naruto")\nprint(r.json())' } },
|
||||
{ id: 'stream', title: 'Stream Servers', desc: 'Streaming servers for an episode.', path: '/api/stream?id={episodeId}', params: [{ name: 'id', type: 'string', desc: 'Episode ID' }], code: { curl: 'curl "https://anikoto.vercel.app/api/stream?id=naruto-ep-1"', js: 'const res = await fetch("https://anikoto.vercel.app/api/stream?id=naruto-ep-1");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikoto.vercel.app/api/stream", params={"id": "naruto-ep-1"})\nprint(r.json())' } },
|
||||
{ id: 'servers', title: 'Servers', desc: 'Resolve streaming server links.', path: '/api/servers?ids={ids}', params: [{ name: 'ids', type: 'string', desc: 'Comma-separated link IDs' }], code: { curl: 'curl "https://anikoto.vercel.app/api/servers?ids=123,456"', js: 'const res = await fetch("https://anikoto.vercel.app/api/servers?ids=123,456");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikoto.vercel.app/api/servers", params={"ids": "123,456"})\nprint(r.json())' } },
|
||||
{ id: 'schedule', title: 'Schedule', desc: 'Anime schedule for a specific date.', path: '/api/schedule?date={YYYY-MM-DD}', params: [{ name: 'date', type: 'string', desc: 'Date (default today)' }], code: { curl: 'curl "https://anikoto.vercel.app/api/schedule"', js: 'const res = await fetch("https://anikoto.vercel.app/api/schedule");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikoto.vercel.app/api/schedule")\nprint(r.json())' } },
|
||||
{ id: 'topten', title: 'Top 10', desc: 'Top 10 anime (today, week, month).', path: '/api/top-ten', params: [], code: { curl: 'curl "https://anikoto.vercel.app/api/top-ten"', js: 'const res = await fetch("https://anikoto.vercel.app/api/top-ten");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikoto.vercel.app/api/top-ten")\nprint(r.json())' } },
|
||||
{ id: 'random', title: 'Random', desc: 'Random anime info.', path: '/api/random', params: [], code: { curl: 'curl "https://anikoto.vercel.app/api/random"', js: 'const res = await fetch("https://anikoto.vercel.app/api/random");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikoto.vercel.app/api/random")\nprint(r.json())' } },
|
||||
{ id: 'filter', title: 'Filter', desc: 'Filter by genre, type, status, season.', path: '/api/filter?keyword={q}&genre[]={g}', params: [{ name: 'keyword', type: 'string', desc: 'Search keyword (required)' }, { name: 'genre[]', type: 'number', desc: 'Genre IDs' }, { name: 'type[]', type: 'number', desc: 'Type IDs' }], code: { curl: 'curl "https://anikoto.vercel.app/api/filter?keyword=&genre[]=1&genre[]=4"', js: 'const res = await fetch("https://anikoto.vercel.app/api/filter?keyword=&genre[]=1");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikoto.vercel.app/api/filter", params={"keyword": "", "genre[]": 1})\nprint(r.json())' } },
|
||||
{ id: 'popular', title: 'Most Popular', desc: 'Most popular anime list.', path: '/api/most-popular?page={n}', params: [{ name: 'page', type: 'number', desc: 'Page (default 1)' }], code: { curl: 'curl "https://anikoto.vercel.app/api/most-popular"', js: 'const res = await fetch("https://anikoto.vercel.app/api/most-popular");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikoto.vercel.app/api/most-popular")\nprint(r.json())' } },
|
||||
{ id: 'genre', title: 'Genre', desc: 'Anime by genre.', path: '/api/genre/{name}', params: [{ name: 'name', type: 'string', desc: 'Genre slug (action, comedy, etc.)' }], code: { curl: 'curl "https://anikoto.vercel.app/api/genre/action"', js: 'const res = await fetch("https://anikoto.vercel.app/api/genre/action");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikoto.vercel.app/api/genre/action")\nprint(r.json())' } },
|
||||
{ id: 'type', title: 'Type', desc: 'Anime by type.', path: '/api/type/{name}', params: [{ name: 'name', type: 'string', desc: 'Type (tv, movie, ova, etc.)' }], code: { curl: 'curl "https://anikoto.vercel.app/api/type/tv"', js: 'const res = await fetch("https://anikoto.vercel.app/api/type/tv");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikoto.vercel.app/api/type/tv")\nprint(r.json())' } },
|
||||
{ id: 'status', title: 'Status', desc: 'Anime by status.', path: '/api/status/{name}', params: [{ name: 'name', type: 'string', desc: 'Status (currently-airing, finished-airing)' }], code: { curl: 'curl "https://anikoto.vercel.app/api/status/currently-airing"', js: 'const res = await fetch("https://anikoto.vercel.app/api/status/currently-airing");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikoto.vercel.app/api/status/currently-airing")\nprint(r.json())' } },
|
||||
{ id: 'home', title: 'Home Info', desc: 'Spotlight, trending, popular, top-airing, genres, and more.', path: '/api', params: [], code: { curl: 'curl https://anikototvapi.vercel.app/api', js: 'const res = await fetch("https://anikototvapi.vercel.app/api");\nconst data = await res.json();\nconsole.log(data.trending);', python: 'import requests\nr = requests.get("https://anikototvapi.vercel.app/api")\nprint(r.json()["trending"])' } },
|
||||
{ id: 'search', title: 'Search', desc: 'Search anime by keyword with pagination.', path: '/api/search?keyword={q}&page={n}', params: [{ name: 'keyword', type: 'string', desc: 'Search query' }, { name: 'page', type: 'number', desc: 'Page (default 1)' }], code: { curl: 'curl "https://anikototvapi.vercel.app/api/search?keyword=naruto"', js: 'const res = await fetch("https://anikototvapi.vercel.app/api/search?keyword=naruto");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikototvapi.vercel.app/api/search", params={"keyword": "naruto"})\nprint(r.json())' } },
|
||||
{ id: 'suggest', title: 'Search Suggest', desc: 'Autocomplete suggestions for search.', path: '/api/search/suggest?keyword={q}', params: [{ name: 'keyword', type: 'string', desc: 'Partial query' }], code: { curl: 'curl "https://anikototvapi.vercel.app/api/search/suggest?keyword=dea"', js: 'const res = await fetch("https://anikototvapi.vercel.app/api/search/suggest?keyword=dea");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikototvapi.vercel.app/api/search/suggest", params={"keyword": "dea"})\nprint(r.json())' } },
|
||||
{ id: 'info', title: 'Anime Info', desc: 'Detailed info: synopsis, genres, relations, recommendations.', path: '/api/info?id={slug}', params: [{ name: 'id', type: 'string', desc: 'Anime slug' }], code: { curl: 'curl "https://anikototvapi.vercel.app/api/info?id=naruto"', js: 'const res = await fetch("https://anikototvapi.vercel.app/api/info?id=naruto");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikototvapi.vercel.app/api/info", params={"id": "naruto"})\nprint(r.json())' } },
|
||||
{ id: 'episodes', title: 'Episodes', desc: 'Episode list loaded via AJAX.', path: '/api/episodes/{slug}', params: [{ name: 'slug', type: 'string', desc: 'Anime slug' }], code: { curl: 'curl "https://anikototvapi.vercel.app/api/episodes/naruto"', js: 'const res = await fetch("https://anikototvapi.vercel.app/api/episodes/naruto");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikototvapi.vercel.app/api/episodes/naruto")\nprint(r.json())' } },
|
||||
{ id: 'stream', title: 'Stream Servers', desc: 'Streaming servers for an episode.', path: '/api/stream?id={episodeId}', params: [{ name: 'id', type: 'string', desc: 'Episode ID' }], code: { curl: 'curl "https://anikototvapi.vercel.app/api/stream?id=naruto-ep-1"', js: 'const res = await fetch("https://anikototvapi.vercel.app/api/stream?id=naruto-ep-1");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikototvapi.vercel.app/api/stream", params={"id": "naruto-ep-1"})\nprint(r.json())' } },
|
||||
{ id: 'servers', title: 'Servers', desc: 'Resolve streaming server links.', path: '/api/servers?ids={ids}', params: [{ name: 'ids', type: 'string', desc: 'Comma-separated link IDs' }], code: { curl: 'curl "https://anikototvapi.vercel.app/api/servers?ids=123,456"', js: 'const res = await fetch("https://anikototvapi.vercel.app/api/servers?ids=123,456");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikototvapi.vercel.app/api/servers", params={"ids": "123,456"})\nprint(r.json())' } },
|
||||
{ id: 'schedule', title: 'Schedule', desc: 'Anime schedule for a specific date.', path: '/api/schedule?date={YYYY-MM-DD}', params: [{ name: 'date', type: 'string', desc: 'Date (default today)' }], code: { curl: 'curl "https://anikototvapi.vercel.app/api/schedule"', js: 'const res = await fetch("https://anikototvapi.vercel.app/api/schedule");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikototvapi.vercel.app/api/schedule")\nprint(r.json())' } },
|
||||
{ id: 'topten', title: 'Top 10', desc: 'Top 10 anime (today, week, month).', path: '/api/top-ten', params: [], code: { curl: 'curl "https://anikototvapi.vercel.app/api/top-ten"', js: 'const res = await fetch("https://anikototvapi.vercel.app/api/top-ten");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikototvapi.vercel.app/api/top-ten")\nprint(r.json())' } },
|
||||
{ id: 'random', title: 'Random', desc: 'Random anime info.', path: '/api/random', params: [], code: { curl: 'curl "https://anikototvapi.vercel.app/api/random"', js: 'const res = await fetch("https://anikototvapi.vercel.app/api/random");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikototvapi.vercel.app/api/random")\nprint(r.json())' } },
|
||||
{ id: 'filter', title: 'Filter', desc: 'Filter by genre, type, status, season.', path: '/api/filter?keyword={q}&genre[]={g}', params: [{ name: 'keyword', type: 'string', desc: 'Search keyword (required)' }, { name: 'genre[]', type: 'number', desc: 'Genre IDs' }, { name: 'type[]', type: 'number', desc: 'Type IDs' }], code: { curl: 'curl "https://anikototvapi.vercel.app/api/filter?keyword=&genre[]=1&genre[]=4"', js: 'const res = await fetch("https://anikototvapi.vercel.app/api/filter?keyword=&genre[]=1");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikototvapi.vercel.app/api/filter", params={"keyword": "", "genre[]": 1})\nprint(r.json())' } },
|
||||
{ id: 'popular', title: 'Most Popular', desc: 'Most popular anime list.', path: '/api/most-popular?page={n}', params: [{ name: 'page', type: 'number', desc: 'Page (default 1)' }], code: { curl: 'curl "https://anikototvapi.vercel.app/api/most-popular"', js: 'const res = await fetch("https://anikototvapi.vercel.app/api/most-popular");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikototvapi.vercel.app/api/most-popular")\nprint(r.json())' } },
|
||||
{ id: 'genre', title: 'Genre', desc: 'Anime by genre.', path: '/api/genre/{name}', params: [{ name: 'name', type: 'string', desc: 'Genre slug (action, comedy, etc.)' }], code: { curl: 'curl "https://anikototvapi.vercel.app/api/genre/action"', js: 'const res = await fetch("https://anikototvapi.vercel.app/api/genre/action");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikototvapi.vercel.app/api/genre/action")\nprint(r.json())' } },
|
||||
{ id: 'type', title: 'Type', desc: 'Anime by type.', path: '/api/type/{name}', params: [{ name: 'name', type: 'string', desc: 'Type (tv, movie, ova, etc.)' }], code: { curl: 'curl "https://anikototvapi.vercel.app/api/type/tv"', js: 'const res = await fetch("https://anikototvapi.vercel.app/api/type/tv");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikototvapi.vercel.app/api/type/tv")\nprint(r.json())' } },
|
||||
{ id: 'status', title: 'Status', desc: 'Anime by status.', path: '/api/status/{name}', params: [{ name: 'name', type: 'string', desc: 'Status (currently-airing, finished-airing)' }], code: { curl: 'curl "https://anikototvapi.vercel.app/api/status/currently-airing"', js: 'const res = await fetch("https://anikototvapi.vercel.app/api/status/currently-airing");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://anikototvapi.vercel.app/api/status/currently-airing")\nprint(r.json())' } },
|
||||
];
|
||||
const navEl = document.getElementById('explorerNav');
|
||||
const panelEl = document.getElementById('explorerPanel');
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
<circle cx="600" cy="315" r="120" stroke="url(#grad)" stroke-width="2" fill="none" opacity="0.15"/>
|
||||
<text x="600" y="280" text-anchor="middle" font-family="system-ui,sans-serif" font-weight="900" font-size="72" fill="url(#grad)">AniKotoAPI</text>
|
||||
<text x="600" y="340" text-anchor="middle" font-family="system-ui,sans-serif" font-weight="500" font-size="24" fill="#94A3B8">Free Anime Data REST API</text>
|
||||
<text x="600" y="380" text-anchor="middle" font-family="monospace" font-weight="400" font-size="16" fill="#64748B">anikoto.vercel.app/api</text>
|
||||
<text x="600" y="380" text-anchor="middle" font-family="monospace" font-weight="400" font-size="16" fill="#64748B">anikototvapi.vercel.app/api</text>
|
||||
<rect x="480" y="410" width="240" height="40" rx="20" fill="url(#grad)" opacity="0.9"/>
|
||||
<text x="600" y="436" text-anchor="middle" font-family="system-ui,sans-serif" font-weight="600" font-size="14" fill="#fff">No API Key Required</text>
|
||||
<circle cx="120" cy="540" r="4" fill="#A855F7" opacity="0.4"/>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
+2
-2
@@ -1,6 +1,6 @@
|
||||
# AniKotoAPI — https://anikoto.vercel.app
|
||||
# AniKotoAPI — https://anikototvapi.vercel.app
|
||||
User-agent: *
|
||||
Allow: /
|
||||
Allow: /api
|
||||
|
||||
Sitemap: https://anikoto.vercel.app/sitemap.xml
|
||||
Sitemap: https://anikototvapi.vercel.app/sitemap.xml
|
||||
+4
-4
@@ -1,25 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://anikoto.vercel.app/</loc>
|
||||
<loc>https://anikototvapi.vercel.app/</loc>
|
||||
<lastmod>2026-06-08</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://anikoto.vercel.app/api</loc>
|
||||
<loc>https://anikototvapi.vercel.app/api</loc>
|
||||
<lastmod>2026-06-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>0.9</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://anikoto.vercel.app/privacy.html</loc>
|
||||
<loc>https://anikototvapi.vercel.app/privacy.html</loc>
|
||||
<lastmod>2026-06-08</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.3</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://anikoto.vercel.app/tos.html</loc>
|
||||
<loc>https://anikototvapi.vercel.app/tos.html</loc>
|
||||
<lastmod>2026-06-08</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.3</priority>
|
||||
|
||||
Reference in New Issue
Block a user