VEREX API DOCUMENTATION Version: 1.1.0 Last Updated: 2026-01-15 =============================================================================== API ARCHITECTURE =============================================================================== Verex provides TWO separate APIs: ┌─────────────────────────────────────────────────────────────────────────────┐ │ MANAGEMENT API │ CLIENT API │ │ /api/v1/ │ /api/client/v1/ │ │ Auth: JWT │ Auth: API Key │ │ Billing: FREE │ Billing: 1000 calls = 1 token │ │ Use: Dashboard, admin tasks │ Use: External integrations │ └─────────────────────────────────────────────────────────────────────────────┘ =============================================================================== QUICK START =============================================================================== STEP 1: Login (Management API) ------------------------------ POST /api/v1/auth/login/ Content-Type: application/json { "email": "user@example.com", "password": "your_password" } Response: { "tokens": {"access": "eyJ...", "refresh": "eyJ..."}, "default_tenant_id": "tenant-uuid" } STEP 2: Create API Key (Management API) --------------------------------------- POST /api/v1/auth/keys/ Authorization: Bearer X-Tenant-ID: Content-Type: application/json { "name": "Production Key" } Response: { "key": "ck_live_abc123..." ← SAVE THIS! Only shown once } STEP 3: Use Client API (External Integrations) ---------------------------------------------- All Client API calls use your API key - NO X-Tenant-ID needed! GET /api/client/v1/vaults/ Authorization: Bearer ck_live_abc123... POST /api/client/v1/transactions/transfer_native/ Authorization: Bearer ck_live_abc123... Content-Type: application/json { "vault_id": "uuid", "to_address": "0x...", "amount": "0.1" } =============================================================================== MANAGEMENT API (/api/v1/) - FREE, JWT AUTH =============================================================================== Authentication (JWT required + X-Tenant-ID header): Authorization: Bearer eyJhbGciOiJIUzI1... X-Tenant-ID: your-tenant-uuid AUTHENTICATION -------------- POST /api/v1/auth/login/ Login (get JWT) POST /api/v1/auth/token/refresh/ Refresh JWT GET /api/v1/auth/profile/ Get profile PATCH /api/v1/auth/profile/ Update profile GET /api/v1/auth/keys/ List API keys POST /api/v1/auth/keys/ Create API key POST /api/v1/auth/keys/{id}/revoke/ Revoke key POST /api/v1/auth/keys/{id}/rotate/ Rotate key 2FA --- POST /api/v1/auth/2fa/enable/ Enable 2FA POST /api/v1/auth/2fa/verify/ Verify 2FA setup POST /api/v1/auth/2fa/disable/ Disable 2FA TENANTS ------- GET /api/v1/tenants/tenants/ List tenants POST /api/v1/tenants/tenants/ Create tenant GET /api/v1/tenants/settings/ Get settings PATCH /api/v1/tenants/settings/ Update settings GET /api/v1/tenants/teams/ List teams GET /api/v1/tenants/members/ List members POST /api/v1/tenants/invitations/ Invite member BILLING (Check & Purchase Tokens) --------------------------------- GET /api/v1/billing/balance/ Get token balance GET /api/v1/billing/usage/ List usage logs GET /api/v1/billing/usage/summary/ Usage summary POST /api/v1/billing/requests/ Request tokens GET /api/v1/billing/wallets/ Platform wallets All other /api/v1/ endpoints work the same for dashboard access. =============================================================================== CLIENT API (/api/client/v1/) - BILLED, API KEY AUTH =============================================================================== Authentication (API Key only - tenant included automatically): Authorization: Bearer ck_live_abc123... OR X-API-Key: ck_live_abc123... HEALTH & INFO ------------- GET /api/client/v1/health/ Health check (no auth) GET /api/client/v1/me/ Get API key info VAULTS ------ GET /api/client/v1/chains/ List chains GET /api/client/v1/chains/active/ Active chains GET /api/client/v1/vaults/ List vaults (paginated) POST /api/client/v1/vaults/ Create vault GET /api/client/v1/vaults/{id}/ Get vault PATCH /api/client/v1/vaults/{id}/ Update vault GET /api/client/v1/vaults/{id}/balance/ Get balance POST /api/client/v1/vaults/{id}/refresh-balance/ Refresh balance GET /api/client/v1/vaults/{id}/deposit_info/ Deposit QR GET /api/client/v1/vaults/{id}/transactions/ Tx history Pagination Query Params (for list endpoints): ?page=1&page_size=20&status=ACTIVE&chain__code=ETH&search=wallet&ordering=-created_at Paginated Response: { "count": 150, "next": "https://api.verexbase.com/...?page=2", "previous": null, "total_pages": 8, "current_page": 1, "page_size": 20, "results": [...] } TRANSACTIONS ------------ GET /api/client/v1/transactions/ List transactions POST /api/client/v1/transactions/transfer_native/ Send native token POST /api/client/v1/transactions/transfer_erc20/ Send ERC20 POST /api/client/v1/transactions/{id}/broadcast/ Broadcast tx POST /api/client/v1/transactions/{id}/cancel/ Cancel tx GET /api/client/v1/estimate-gas/ Estimate gas POST /api/client/v1/validate-address/ Validate address GET /api/client/v1/network-status/ Network status DEPOSITS -------- GET /api/client/v1/deposits/ List deposits GET /api/client/v1/deposits/{id}/ Get deposit GET /api/client/v1/deposits/stats/ Statistics WEBHOOKS -------- GET /api/client/v1/webhooks/ List webhooks POST /api/client/v1/webhooks/ Create webhook GET /api/client/v1/webhooks/{id}/ Get webhook PATCH /api/client/v1/webhooks/{id}/ Update DELETE /api/client/v1/webhooks/{id}/ Delete POST /api/client/v1/webhooks/{id}/test/ Test webhook POLICIES -------- GET /api/client/v1/policies/ List policies POST /api/client/v1/policies/ Create policy GET /api/client/v1/rules/ List rules GET /api/client/v1/whitelist/ Whitelist POST /api/client/v1/whitelist/ Add address AUDIT ----- GET /api/client/v1/audit/ Audit events =============================================================================== BILLING =============================================================================== Client API is billed at 1000 API calls = 1 token. Check Balance: GET /api/v1/billing/balance/ Authorization: Bearer X-Tenant-ID: Purchase Tokens: POST /api/v1/billing/requests/ {"amount": 100} # Request 100 tokens When balance is insufficient, Client API returns: HTTP 402 Payment Required {"error": true, "code": "insufficient_tokens", "balance": "0.000"} =============================================================================== EXAMPLES =============================================================================== Create Wallet: -------------- POST /api/client/v1/vaults/ Authorization: Bearer ck_live_abc123... Content-Type: application/json { "name": "ETH Wallet", "chain_code": "ETH", "account_type": "KMS" } Send ETH: --------- POST /api/client/v1/transactions/transfer_native/ Authorization: Bearer ck_live_abc123... Content-Type: application/json { "vault_id": "vault-uuid", "to_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "amount": "0.5", "idempotency_key": "unique-ref-123" } Send USDT: ---------- POST /api/client/v1/transactions/transfer_erc20/ Authorization: Bearer ck_live_abc123... Content-Type: application/json { "vault_id": "vault-uuid", "to_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "token_symbol": "USDT", "amount": "100.50", "idempotency_key": "unique-ref-456" } Create Webhook: --------------- POST /api/client/v1/webhooks/ Authorization: Bearer ck_live_abc123... Content-Type: application/json { "name": "Production", "url": "https://your-app.com/webhooks", "events": ["tx.confirmed", "deposit.confirmed"] } =============================================================================== SUPPORTED CHAINS =============================================================================== EVM Chains: ETH, MATIC, BNB, ARB, OP, BASE, AVAX =============================================================================== ERROR CODES =============================================================================== 200 Success 201 Created 400 Bad Request 401 Unauthorized (missing/invalid auth) 402 Payment Required (insufficient tokens) 403 Forbidden (no permission) 404 Not Found 429 Rate Limited 500 Server Error =============================================================================== WEBHOOK EVENTS =============================================================================== Transaction: tx.pending, tx.approved, tx.signed, tx.broadcasted, tx.confirmed, tx.failed Deposit: deposit.detected, deposit.confirmed Vault: vault.created, vault.suspended Security: security.alert Verify signatures with HMAC-SHA256: X-Webhook-Signature: sha256= =============================================================================== COMPLETE DOCS =============================================================================== Full documentation: https://docs.verexbase.com API Status: https://status.verexbase.com Support: support@verexbase.com © 2026 Verex. All rights reserved.