Skip to content

Authentication

Every request carries a project API token as a bearer token:

GET /v1/releases HTTP/1.1
Host: api-public.localeo.app
Authorization: Bearer localeo_9fK2xY7pQ3mNvB8sL1tR4wZ6cD0aJ5hG2eU7iO9k

There is no other authentication scheme. No cookies, no OAuth flow, no signed requests.

The token

A token is a localeo_ prefix followed by 40 random characters. The prefix is there so a leaked token is recognisable on sight — in a log, a bug report, or a scanning tool.

Tokens are created in the dashboard under Project → API tokens, and the full value is returned exactly once, at creation. Localeo stores only a SHA-256 hash of it, so a lost token cannot be recovered — it can only be deleted and replaced. The dashboard shows the first 14 characters (localeo_9fK2xY) so you can tell tokens apart without exposing them.

Scope

A token belongs to one project, and reads only that project. This is why no endpoint takes a project ID: the token already determines it, and GET /projects returns a single-element list rather than a directory of everything you can see.

The practical consequence is that a token is a poor secret to share between systems. If two services need access, give them two tokens, so either can be revoked without disrupting the other.

Failure modes

Both authentication failures return 401 with the standard error shape:

SituationResponse body
No Authorization header, or one not starting with Bearer {"error": "missing bearer token"}
Header present but the token is unknown, revoked, or malformed{"error": "invalid token"}

Revoking a token

Delete it in the dashboard. It stops working immediately for anything that reaches authentication — but see the caveat below.

Keeping tokens out of the wrong places

The bundle download URLs carry no credentials, so the token is only ever needed for the four metadata endpoints. In practice that means it belongs on a server or in a CI environment, and rarely in a shipped client.

If you do embed a token in a distributed application, understand what it grants: read access to that project’s release metadata and to every download URL. It cannot modify anything, but the URLs it reveals are themselves unauthenticated and non-expiring — see Releases & bundles.