Authentication¶
The public API authenticates with personal access tokens (PATs) sent as a bearer header:
Authorization: Bearer dxdt_...
curl -s https://<your-dxdt-host>/api/v1/me \
-H "Authorization: Bearer $DXDT_TOKEN"
Creating tokens¶
Two ways:
dxdt login— browser flow; mints a token automatically and stores it for the CLI.- Settings → CLI & API in the web app (or
POST /api/v1/tokensfrom an existing browser session) — for CI and integrations.
Tokens are shown once at mint time and stored only as a hash — copy them immediately. Minting always requires an interactive (browser) session: a token can never create another token.
Token properties¶
| Property | Behavior |
|---|---|
| Format | dxdt_ + 43 URL-safe random characters |
| Binding | Pinned to the minting user and tenant — requests can never widen to another tenant (403) |
| Scope | read or read_write (see below) |
| Expiry | Optional; set at mint time |
| Revocation | dxdt tokens revoke <id>, the web app, or DELETE /api/v1/tokens/{id} — immediate |
| Audit | Mint and revoke are recorded in the tenant audit trail |
Scopes¶
read— safe (GET) endpoints only. May not invoke the agent: agent runs can execute tools with side effects, so method-gating alone isn't sufficient.read_write— everythingreadallows, plus mutations and agent invocation (/api/v1/ask,/api/v1/stream).
Grant read to dashboards and reporting jobs; reserve read_write for
tooling that genuinely drives the agent or mutates state.
Budgets¶
Agent invocations are capped per token per UTC day. Exceeding the
budget returns 429 for further agent calls until the day rolls over —
non-agent endpoints keep working. This is a cost backstop for tokens
running in cron/CI; contact support to raise a tenant's limit.
Errors¶
| Status | Meaning |
|---|---|
401 |
Missing, invalid, expired, or revoked token — invalid tokens are always a hard 401, never a fall-through |
403 |
Valid token, but insufficient scope or a cross-tenant request |
429 |
Daily agent budget exhausted for this token |