Skip to main content

Base URL

https://{your-deployment-domain}/api/v1
For local development: http://localhost:8080

Authentication

The API has three roles:
TierEndpointsAuth
PublicGET /supply/{asset_id}, GET /transfers/countNone
UserPOST /transfers, POST /accountsWallet or client proof in request body
AdminPOST /assets, POST /mint, POST /burnOperator token or deployment-specific admin auth
Admin endpoints require deployment-specific operator auth. User endpoints are authenticated by the proof fields within the request body — no universal HTTP-level auth contract is assumed here.

Request format

All endpoints accept and return application/json.
curl -X POST https://your-node/api/v1/transfers \
  -H "Content-Type: application/json" \
  -d '{ ... TransferData ... }'

Response format

Successful responses return 200 OK with a JSON body. Errors return a non-2xx status with a JSON error object:
{
  "error": "insufficient balance: account abc123 has 50 usdc, needs 100"
}

Common error codes

HTTP StatusMeaning
400Malformed request or failed Tx.Validate()
409Duplicate nullifier (double-spend attempt)
422Insufficient balance or unknown asset
500Node error — check runtime or consensus logs

Endpoints

MethodPathDescription
GET/supply/{asset_id}Asset supply totals
GET/transfers/countTotal transfer count (List 1 length)
GET/transfer/{transfer_id}Single transfer record (List 1)
POST/transfersExecute an anonymous transfer
POST/accountsRegister an account commitment
GET/healthNode health check
Admin-only:
MethodPathDescription
POST/assetsRegister a new asset
POST/mintMint supply to an account
POST/burnBurn supply from an account