API Reference

Authentication

Octo accepts a bearer token in the Authorization header. There are two kinds, for two audiences:

API key (server-to-server)

Your integration backend uses a per-wallet API key (octo_sk_test_… on testnet). The key maps to exactly one wallet, so wallet operations for that wallet are authorized automatically.

Authorization: Bearer octo_sk_test_ab12…

An API key can:

  • create and list deposit addresses,
  • read the wallet, balances, and transactions,
  • register webhook endpoints.
For safety, an API key cannot withdraw. Moving funds out requires a dashboard login token (below). A key is scoped to its wallet — using it against another wallet returns 404.

Login token (dashboard)

The dashboard authenticates users with a session JWT from POST /v1/auth/login. It authorizes everything its owner can do — including creating wallets and withdrawing — across all wallets the user owns.

# obtain a login token
curl -X POST http://localhost:8080/v1/auth/login \
  -H "content-type: application/json" \
  -d '{ "email": "you@acme.com", "password": "•••••••••" }'

# → { "data": { "token": "eyJ…", "user": { … } } }
Keep API keys secret and out of source control. If a key leaks, regenerate it on the wallet's Developers page — the old key stops working immediately.