● CDN PUBLIC API v2.0

AniPortal CDN

Public REST API for anime, episodes, search, trending — Heanime compatible. Base URL https://anizil.proo.one/cdn

Quick Start

No auth required for GET. CORS enabled Access-Control-Allow-Origin: *. Cache 60s.
# list anime curl https://anizil.proo.one/cdn/anime?page=1&limit=5 # search curl https://anizil.proo.one/cdn/search?q=naruto # episodes for anime curl https://anizil.proo.one/cdn/anime/1/episodes # stream by code curl https://anizil.proo.one/cdn/stream/AK1a1b2c3d4
Base
https://anizil.proo.one/cdn
also /cdn/v2 compatible
Format
{ data: [], pagination: {page,limit,total,pages} }
Rate
100 req/min, no key
Docs
/docs this page

CDN Endpoints (Public)

All under https://anizil.proo.one/cdn — also available as https://anizil.proo.one/cdn/v2

Anime

GET/cdn/animepaginated ?page&limit&genre&status&q
GET/cdn/anime/{id}by id
GET/cdn/anime/{slug}by slug
GET/cdn/anime/{id}/episodesepisodes (paginated)

Episodes & Stream

GET/cdn/episodes?anime_id=1all / filter by anime
GET/cdn/episodes/{id}single by id
GET/cdn/episode/{id}alias — single by id
GET/cdn/stream/{code}by stream_code (AK{id}{hash}) — sources included
GET/cdn/watch/{code}alias — same as stream

Discovery

GET/cdn/trending?limit=10top by views
GET/cdn/latest?limit=10recently added
GET/cdn/randomrandom anime
GET/cdn/schedule?day=Mondayestimated schedule
GET/cdn/statscounts

Search & Meta

GET/cdn/search?q=narutosearch
GET/cdn/genresgenre list
GET/cdn/user/{id}public profile
GET/cdn/infoservice info

Auth (WEB compat)

POST/cdn/login{email,password}
POST/cdn/register{name,email,password}
GET/api/authWEB session check (cookie auth_token)
GET/cdn/authCDN mirror — same

Premium

GET/cdn/premium/plansplans & XP costs
POST/cdn/premium/buy{user_id, plan:1|2|3} — buy with APC
GET/cdn/premium/animepremium anime list
GET/cdn/premium/status?user_id=1user premium status
POST/cdn/redeem{code,user_id} — redeem XP/premium

WEB Compat (ported from WEB/api/*)

POST/api/show-comment{user_id, show_comments} — WEB user_settings toggle
GET/api/message?offset&limitchat pinned + messages (WEB message.php)
POST/api/level-up{user_id} — rank/level calc (WEB level-up.php)
POST/api/notifications/{mark-read|delete|mark-all-read|clear-all}WEB noti.php CRUD
GET/cdn/message?offset&limitCDN mirror
GET/cdn/level-up?user_id=1CDN mirror

Community (public read)

GET/cdn/blogposts
GET/cdn/blog/{id}single
GET/cdn/blog/{id}/commentscomments
GET/cdn/fanartapproved fanart
GET/cdn/predictionsactive predictions
Legacy /api/v2/* still works — proxied to same handler. New apps use /cdn/*.

Animitsu Android App — REST API ANDROID

For Animistsu app per spec — base https://anizil.proo.one/api or https://anizil.proo.one/cdn (CORS *, no key, poll 5s)

Comment System (anime_id)

GET/api/comments/{anime_id}list for anime — returns [ {id,user_id,username,profile_pic_url,role,text,likes,created_at} ]
POST/api/comments{user_id,anime_id,text} — also /cdn/comments
DELETE/api/comments/{comment_id}delete own — also /cdn
POST/api/comments/{id}/like{user_id} toggle like — also /cdn

User & Roles

GET/api/users/{user_id}{user_id,username,profile_pic_url,role,is_premium,premium_until}
PUT/api/users/{user_id}{username,profile_pic_url} — also /cdn
GET/api/users/{user_id}/is-admin{is_super_admin:bool} — golden crown + shimmer for super_admin

Premium

GET/api/users/{user_id}/premium{is_premium,premium_until}
POST/api/users/{user_id}/activate{days:30} — also premium_orders table

Auth (device_id)

POST/api/users/register{device_id,username} → {user_id,username,role,profile_pic_url}
Super Admin: role super_admin → comments show verified + shimmer bg. Profile pic URL is absolute https:// — app loads via Coil. Login now returns outer user_id + profile_pic_url (absolute) for rendering.

OAuth (no API key)

POST/api/oauth/token{email,password} → {user_id,access_token,refresh_token,user}
POST/api/oauth/refresh{refresh_token} → {access_token}
GET/api/oauth/userinfoBearer access_token → user profile (also /cdn/oauth/*)

Admin CDN — No Token (Scratch) NEW

App er jonno admin er sob output — no token, public. Base https://anizil.proo.one/cdn er pasapasi https://anizil.proo.one/admin-cdn

GET/admin-cdninfo + apk (no token)
GET/admin-cdn/animeall anime (paginated, admin view)
GET/admin-cdn/usersusers sanitized
GET/admin-cdn/statscounts
GET/admin-cdn/apkapk file + download url
GET/admin-cdn/settingspublic settings
GET/admin-cdn/commentsapproved comments
GET/admin-cdn/forumforum posts
GET/admin-cdn/badgesbadges
GET/admin-cdn/dashboardoverview stats+settings+apk
Docs: /admin-cdn (HTML) + ?format=json (JSON) — also /admin-cdn/docs

Examples

List with pagination

// GET /cdn/anime?page=1&limit=2 { "data": [{ "id":1, "title":"Attack on Titan" }], "pagination": { "page":1, "limit":2, "total":42, "pages":21 } }

JS fetch

const r = await fetch('/cdn/search?q=solo'); const {data, pagination} = await r.json();

PHP

$json = file_get_contents('https://anizil.proo.one/cdn/trending?limit=5'); $data = json_decode($json, true)['data'];

Schema (core)

TableKey fields
animeid, title, slug, poster_url, genre[], airing_status, broadcast_day
episodesid, anime_id, title, created_at
usersid, name, avatar, role

Routing

GET /cdn/anime → cdn/index.php GET /cdn/v2/anime → cdn/index.php (compat) GET /api/v2/anime → api/v2/index.php GET /api/anime → api/index.php

.htaccess + web.php both route. Purge cache after deploy.

Advertisement