RandomTranslator has two ways in for code and AI assistants:
- a small public catalogue API that needs no sign-in, and
- an MCP connector for Claude, ChatGPT and other assistants, behind the reader's own RandomTranslator sign-in.
Neither one translates, requests or scrapes a novel. They read what the site already holds.
Public API#
Base URL: https://randomtranslator.com/api/v1. JSON over HTTPS, no key, no token.
Stability#
The routes below are the public subset. For them we promise:
- The stable fields listed under each route keep their name, type and meaning. We may add fields; we do not remove or rename a stable field without a changelog entry and at least 30 days' notice here.
- Every other field in a response, and every route not listed here, is the website's own and can change without notice. Read only the stable fields.
- Ask for
view=cardwhere a route offers it. It is the lean, stable shape.
Routes#
Search and filter the catalogue
GET /novels/
| Parameter | Meaning |
|---|---|
title, author |
Text search on the original or English title or author (at most 100 characters). A pasted novel URL matches exactly. |
category |
A genre, as named in /novels/hub. |
status |
Ongoing or completed. |
include_tags[], exclude_tags[], include_all_tags |
Tags, as named in /novels/hub. |
include_fandoms[], exclude_fandoms[], fanfic |
Fandoms; fanfic=true for fan-fiction only, false to leave it out. |
min_word_count, max_word_count |
50k, 1.5m or a plain number. |
updated_within, created_within |
1d, 2w, 3m, 1y. |
sort_by, order |
views, last_added, word_count, chapter_count, reader_count, rating_count, score, newest, relevance; asc or desc. |
skip, limit |
Paging; limit at most 50. |
view |
card (recommended). |
Stable fields (view=card): total, and per item id, slug, original_title,
translated_title, original_author, translated_author, translated_category, status,
image_url, synopsis (plain English, at most 280 characters), novel_metadata.word_count,
novel_metadata.reader_count, novel_metadata.rating_count, novel_metadata.score_percent.
Genres, fandoms and tags
GET /novels/hub
Every genre, fandom and tag with its number of works. An entry's name is the exact value the
search filters take. Cached for an hour.
Stable fields: totals, genres[].name, genres[].count, fandoms[].name,
fandoms[].count, tags[].name, tags[].count, tags[].group, tag_groups[].slug,
tag_groups[].label.
Popular
GET /novels/popular/{range} with range one of daily, weekly, monthly, all_time.
| Parameter | Meaning |
|---|---|
include_fanfiction |
true (the default: fan-fiction only), false (everything but fan-fiction), all. |
skip, limit |
limit at most 50. |
view |
card (recommended). |
Stable fields: the card fields above, plus list_move (places climbed since about 24 hours ago;
negative fell; null when new or nothing to compare) and list_new.
Is this novel on RandomTranslator?
GET /novels/lookup?title=&author=
The novel held under this exact title (Chinese or English, case-insensitive), or null. With
author, a novel by another author does not match. Cache-Control: public, max-age=120.
Stable fields: novel_id, slug, title, card (the card fields above).
Which chapters exist
GET /novels/{id}/chapters/sequences
Stable fields: ranges, every run of consecutive chapter numbers as [first, last].
Recap outline
GET /novels/{id}/recaps?view=structure
The novel's volume and arc outline with no story text. Without view=structure the answer
contains recap text, which spoils the story; we do not promise its shape.
Similar novels
GET /ai/similar/{id}?limit= (limit at most 20)
Novels this novel's readers also read. No AI call happens here; the name is historical.
Cache-Control: public, max-age=300.
Stable fields: novel_match, items[].id, items[].slug, items[].translated_title,
items[].original_title, items[].chapter_count.
Errors#
Errors are JSON, {"detail": "...", "code": "..."}:
| Status | code |
Meaning |
|---|---|---|
| 404 | No such novel. | |
| 404 | not_found_merged |
The novel was merged; the answer carries the novel_id that replaced it. |
| 410 | not_found_deleted |
The novel was deleted. |
| 429 | rate_limited |
Too many requests; wait for Retry-After seconds. |
Examples#
# Completed novels with the "System" tag, best rated first, lean rows
curl -s 'https://randomtranslator.com/api/v1/novels/?status=completed&include_tags[]=System&sort_by=score&limit=10&view=card'
# What is popular this week, without fan-fiction
curl -s 'https://randomtranslator.com/api/v1/novels/popular/weekly?include_fanfiction=false&view=card'
# Every genre, fandom and tag the filters accept
curl -s 'https://randomtranslator.com/api/v1/novels/hub'
# Do you have this novel?
curl -s --get 'https://randomtranslator.com/api/v1/novels/lookup' --data-urlencode 'title=斗破苍穹'
# Its chapter numbers, then readers-also-read
curl -s 'https://randomtranslator.com/api/v1/novels/12345/chapters/sequences'
curl -s 'https://randomtranslator.com/api/v1/ai/similar/12345?limit=10'
Use RandomTranslator in Claude and ChatGPT#
The connector lets an assistant search the catalogue, read your library and reading position, tell you which novels got new chapters, look up a novel's glossary, and recap a novel up to where you are.
Connector URL: https://randomtranslator.com/mcp
Claude: Settings, Connectors, Add custom connector. Paste the URL, press Add, then Connect. Sign in with Patreon when asked, read what the app may do, and press Allow.
ChatGPT: turn on Developer mode (Settings, Apps and Connectors, Advanced settings), then add a custom connector with the URL above and OAuth sign-in. Sign in with Patreon when asked and press Allow.
You can see and disconnect every connected app on your account page under Connected apps. Signing out everywhere also disconnects them all.
What the connector never does: translate or re-translate a chapter, request or refresh a novel, use Google Translate, read aloud, change anything on your account, or show chapter text.
OAuth for apps#
Third-party apps use the same OAuth 2.1 server as the assistants. RandomTranslator is its own authorization server; it is separate from DaoSearch's and does not accept DaoSearch tokens.
- Discovery:
https://randomtranslator.com/.well-known/oauth-authorization-serverandhttps://randomtranslator.com/.well-known/oauth-protected-resource/mcp. - Register:
POST https://randomtranslator.com/oauth/register(RFC 7591) withclient_name,redirect_uris(https, orhttp://127.0.0.1/http://localhoston any port) andtoken_endpoint_auth_method: "none"(a public client, the default and the right choice for a mobile or desktop app). A server-side app may ask forclient_secret_postorclient_secret_basic; its secret is shown once, in the registration answer. Redirect URIs are https, or http onlocalhost,127.0.0.1or[::1]. Limit: 30 registrations an hour per address. - Authorize:
https://randomtranslator.com/oauth/authorizewith PKCE S256 (required;plainis refused),state,scope, andresource=https://randomtranslator.com/mcp. The reader signs in with Patreon and sees a consent page. The redirect carriescode,stateandiss. - Token:
POST https://randomtranslator.com/oauth/token, grantsauthorization_codeandrefresh_token. Access tokens last 1 hour. Refresh tokens last 60 days and rotate on every use: keep the new one, because sending a used one again disconnects the app. - Revoke:
POST https://randomtranslator.com/oauth/revoke(RFC 7009). - Use the token only against
https://randomtranslator.com/mcp. It does not work on/api/v1.
Scopes:
| Scope | Lets the app |
|---|---|
read:catalog |
Search the catalogue and read novel pages. |
read:library |
Read the reader's shelves, position and new chapters. |
read:glossary |
Read a novel's glossary. |
read:recaps |
Read recaps up to the reader's position. |
Without a scope, an app gets all four. Chapter text is reserved for RandomTranslator's own apps
and is not available to third-party apps or connectors.
Limits and fair use#
- Public API: 120 requests a minute and 30 in any 5 seconds per address. Cache what you fetch; the catalogue changes slowly.
- Connector and OAuth apps: 60 calls a minute and 2,000 a day for each connected app (the day resets at 00:00 UTC).
- Do not mirror the catalogue or chapters, resell access, or use the API to get around the paid tier. We disconnect apps and block addresses that do.
- We can switch the connector off at any time to protect the site.
Questions, or a higher limit for a good reason: Contact, or Discord.
Changelog#
- 2026-11: Public catalogue API documented. MCP connector and OAuth for apps.