API keys
Send an API key with every request, exceptGET /v1, GET /v1/openapi.json, GET /v1/openapi.yaml and the account routes, which take a session of the web app. Make and revoke keys on the account page. A key is numi_live_ followed by 32 letters and digits.
Send the key in the X-API-Key header:
GET /v1/me returns the plan of the key’s account (plan), the limits of that plan (limits) and the number of requests on the account today, this one included (requests_today).
The account page shows a new key only once, because only a hash of the key is stored. If you lose a key, revoke it. Then make a new key. An account can have as many active keys at once as its plan allows.
Errors
Every error response has this form:request_id is also in the x-request-id header.
Rate limits
Each plan has a limit of requests a minute and a limit of requests a day, listed on the plans page. REST requests and MCP tool calls count toward the same limits, and the daily count is reset at midnight UTC. The response to a request within the limits has theRateLimit-Remaining header: the number of requests that the account has left today. The response to a request over a limit has status 429, code rate_limit_exceeded, a Retry-After header with the number of seconds to wait, and a scope field: minute for the limit a minute, day for the limit a day.
The API also accepts at most 600 requests a minute from one IP address on the REST API, and 600 a minute on the MCP server, whatever keys the requests have.
Account routes
The/v1/account routes serve the account page of numi.sh. They take a session of the web app, not an API key.