Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.deframe.io/llms.txt

Use this file to discover all available pages before exploring further.

All Deframe API errors use one JSON envelope. The HTTP status line is the source of truth for the status code; the body is always:
{
  "error": {
    "code": "QUOTE_NOT_FOUND",
    "message": "Quote not found or expired"
  }
}
The details field is only present when there is extra structured context. For Zod validation failures (422), issues are in details.errors (path + message per field). Domain-specific data (for example needsSignUp) also lives under details.

Quote Errors

CodeHTTP StatusDescriptionResolution
QUOTE_NOT_FOUND404Quote not found or expiredRequest a new quote — quotes are valid for 5 minutes
QUOTE_EXPIRED400Quote has expiredRequest a new quote using the same parameters
QUOTE_GENERATION_FAILED400Could not generate a quote for the specified parametersVerify token addresses, chain names, and amount format
QUOTE_VALIDATION_ERROR400Quote validation failedCheck that quoteId and rawQuote match the original quote response

Swap Errors

CodeHTTP StatusDescriptionResolution
NO_ROUTE_FOUND400No swap route available between the specified chains or tokensTry a different token pair or check supported networks
PROVIDER_NOT_FOUND404Swap provider not found for the requested routeUse a supported chain and token combination
BYTECODE_GENERATION_FAILED500Failed to generate transaction bytecodeRetry the request — if the issue persists, contact support
SWAP_EXECUTION_FAILED500Failed to execute the swap transactionVerify wallet balance, allowance, and gas fees

Validation Errors

CodeHTTP StatusDescriptionResolution
INVALID_AMOUNT_PARAMS400Cannot specify both amountIn and amountOut simultaneouslyUse only one of amountIn or amountOut per request
MISSING_AMOUNT_PARAMS400Either amountIn or amountOut is requiredInclude at least one amount parameter in the request
AMOUNT_IN_TOO_LOW400amountIn is below the minimum threshold (1 USDC)Increase the input amount
AMOUNT_IN_TOO_HIGH400amountIn exceeds the maximum threshold (3,000 USDC)Reduce the input amount or contact support for higher limits

Bridge Errors

CodeHTTP StatusDescriptionResolution
TRANSFER_VALIDATION_FAILED400Token transfer validation failedVerify the token address, chain, and transfer amount
INSUFFICIENT_AMOUNT_FOR_REFUND400Transferred amount is insufficient to cover the refund feeIncrease the transfer amount to cover bridge fees
DEPOSIT_NOT_FOUND404Bitcoin deposit not foundWait for on-chain confirmation or check the deposit address

General Errors

CodeHTTP StatusDescriptionResolution
INTERNAL_SERVER_ERROR500An unexpected error occurredRetry the request — if the issue persists, contact support
SYMBIOSIS_API_ERROR502Error communicating with the Symbiosis bridge APIRetry after a short delay — this is usually transient

Authentication Errors

CodeHTTP StatusDescriptionResolution
401No API key providedInclude x-api-key header in your request
401Invalid API keyVerify your API key at deframe.io
429Rate limit exceededWait for the retry window — see retryAfter in the response body

Rate Limit Response

When you hit a rate limit, the body matches the same envelope, for example:
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Too many requests"
  }
}
Some endpoints also send a Retry-After response header (seconds). Prefer that header when present. See Authentication for rate limit details.