Endpoint
An interactive schema explorer is available at https://api.novilist.co/api/v1/explorer. Use it to browse types, run test queries, and inspect the full public schema.
Credentials
Low-volume catalog queries and introspection can be tried without credentials. Use an application key for an attributable catalog quota, or OAuth when acting for a user.
Registering an Application
Before using the API, register an application in developer settings. Registration is immediate and returns:
You may register up to 20 applications. Key rotation invalidates the previous key. Disabling or deleting an application invalidates all associated user tokens.
User Authorization
NoviList uses OAuth 2.0 with mandatory PKCE S256. There are no client secrets or refresh tokens. Tokens are valid for one year.
Generate PKCE values
Create a cryptographically random state, a 43–128 character code_verifier, and its base64url-encoded SHA-256 hash called code_challenge.
Redirect the user
Build the authorization URL and redirect the user to grant consent. The redirect_uri must exactly match a registered URI.
Verify the callback
After the user consents, they are redirected to your URI with ?code=...&state=.... Verify state matches the value you sent.
Exchange for a bearer token
POST the authorization code within two minutes. The code is single-use and expires quickly.
Response:
Scopes
Scopes control what operations a bearer token can perform. Request only the scopes you need. Scopes do not imply one another.
Catalog-only requests using an application key do not require OAuth. Add user-specific scopes via bearer token when needed.
Catalog
The public catalog includes novels with titles, covers, release dates, staff credits, publishers, tags, genres, relations, and public external links. Disabled links and internal notes are excluded.
Pagination
List queries use cursor-based pagination. This is more efficient than offset-based pagination for large datasets and provides consistent results when items are inserted or deleted between requests.
To fetch the next page, take the endCursor from the previous response and pass it as the after argument. Stop when hasNextPage is false.
Filtering
The searchNovels query accepts optional filter arguments to narrow results. All filters are combinable.
Other filters include excludedTags, excludedGenres, isAdult, isLicensed, completelyTranslated, and year. Consult introspection for exact argument
types instead of hard-coding a copied schema.
Reading Lists
Authenticated users can read their reading lists and update progress. The public API uses cursor pagination with after and first arguments.
Without userId or userName, the query targets the authenticated user.
Another user's public list may be requested explicitly; private entries remain filtered.
Submission Tools
The public API can look up likely catalog matches, read the authenticated user's submission history, and create new-novel or existing-novel edit proposals.
Use submissions:read for history and submissions:write for creation. Reuse a
client-generated idempotencyKey when retrying the
same attempt and set autoSubmit: true to enter the
normal review pipeline. Use catalog:lookup for submissionEntityLookup. Submission notes are
user-supplied content; do not render them as trusted HTML.
Responses and Errors
Executed operations follow the standard GraphQL format: a data key for successful operations, or an errors array when something goes wrong. Authentication failures that occur before GraphQL execution
may instead be an HTTP JSON response containing top-level error and code fields.
Success
Error
Authorization and validation error codes:
Rate Limits
Retry-After before retrying. Exponential backoff is recommended for repeated 429 responses.These are current defaults and may change. Treat the response headers as authoritative. GraphQL complexity limits are enforced separately from request quotas.
Versioning
The API is versioned via the URL path: /api/v1/graphql. Introspection reports only the public v1 schema.
Non-Breaking (within v1)
- + Adding new fields or types
- + Adding new enum values
- + Adding new query arguments
Breaking (requires new version)
- x Removing or renaming fields
- x Changing nullability
- x Removing enum values
Developer application management uses the session-authenticated site schema, not public credentials.
Account security, application management, social features, moderation, administration, maintenance, chapter ingestion, and submission writes are not part of public API v1.