Library

Reference

Library API

Search anime, manga and games from one endpoint, then fetch any result as a profile that follows the same schema.

The API is public and read-only. All endpoints return JSON and accept GET only.

Profile

GET/api/{type}/{id}

Returns a single item. The first request for an item fetches it from the provider and saves it to Firestore. Later requests are served from the saved copy, which is refreshed once it is older than 30 days.

Path parameters

typestringrequired
One of anime, manga or game.
idintegerrequired
The sourceId of a search result.

Example

Request
curl /api/anime/154587
Response
{
  "id": "ANIME_154587",
  "type": "ANIME",
  "title": "Sousou no Frieren",
  …
  "createdAt": "2026-10-10T08:00:00.000Z",
  "updatedAt": "2026-10-10T08:00:00.000Z"
}

Use the type and sourceId of a search result to build the profile URL, e.g. ANIME and 154587 become /api/anime/154587.

Media schema

Search results and profiles share the same shape for every type.

FieldTypeDescription
idstringType and source id joined, e.g. ANIME_154587. Also the Firestore document id.
type"ANIME" | "MANGA" | "GAME"Media type.
sourceIdstringId at the source provider.
titlestringPrimary title.
altTitlesstring[]Other known titles.
synopsisstring | nullPlot summary or description.
coverImagestring | nullCover art URL.
bannerImagestring | nullWide banner or artwork URL.
yearnumber | nullYear of first release.
statusstring | nullRelease status as reported by the provider.
genresstring[]Genres and themes.
scorenumber | nullRating normalized to 0–10.
source{ provider, url }The data provider and a link to the original page.
detailsobjectType-specific fields, listed below.
createdAtstringProfile only. ISO date the item was first saved.
updatedAtstringProfile only. ISO date the item was last refreshed.

Details by type

TypeFields
ANIMEmalId, format, episodes, duration, season, studios, airedFrom, airedTo
MANGAmalId, format, chapters, volumes, authors, publishedFrom, publishedTo
GAMEplatforms, developers, publishers, releaseDate

Caching

There are two layers of caching.

  • CDN, 7 days. Successful responses are cached at the edge for 7 days, keyed by the full URL. Note that q=Naruto and q=naruto are cached separately.
  • Firestore, 30 days. Profiles are refreshed from the provider once the saved copy is older than 30 days. If the provider is unavailable, the older copy is returned instead.

Data can therefore be up to about 37 days old.

Errors

Errors return a JSON body of the form { "error": "…" }.

StatusWhen
400Search was called without q, or q is longer than 100 characters.
404Unknown type, non-numeric id, or the provider has no item with that id.
502The provider or database failed and no saved copy could be returned.