https://mcp.atlaso.ai/developer/v1 and authenticate
in one of two ways.
Mode A — project key + subject
The primary, server-to-server model. You send your project key and name the end-user you’re acting for:- Key format:
atlk_+ a 12-character hex prefix +_+ a long random secret. Mint it in Settings → Developer → New key; it’s shown once. - Subject: any stable string you choose for one of your users or devices.
Must match
^[A-Za-z0-9_.:@\-]{1,128}$. It’s case-sensitive and stored as-is.
Mode B — per-device credential
For hardware you don’t fully control (an ESP32, a robot), mint a credential whose subject is baked in, so the device can’t address anyone else:- Format:
atldev_+ a 12-character hex id +_+ a 32-character hex secret (128-bit). - The subject is pinned to the credential. Sending an
X-Atlaso-Subjectheader alongside a device bearer is rejected with400— the credential already decides the subject. - A device credential can only
remember,recall, and delete its own subject’s memories. It can never mint other credentials or create projects.
Keeping keys safe
TheX-Atlaso-Subject header is a claim, not a login — Atlaso trusts that
your server already authenticated the end-user before it set the subject. Do
your own auth first, then call Atlaso.
Errors
Failures are fail-closed and return JSON. Authentication and entitlement failures include anX-Atlaso-Error header naming the cause; some validation
400 and 422 responses use FastAPI’s standard error shape and omit that
header.
A lapsed Build subscription returns
402 on the data plane but keeps your
keys and memories intact, and you can still list and revoke keys — so you
can wind down or kill a leaked key even while unsubscribed. Renew and
everything resumes.