canonical: https://jentic.com/apis/myanimelist.net/myanimelist

# MyAnimeList API (beta ver.)

Jentic publishes the only available OpenAPI specification for MyAnimeList API (beta ver.), keeping it validated and agent-ready. The MyAnimeList v2 API exposes anime and manga catalog data plus a user's personal lists, including ranked lists, seasonal anime, suggestions tailored to the authenticated user, and forum boards and topics. Authenticated users can update or remove their list status for any anime or manga, while public catalog and ranking endpoints can be queried with a client ID alone.

## For AI agents

Search MyAnimeList anime and manga, read user list status, and update or delete entries on a user's anime or manga list. Returns catalog and list data across 18 operations.

## Scope

Does not stream anime, sell merchandise, or host video - use for anime and manga catalog lookup, user list management, and forum reading only.

## Capabilities

- Search and list anime in the MyAnimeList catalog
- Read detailed metadata for a specific anime or manga title
- Pull the seasonal anime lineup for a given year and season
- Get personalized anime suggestions for the authenticated user
- Add, update, or remove an entry from the user's anime or manga list
- Read the anime and manga ranking lists
- Browse forum boards and read the messages in a forum topic

## Use cases

### Anime Discovery and Recommendation

Build a discovery experience that surfaces seasonal releases and personalized suggestions for an authenticated MyAnimeList user. GET /anime/season/{year}/{season} returns the current seasonal lineup; GET /anime/suggestions returns suggestions tailored to the user's existing list. Together they power 'what to watch this season' modules without operating a recommendation pipeline.

Example prompt: Call GET /anime/season/{year}/{season} for the current quarter and GET /anime/suggestions, then merge results into a discovery feed for the authenticated user.

### Personal List Sync from Another Tracker

Sync watch progress recorded in another anime tracker into MyAnimeList so the user's MAL profile stays current. PATCH /anime/{anime_id}/my_list_status updates status, score, and episode count; DELETE /anime/{anime_id}/my_list_status removes an entry. The same flow works for manga via the manga endpoints.

Example prompt: For each watch event in the source tracker, call PATCH /anime/{anime_id}/my_list_status with the new episode count and status.

### Top Anime Leaderboard

Render top-ranked anime and manga lists for a community site or fan portal. GET /anime/ranking and GET /manga/ranking return ranked lists by category (all-time, by popularity, airing, upcoming). The lists update automatically as MyAnimeList recomputes rankings, so consumer pages stay current without manual editorial work.

Example prompt: Call GET /anime/ranking with ranking_type=all to render the top 50 anime, then GET /manga/ranking for the manga side.

### Forum Topic Reader

Embed MyAnimeList forum boards and topic threads into a community dashboard. GET /forum/boards lists boards; GET /forum/topics lists topics for a board; GET /forum/topic/{topic_id} returns a topic's posts. This lets a fan site surface MAL discussions without scraping the forum HTML.

Example prompt: Call GET /forum/boards, then GET /forum/topics for the selected board and render the topic list with links to GET /forum/topic/{topic_id} for full posts.

### AI Agent Anime Tracking Assistant

Equip a Jentic-driven assistant that updates the user's MyAnimeList entries as they describe what they watched. The agent searches Jentic for 'update MyAnimeList anime status', loads PATCH /anime/{anime_id}/my_list_status, and submits the update. Jentic handles the OAuth flow plus the X-MAL-CLIENT-ID header so credentials stay out of the agent's prompt.

Example prompt: Through Jentic, search for 'update my anime list status', load PATCH /anime/{anime_id}/my_list_status, and set status=watching with num_watched_episodes=5 for the matching anime ID.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /anime | Search the anime catalog |
| GET | /anime/{anime_id} | Get anime details |
| GET | /anime/ranking | Get anime ranking |
| GET | /anime/season/{year}/{season} | Get seasonal anime |
| GET | /anime/suggestions | Get anime suggestions for the user |
| PATCH | /anime/{anime_id}/my_list_status | Update anime list status |
| DELETE | /anime/{anime_id}/my_list_status | Delete an anime from the user's list |
| GET | /manga | Search the manga catalog |

## Key resources

- **Anime** — Search, read, rank, and find seasonal and suggested anime
- **Manga** — Search, read, and rank manga titles
- **User Anime List** — Update and delete entries on the user's anime list
- **User Manga List** — Update and delete entries on the user's manga list
- **Forum** — Browse forum boards, topics, and individual topic posts
- **User** — Read authenticated user details

## Why Jentic

- **Setup:** Wiring the MyAnimeList API by hand means juggling two auth modes, the X-MAL-CLIENT-ID header and an OAuth access token, and knowing which one each operation needs yourself. Through Jentic you install once, import the MyAnimeList API from the API Directory, store both credentials once, and your agent calls it.
- **Permission scoping:** MyAnimeList puts the anime id in the URL path (/anime/{anime_id}/my_list_status), so a rule can pin your agent to one anime entry. You choose the operations it may call, so a call like deleting a list status is not included unless you add it.
- **Credential handling:** Your MyAnimeList client id and OAuth access token are stored once, encrypted, by your own Jentic One instance and injected per operation at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'list seasonal anime' or 'update my anime list', and Jentic returns the matching MyAnimeList operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Kitsu API** — Kitsu offers an open anime and manga catalog with user lists as an alternative to MyAnimeList.
- **MusicBrainz API** — MusicBrainz covers music metadata that pairs with MAL when building cross-media fan profiles.
- **TheAudioDB API** — TheAudioDB adds artist images and biographies that can decorate anime soundtrack credits pulled from MAL.

## FAQ

### Why is there no official OpenAPI spec for MyAnimeList API (beta ver.)?

MyAnimeList does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call MyAnimeList API (beta ver.) via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the MyAnimeList API use?

MyAnimeList supports two schemes. Public catalog reads accept the X-MAL-CLIENT-ID header with a client ID alone, while user-scoped operations require OAuth 2.0 with an access token from the MyAnimeList authorization flow. Through Jentic, both credentials are stored in the vault and applied at request time.

### Can I update my watch status with the MyAnimeList API?

Yes. PATCH /anime/{anime_id}/my_list_status updates the status, score, and episode count for an anime on the authenticated user's list. Use DELETE on the same path to remove the entry entirely.

### How do I get seasonal anime through Jentic?

Through Jentic, search for 'list seasonal anime', load GET /anime/season/{year}/{season}, and pass the year and one of winter/spring/summer/fall. Jentic returns the seasonal list to your agent without exposing the underlying credentials.

### What are the rate limits for the MyAnimeList API?

MyAnimeList rate limits are not declared in the OpenAPI spec and are enforced at the gateway. Stay below a few requests per second per client and back off on 429 responses; bulk syncs should run sequentially rather than in parallel.

### Does the MyAnimeList API expose forum data?

Yes. GET /forum/boards lists boards, GET /forum/topics lists topics in a board, and GET /forum/topic/{topic_id} returns the posts within a topic. This is useful for surfacing community discussions in a fan portal.

### Can I limit what my agent is allowed to do with the MyAnimeList API?

Yes. Because you run Jentic One yourself, your own rules decide which MyAnimeList operations and credentials the agent may use, so it can be given read-only calls like GET /anime and GET /anime/ranking while a write such as PATCH /anime/{anime_id}/my_list_status or a DELETE on that path is excluded unless you add it. Since MyAnimeList puts the anime id in the URL path (/anime/{anime_id}/my_list_status), a rule can also pin the agent to a single anime entry. The stored client ID and OAuth token are injected only for the operations you permit.
