Skip to main content
The asobeast API is the same API the dashboard uses. Every endpoint on it requires authentication, and the endpoint pages in this tab are generated from the API’s own OpenAPI document.

Base URL

There are two, and which one you use depends on where your code runs. The proxy path is not a convenience wrapper. In the Compose stack the API stays on a private network and is never published, so the web origin is the only way in from outside the host. The proxy forwards your Authorization header unchanged.

Authentication

Send a personal API token as a bearer header on every request. See Authenticate API requests.

Content type

JSON in, JSON out. Send Content-Type: application/json on any request with a body. Errors are JSON too, in a consistent envelope. See Error responses.

The OpenAPI document

Your own instance serves it at /docs-json, with human readable documentation at /docs. Both are gated by API_DOCS, which defaults to owner. An unauthenticated request answers 404 rather than 401, because the surface does not confirm it exists. See The queue dashboard and the OpenAPI surface. The copy powering the endpoint pages in this tab is committed in the repository, so this documentation site never needs a running instance to build.

A worked example

Authenticate, list apps, pull a ranking history and write it out. Every step uses the same bearer header.
Two things to carry into your own code. A position of null means the keyword was checked and the app was not found within that row’s depth, so never read it as zero. Every daily value is a UTC date string, so compare the strings rather than parsing them into local time. See API conventions.

Export formats

The API speaks JSON only, which is what a script should read. CSV is a dashboard feature: the keyword monitor and the rankings view export the table you are looking at, with the filters you applied. See Export data. Read RateLimit-Remaining on the way through if the instance is metered, and honour Retry-After on a 429. See Rate limits and quotas.

Generate a client

Any OpenAPI generator works against the document.
If you write TypeScript, consider using @asobeast/shared directly instead. It holds the same contract types the API and the dashboard are built from, which is what the MCP server does.

API conventions

UTC dates, 1 based positions, 202 for queued work.

Rate limits and quotas

What a metered instance allows and what a 429 means.
Last modified on August 24, 2026