Skip to Content

Error Codes

Proxy API Errors

CodeHTTP StatusMeaningResolution
VALIDATION_ERROR400Request body failed Zod validationCheck required fields and formats
INVALID_AMOUNT400Amount must be positiveProvide a positive USDC amount
AUTH_REQUIRED401Missing or invalid JWTAuthenticate via /api/auth/challenge + /api/auth/verify
INSUFFICIENT_BALANCE400Agent balance too low for payment/withdrawalDeposit more USDC first
ZK_NOT_CONFIGURED503ZK Pool Service not initializedEnsure POOL_SECRET and POOL_CONTRACT_ID are set
PREPARE_EXPIRED400Deposit prepare ID not found or expiredCall /api/deposit/prepare again
PREPARE_FAILED500ZK proof generation or simulation failedCheck proxy logs for circuit/contract errors
SEND_FAILED502Transaction rejected by Stellar networkCheck account funding and sequence numbers
TX_FAILED502Transaction failed on-chain after submissionCheck Stellar Expert for diagnostic events
WITHDRAW_TX_FAILED502Atomic ZK withdrawal failedCheck proxy logs — likely proof or nullifier issue
DEPOSIT_FAILED500Deposit processing errorCheck proxy logs for detailed error
PAYMENT_FAILED500x402 payment routing failedVerify service is running and balance is sufficient
BATCH_NOT_CONFIGURED503Batch operator not initializedEnsure POOL_SECRET is set
USE_ATOMIC_DEPOSIT400Non-localhost request to legacy deposit endpointUse /api/deposit/prepare + /api/deposit/submit instead

On-Chain Contract Errors

ErrorContractMeaning
Invalid proofPoolGroth16 verification failed — proof is malformed or doesn’t match public inputs
Unknown rootPoolThe Merkle root in the proof doesn’t match any root in the contract’s ring buffer
Nullifier already usedPoolDouble-spend attempt — this nullifier was already consumed
ASP membership check failedPoolProver is not in the ASP membership tree
Insufficient pool balancePoolPool doesn’t have enough USDC for the withdrawal amount
Simulation failedRPCThe transaction would fail if submitted — check diagnostic events for the reason
Last updated on