AmbiguousPoolPairError | The same token symbols exist under multiple admins | Retry with poolId or both token admin fields |
ActiveSwapIntentError | An active swap intent already exists for this wallet, pool, and input token (subclass of ConflictError) | Resume the existing intent via err.existingIntentId, or cancel it before creating another |
ConflictError | Some other request conflict not covered by a more specific subclass | Inspect err.message |
AuthError | API key is wrong, missing, or the wallet token is invalid/expired | Check your key and refresh wallet auth |
ValidationError | Bad params or preflight validation failed (missing field, invalid amount, token/pool mismatch) | Fix the request |
SettlementSafetyError (400) | swaps.create was blocked by the pre-payout safety guard; no intent was created (subclass of ValidationError) | Reduce the swap size or wait a few minutes, then retry. Inspect err.code/err.reason, or check quote.settlementSafety first |
NotFoundError | Pool or intent doesn’t exist | Check the ID |
RateLimitError | Too many requests | Back off and retry |
SlippageError | Price moved during swap | Retry with higher tolerance or try again |
PriceImpactError | An already-created swap later reached terminal status price_impact_exceeded during execution | Reduce swap size or add liquidity to the pool before retrying |
InsufficientLiquidityError | The pool could not fill the swap | Retry later or reduce size |
InsufficientAmountError | A created swap was refunded because the live network cost exceeded the deposit | Increase the amount and create a new intent |
OutputFailedError | Output payout failed or the swap party had no output holdings | Inspect the terminal intent status before retrying |
SwapFailedError | The swap reached a generic terminal failure state | Investigate the intent before retrying |
RefundFailedError | The refund path failed after a swap error | Manual intervention is required |
ValidationError (400) | Quote or intent creation failed because price impact already exceeded the server cap | Reduce swap size or add liquidity before retrying |
ValidationError (400) | Quote or intent creation failed because the amount was below the estimated network cost | Increase the swap amount. The error response includes minimumAmount. |
ExpiredError | The swap intent expired after its current 24-hour deposit window, or swap.wait() observed a cancelled intent | Create a new intent if needed |
TimeoutError | A single SDK request timed out, or swap.wait() reached its local polling deadline | The swap may still be settling — resume with client.swaps.getStatus(intentId), or increase timeout |
NetworkError | The request failed before an HTTP response was received | Retry after checking connectivity |
ServerError | Our problem | Retry after a moment |