- API key — for programmatic clients (bots, scripts, server-side integrations). Sent as the
X-API-Keyheader. Works on both REST and WebSocket. - Privy JWT — used by the web dashboard. Sent as
Authorization: Bearer <jwt>. The session signer underpinning the JWT also signs vault transactions in the browser.
POST /v1/api-keys (create a new API key) requires a Privy JWT, or an API key that holds the keys:manage scope.
Getting your API key
Generate an API key from the Totalis Dashboard:- Log in to app.totalis.trade
- Navigate to your account settings
- Create a new API key, name it, and choose its scopes (see below)
- Copy the full key immediately
Using your API key
Send your API key in theX-API-Key header with every request:
Scopes
Every API key carries a set of scopes — the capabilities you select at creation. A request to an endpoint whose scope the key lacks is rejected with403 (insufficient_scope). Grant only what a given integration needs.
A read-only integration (dashboards, reconciliation) needs only the
*:read scopes. A trading bot
adds trading:write (and funds:deposit if it tops up the vault). Reserve funds:withdraw,
tx:sign, and keys:manage for keys that genuinely need them — each can move funds or escalate.Managing API keys
You can list, create, and revoke API keys programmatically (or from the Dashboard):- List keys —
GET /v1/api-keys - Create key —
POST /v1/api-keys(requires a Privy JWT, or a key withkeys:manage) - Revoke key —
DELETE /v1/api-keys/{prefix}
Key lifecycle
- Active — the key is valid and can be used for authentication.
- Revoked — the key has been manually revoked and will be rejected.
- Expired — the key has passed its expiration date.
