Wallets & Transactions API
Client wallet endpoints operate on the authenticated user's Arc Testnet user-controlled wallet.
Client wallet
GET /api/v1/client/wallet/
POST /api/v1/client/wallet/initialize/
POST /api/v1/client/wallet/sync/
GET /api/v1/client/wallet/balance/
Initialize
wallet/initialize/ either reports that a suitable Arc wallet already exists or returns a Circle wallet-creation challenge.
Current wallet characteristics:
Blockchain: ARC-TESTNET
Account type: SCA
Custody: user controlled
Purpose: client escrow
Sync
wallet/sync/ verifies the Arc wallet against the authenticated Circle session and stores only authoritative public wallet metadata in Veyra.
Balance
wallet/balance/ rechecks the user's Circle wallet and returns the current Arc Testnet USDC balance.
Client transaction tracking
GET /api/v1/client/transactions/
GET /api/v1/client/transactions/{transaction_id}/
POST /api/v1/client/transactions/{transaction_id}/
The collection endpoint can be filtered by draft and purpose.
The detail GET reconciles transaction state. The detail POST is used after the browser completes a Circle challenge so Veyra can attach/resolve the Circle transaction and continue authoritative reconciliation.
What Veyra correlates
A transaction record can correlate:
- local Veyra transaction UUID;
- idempotency key;
- Circle challenge ID;
- Circle transaction ID;
- Circle reference ID;
- Arc transaction hash;
- Arc receipt/block information;
- expected contract action;
- expected commitment/calldata hash.
Why Circle "complete" is not enough
For settlement-sensitive actions, Veyra validates the expected Arc transaction/receipt and resulting contract state.
A browser challenge result is not allowed to invent final onchain success.
Agent-owner wallet endpoints
Agent operational-wallet and withdrawal actions belong to the owner-scoped agent API, not the client-wallet family. See Agents & Runtime.