ResourcesAPI ReferenceAPI Authentication
API Reference

API Authentication

Bearer token authentication, IP allowlist, workspace state checks, and token ability scopes for the developer API.

API Authentication

All requests to the server-to-server API (/api/v1) must be authenticated with a workspace API token.


Bearer token

Include the token in the Authorization header on every request:

Authorization: Bearer dotva_sk_...

Tokens are created per-workspace in "Developer Settings". Each token is bound to a single workspace — every resource is automatically scoped to that workspace.

ConditionResponse
Missing / invalid / expired / disabled token401 api.unauthenticated
Token belongs to a frozen / deleted workspace403 api.workspace_inactive
Calling IP not in the token's allowlist403 api.ip_not_allowed
Token lacks the required ability403 api.insufficient_ability

IP allowlist

A token may optionally define an IP allowlist in CIDR notation. If set, any request originating from an IP outside the allowlist is rejected with 403 api.ip_not_allowed.

Leave the allowlist empty to allow all IPs (useful for development; tighten for production).


Workspace state

If the token's workspace is frozen or soft-deleted, all requests return 403 api.workspace_inactive regardless of the token's validity or abilities.


Token abilities

Each token is granted a set of abilities at creation time. Routes require specific abilities — a missing ability returns 403 api.insufficient_ability.

AbilityDescriptionApplicable endpoints
cards.readRead cards and card transactionsGET /cards, GET /cards/{uuid}, GET /cards/{uuid}/transactions
cards.writeIssue cards and run card lifecyclePOST /cards, topup / freeze / unfreeze / close
orders.readRead ordersGET /orders, GET /orders/{uuid}
wallet.readRead wallet balancesGET /wallet
transactions.readRead wallet ledgerGET /transactions

Grant only the abilities your integration actually needs — follow the principle of least privilege.


Creating a token

  1. Navigate to Developer Settings in your workspace.
  2. Click New API Token.
  3. Enter a name, select abilities, and optionally set an IP allowlist and rate limit.
  4. Copy the token immediately — it is shown only once.

Tokens can be rotated or revoked from the same settings page at any time.