openapi: 3.1.1 info: title: Delora API description: Delora API version: 1.0.0 servers: - url: https://api.delora.build paths: /v1/quotes: get: operationId: getQuote parameters: - name: x-api-key in: header description: Optional API key for higher rate limits and fee rules. required: false schema: type: string - name: senderAddress required: true in: query description: Sender wallet address on the origin chain. schema: example: '0x1111111111111111111111111111111111111111' type: string - name: receiverAddress required: false in: query description: Receiver wallet address. Required when EVM and Solana are crossed. schema: example: '0x2222222222222222222222222222222222222222' type: string - name: originChainId required: true in: query description: Origin chain ID. schema: example: 8453 type: number - name: destinationChainId required: true in: query description: Destination chain ID. schema: example: 8453 type: number - name: amount required: true in: query description: Input amount in token base units as a positive integer string. schema: example: '1000000' type: string - name: originCurrency required: true in: query description: Origin token address, or native asset marker supported by the backend. schema: example: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' type: string - name: destinationCurrency required: true in: query description: Destination token address, or native asset marker supported by the backend. schema: example: '0x4200000000000000000000000000000000000006' type: string - name: integrator required: false in: query description: Integrator identifier. Required when `fee` is provided. schema: example: partner-app type: string - name: fee required: false in: query description: Optional integrator fee fraction. `0.01` means 1%. schema: minimum: 0 maximum: 0.1 example: 0.01 type: number - name: slippage required: false in: query description: Optional slippage fraction. `0.005` means 0.5%. schema: minimum: 0 maximum: 1 example: 0.005 type: number - name: includeBridges required: false in: query description: Comma-separated bridge adapter names to include, for example `RELAY,ACROSS`. When set, only bridge-capable adapters in this list are queried for cross-chain routes. schema: example: RELAY,ACROSS type: string - name: includeExchanges required: false in: query description: Comma-separated exchange adapter names to include, for example `OPENOCEAN,OKX`. When set, only exchange-capable adapters in this list are queried for same-chain routes. schema: example: OPENOCEAN,OKX type: string - name: excludeBridges required: false in: query description: Comma-separated bridge adapter names to exclude, for example `RELAY,ACROSS`. schema: example: RELAY,ACROSS type: string - name: excludeExchanges required: false in: query description: Comma-separated exchange adapter names to exclude, for example `OPENOCEAN,OKX`. schema: example: OPENOCEAN,OKX type: string responses: '200': description: Best executable quote response. content: application/json: schema: $ref: '#/components/schemas/QuoteResponseDto' examples: success: summary: Executable quote response value: inputAmount: '1000000' outputAmount: '997321' minOutputAmount: '992334' adapter: OPENOCEAN calldata: to: '0x1111111111111111111111111111111111111111' value: '0x0' data: '0xabcdef' fees: total: amount: '2679' currencySymbol: USDC currencyAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' chainId: 8453 decimals: 6 breakdown: - type: gas amount: '2679' currencySymbol: USDC currencyAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' chainId: 8453 decimals: 6 amountUsd: '0.01' totalUsd: '0.01' gas: gasPrice: '0x3b9aca00' maxFeePerGas: '0x59682f00' maxPriorityFeePerGas: '0x3b9aca00' warnings: - code: SOLANA_INSUFFICIENT_BALANCE message: Solana simulation reported insufficient balance. '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' examples: validationErrors: summary: Validation errors value: statusCode: 400 code: VALIDATION_ERROR message: Invalid request parameters details: message: - senderAddress should not be empty - senderAddress must be a string timestamp: '2026-05-15T16:58:45.603Z' path: /v1/quotes '429': description: Rate limit exceeded. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' examples: rateLimitExceeded: summary: Rate limit exceeded value: statusCode: 429 code: RATE_LIMIT message: Rate limit exceeded. Please try again later. details: message: Rate limit exceeded. Please try again later. timestamp: '2026-05-15T16:58:45.603Z' path: /v1/quotes summary: Get the best executable quote tags: - V1 description: Returns the best available route for an exact-input transfer or swap, including estimated output, executable calldata, fee breakdown, optional gas data, and non-blocking warnings. /v1/advanced/routes: post: operationId: getAdvancedRoutes parameters: - name: x-api-key in: header description: Optional API key for higher rate limits and fee rules. required: false schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AdvancedRoutesRequestDto' examples: routeDiscovery: summary: Discover advanced routes value: senderAddress: '0x1111111111111111111111111111111111111111' receiverAddress: '0x2222222222222222222222222222222222222222' originChainId: 8453 destinationChainId: 42161 amount: '1000000' originCurrency: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' destinationCurrency: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831' includeBridges: RELAY maxRoutes: 2 responses: '200': description: Ranked advanced route plans. content: application/json: schema: $ref: '#/components/schemas/AdvancedRoutesResponseDto' '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' '422': description: No advanced route could be built for the requested transfer. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' summary: Discover advanced route plans tags: - Advanced description: Returns ranked route plans with explicit steps. These routes are estimates; call `/v1/advanced/stepTransaction` for each selected step to get live executable transaction data. /v1/advanced/stepTransaction: post: operationId: getAdvancedStepTransaction parameters: - name: x-api-key in: header description: Optional API key for higher rate limits and fee rules. required: false schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AdvancedStepTransactionRequestDto' examples: firstStep: summary: Populate a selected route step value: step: id: advanced-route:0 routeId: advanced-route type: bridge tool: RELAY action: fromChainId: 8453 toChainId: 42161 fromToken: address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' symbol: USDC decimals: 6 chainId: 8453 toToken: address: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831' symbol: USDC decimals: 6 chainId: 42161 fromAmount: '1000000' estimate: fromAmount: '1000000' toAmount: '997321' toAmountMin: '992334' fees: total: amount: '0' currencySymbol: USDC currencyAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' chainId: 8453 breakdown: [] execution: applyFee: true context: senderAddress: '0x1111111111111111111111111111111111111111' receiverAddress: '0x2222222222222222222222222222222222222222' responses: '200': description: Populated advanced step with executable transaction data. content: application/json: schema: $ref: '#/components/schemas/PopulatedAdvancedStepDto' '400': description: Invalid step payload or no quote for the selected step. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' summary: Populate an advanced route step transaction tags: - Advanced description: Re-quotes the selected step and returns executable transaction data. For later steps, pass the actual previous step output as `context.previousStepReceivedAmount`. /v1/chains: get: operationId: getChains parameters: - name: x-api-key in: header description: Optional API key for higher rate limits and fee rules. required: false schema: type: string - name: chainTypes required: false in: query description: 'Comma-separated chain types to include. Supported values: EVM, SVM.' schema: example: EVM,SVM type: string responses: '200': description: Supported chains response. content: application/json: schema: $ref: '#/components/schemas/ChainsResponseDto' examples: success: summary: Supported chains response value: chains: - key: base name: Base chainType: EVM id: 8453 idHex: '0x2105' mainnet: true logoURI: https://example.com/base.png tokenlistUrl: https://tokens.example.com/base.json multicallAddress: '0xcA11bde05977b3631167028862bE2a173976CA11' rpcUrls: - https://mainnet.base.org blockExplorerUrls: https://basescan.org nativeToken: address: '0x0000000000000000000000000000000000000000' decimals: 18 symbol: ETH chainId: 8453 coinKey: ETH name: Ether logoURI: https://example.com/eth.png DeloraDiamond: '0x1111111111111111111111111111111111111111' '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' examples: validationErrors: summary: Validation errors value: statusCode: 400 code: VALIDATION_ERROR message: Invalid request parameters details: message: - senderAddress should not be empty - senderAddress must be a string timestamp: '2026-05-15T16:58:45.603Z' path: /v1/quotes invalidChainTypes: summary: Invalid chainTypes filter value: statusCode: 400 code: VALIDATION_ERROR message: 'Invalid "chainTypes" query parameter. Allowed values: EVM, SVM.' details: message: 'Invalid "chainTypes" query parameter. Allowed values: EVM, SVM.' timestamp: '2026-05-15T16:58:45.603Z' path: /v1/tokens?chainTypes=aaa '429': description: Rate limit exceeded. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' examples: rateLimitExceeded: summary: Rate limit exceeded value: statusCode: 429 code: RATE_LIMIT message: Rate limit exceeded. Please try again later. details: message: Rate limit exceeded. Please try again later. timestamp: '2026-05-15T16:58:45.603Z' path: /v1/quotes summary: List supported chains tags: - V1 description: Returns the chains supported by Delora. Use the optional chainTypes query parameter to filter by EVM or SVM networks. /v1/tools: get: operationId: getTools parameters: - name: x-api-key in: header description: Optional API key for higher rate limits and fee rules. required: false schema: type: string - name: chains required: false in: query description: Comma-separated chain IDs used to filter supported tools. schema: example: 1,8453 responses: '200': description: Supported tools response. content: application/json: schema: $ref: '#/components/schemas/ToolsResponseDto' examples: success: summary: Supported tools response value: exchanges: - key: OPENOCEAN name: OpenOcean logoURI: https://example.com/openocean.png supportedChains: - '1' - '8453' bridges: - key: RELAY name: Relay logoURI: https://example.com/relay.png supportedChains: - '1' - '8453' '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' examples: validationErrors: summary: Validation errors value: statusCode: 400 code: VALIDATION_ERROR message: Invalid request parameters details: message: - senderAddress should not be empty - senderAddress must be a string timestamp: '2026-05-15T16:58:45.603Z' path: /v1/quotes '429': description: Rate limit exceeded. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' examples: rateLimitExceeded: summary: Rate limit exceeded value: statusCode: 429 code: RATE_LIMIT message: Rate limit exceeded. Please try again later. details: message: Rate limit exceeded. Please try again later. timestamp: '2026-05-15T16:58:45.603Z' path: /v1/quotes summary: List supported bridge and exchange tools tags: - V1 description: Returns supported bridge and exchange adapters, grouped by type. Use the optional chains query parameter to filter tools by supported chain IDs. /v1/tokens: get: operationId: getTokens parameters: - name: x-api-key in: header description: Optional API key for higher rate limits and fee rules. required: false schema: type: string - name: chains required: false in: query description: Comma-separated chain IDs used to filter tokens. schema: example: 8453,1 type: string - name: chainTypes required: false in: query description: 'Comma-separated chain types to include. Supported values: EVM, SVM.' schema: example: EVM,SVM type: string responses: '200': description: Tokens grouped by chain ID. content: application/json: schema: type: object additionalProperties: type: array items: $ref: '#/components/schemas/TokenDto' example: '8453': - address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' symbol: USDC decimals: 6 chainId: 8453 name: USD Coin coinKey: USDC examples: success: summary: Tokens grouped by chain ID value: '8453': - address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' symbol: USDC decimals: 6 chainId: 8453 name: USD Coin coinKey: USDC priceUSD: '1.00' priceUpdatedAt: '2026-06-22T12:00:00.000Z' priceSource: dexscreener priceStale: false priceTier: cold logoURI: https://example.com/usdc.png '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' examples: validationErrors: summary: Validation errors value: statusCode: 400 code: VALIDATION_ERROR message: Invalid request parameters details: message: - senderAddress should not be empty - senderAddress must be a string timestamp: '2026-05-15T16:58:45.603Z' path: /v1/quotes invalidChainTypes: summary: Invalid chainTypes filter value: statusCode: 400 code: VALIDATION_ERROR message: 'Invalid "chainTypes" query parameter. Allowed values: EVM, SVM.' details: message: 'Invalid "chainTypes" query parameter. Allowed values: EVM, SVM.' timestamp: '2026-05-15T16:58:45.603Z' path: /v1/tokens?chainTypes=aaa '429': description: Rate limit exceeded. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' examples: rateLimitExceeded: summary: Rate limit exceeded value: statusCode: 429 code: RATE_LIMIT message: Rate limit exceeded. Please try again later. details: message: Rate limit exceeded. Please try again later. timestamp: '2026-05-15T16:58:45.603Z' path: /v1/quotes summary: List supported tokens grouped by chain ID tags: - V1 description: Returns supported tokens grouped by chain ID. Use chains to limit the response to specific chain IDs and chainTypes to filter by EVM or SVM networks. /v1/prices: get: operationId: getPrices parameters: - name: x-api-key in: header description: Optional API key for higher rate limits and fee rules. required: false schema: type: string - name: chainId required: false in: query description: Chain ID for a single token price lookup. Required with `token` when `tokens` is not provided. schema: example: '8453' type: string - name: token required: false in: query description: Token address or symbol for a single token price lookup. Required with `chainId` when `tokens` is not provided. schema: example: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' type: string - name: tokens required: false in: query description: Comma-separated batch of `chainId:token` entries. Maximum 50 requested entries. schema: example: '8453:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913,1:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' type: string responses: '200': description: Token price snapshot response. content: application/json: schema: $ref: '#/components/schemas/TokenPricesResponseDto' examples: success: summary: Token price snapshots value: prices: - chainId: 8453 token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' priceUSD: '1.00' source: dexscreener updatedAt: '2026-06-22T12:00:00.000Z' stale: false tier: hot refreshing: false '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' examples: missingTokenRequest: summary: Missing token request value: statusCode: 400 code: VALIDATION_ERROR message: Either tokens=chainId:token,... or both chainId and token are required. details: message: Either tokens=chainId:token,... or both chainId and token are required. timestamp: '2026-06-22T12:00:00.000Z' path: /v1/prices tooManyTokens: summary: Too many token price requests value: statusCode: 400 code: VALIDATION_ERROR message: Too many token price requests. Max is 50. details: message: Too many token price requests. Max is 50. timestamp: '2026-06-22T12:00:00.000Z' path: /v1/prices '429': description: Rate limit exceeded. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' examples: rateLimitExceeded: summary: Rate limit exceeded value: statusCode: 429 code: RATE_LIMIT message: Rate limit exceeded. Please try again later. details: message: Rate limit exceeded. Please try again later. timestamp: '2026-05-15T16:58:45.603Z' path: /v1/prices summary: Get token price snapshots tags: - V1 description: Returns cached token price snapshots for one token or up to 50 requested token entries. Stale prices are returned immediately and marked with `stale` and `refreshing` metadata when a background refresh is scheduled. /v1/token: get: operationId: getToken parameters: - name: x-api-key in: header description: Optional API key for higher rate limits and fee rules. required: false schema: type: string - name: chain required: true in: query description: Chain ID or chain key, for example `8453` or `sol`. schema: example: '8453' type: string - name: token required: true in: query description: Token address or symbol. schema: example: USDC type: string responses: '200': description: Token metadata response. content: application/json: schema: $ref: '#/components/schemas/TokenDto' examples: success: summary: Token metadata response value: address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' symbol: USDC decimals: 6 chainId: 8453 name: USD Coin coinKey: USDC priceUSD: '1.00' priceUpdatedAt: '2026-06-22T12:00:00.000Z' priceSource: dexscreener priceStale: false priceTier: cold logoURI: https://example.com/usdc.png '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' examples: validationErrors: summary: Validation errors value: statusCode: 400 code: VALIDATION_ERROR message: Invalid request parameters details: message: - senderAddress should not be empty - senderAddress must be a string timestamp: '2026-05-15T16:58:45.603Z' path: /v1/quotes '404': description: Token was not found. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' examples: tokenNotFound: summary: Token not found value: statusCode: 404 code: NOT_FOUND message: Requested resource was not found details: message: Requested resource was not found timestamp: '2026-05-15T16:58:45.603Z' path: /v1/token?chain=8453&token=UNKNOWN '429': description: Rate limit exceeded. content: application/json: schema: $ref: '#/components/schemas/StandardErrorResponseDto' examples: rateLimitExceeded: summary: Rate limit exceeded value: statusCode: 429 code: RATE_LIMIT message: Rate limit exceeded. Please try again later. details: message: Rate limit exceeded. Please try again later. timestamp: '2026-05-15T16:58:45.603Z' path: /v1/quotes summary: Find one token by chain and address or symbol tags: - V1 description: Returns metadata for a single token on a specific chain. The token query parameter can be a token address or symbol. /health: get: operationId: health parameters: [] responses: '200': description: Service is healthy. content: application/json: schema: $ref: '#/components/schemas/HealthResponseDto' examples: ok: summary: Healthy service value: status: ok summary: Health check tags: - Health description: Returns the current service health status. tags: - name: Health description: '' - name: V1 description: '' components: securitySchemes: api-key: type: apiKey in: header name: x-api-key description: Optional public API key for higher rate limits and fee rules. schemas: TokenDto: type: object properties: address: type: string example: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' symbol: type: string example: USDC decimals: type: number example: 6 chainId: type: number example: 8453 name: type: string example: USD Coin coinKey: type: string example: USDC priceUSD: type: string example: '1.00' priceUpdatedAt: type: string example: '2026-06-22T12:00:00.000Z' priceSource: type: string example: dexscreener priceStale: type: boolean example: false priceTier: type: string enum: - hot - cold example: cold logoURI: type: string example: https://example.com/usdc.png required: - address - symbol - decimals - chainId - name - coinKey QuoteCalldataDto: type: object properties: to: type: string example: '0x1111111111111111111111111111111111111111' value: type: string example: '0x0' data: type: string example: '0xabcdef' required: - to - value - data ParsedFeesTotalCurrencyDto: type: object properties: amount: type: string example: '2679' currencySymbol: type: string example: USDC currencyAddress: type: string example: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' chainId: type: number example: 8453 decimals: type: number example: 6 required: - amount - currencySymbol - currencyAddress - chainId ParsedFeesBreakdownItemDto: type: object properties: amount: type: string example: '2679' currencySymbol: type: string example: USDC currencyAddress: type: string example: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' chainId: type: number example: 8453 decimals: type: number example: 6 type: type: string enum: - gas - relayer - relayerGas - relayerService - capital - lp - app - total example: gas amountUsd: type: string example: '0.01' required: - amount - currencySymbol - currencyAddress - chainId - type ParsedFeesDto: type: object properties: total: $ref: '#/components/schemas/ParsedFeesTotalCurrencyDto' breakdown: type: array items: $ref: '#/components/schemas/ParsedFeesBreakdownItemDto' totalUsd: type: string example: '0.01' required: - total - breakdown GasEstimationDto: type: object properties: gasPrice: type: string example: '0x3b9aca00' maxFeePerGas: type: string example: '0x59682f00' maxPriorityFeePerGas: type: string example: '0x3b9aca00' QuoteWarningDto: type: object properties: code: type: string enum: - INTEGRATOR_SOLANA_WALLET_NOT_ACTIVATED_FEE_SKIPPED - INTEGRATOR_WALLET_NOT_CONFIGURED_FEE_SKIPPED - SOLANA_SYSTEM_ACCOUNT_SKIPPED - SOLANA_INSUFFICIENT_BALANCE - SOLANA_SIMULATION_FAILED example: SOLANA_INSUFFICIENT_BALANCE message: type: string example: Solana simulation reported insufficient balance. required: - code - message TokenPriceResultDto: type: object properties: chainId: type: number example: 8453 token: type: string example: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' priceUSD: type: string example: '1.00' source: type: string example: dexscreener updatedAt: type: string example: '2026-06-22T12:00:00.000Z' stale: type: boolean example: false tier: type: string enum: - hot - cold example: hot refreshing: type: boolean example: false required: - chainId - token - stale - tier - refreshing TokenPricesResponseDto: type: object properties: prices: type: array items: $ref: '#/components/schemas/TokenPriceResultDto' required: - prices QuoteUsdPricesDto: type: object properties: originCurrency: $ref: '#/components/schemas/TokenPriceResultDto' destinationCurrency: $ref: '#/components/schemas/TokenPriceResultDto' required: - originCurrency - destinationCurrency SimulationDeviationDto: type: object properties: absolute: type: string example: '-1200' description: Simulated output minus advertised output in raw units. bps: type: number example: -12 description: Signed basis points. Negative means the adapter overstated output. percent: type: string example: '-0.12%' required: - absolute - bps - percent SimulationProviderResultDto: type: object properties: source: type: string enum: - TENDERLY - RPC - SOLANA_RUNTIME - NONE example: TENDERLY executionStatus: type: string enum: - SUCCESS - REVERTED - TIMEOUT - SKIPPED - UNSUPPORTED - ERROR example: SUCCESS outputValidation: type: string enum: - VERIFIED - UNVERIFIABLE - NOT_SIMULATED example: VERIFIED simulatedOutputAmount: type: string example: '996100' deviation: $ref: '#/components/schemas/SimulationDeviationDto' gasUsed: type: string example: '142331' reason: type: string example: Exceeded 700ms latencyMs: type: number example: 312 required: - source - executionStatus - outputValidation - latencyMs SimulationDto: type: object properties: source: type: string enum: - TENDERLY - RPC - SOLANA_RUNTIME - NONE example: TENDERLY executionStatus: type: string enum: - SUCCESS - REVERTED - TIMEOUT - SKIPPED - UNSUPPORTED - ERROR example: SUCCESS outputValidation: type: string enum: - VERIFIED - UNVERIFIABLE - NOT_SIMULATED example: VERIFIED simulatedOutputAmount: type: string example: '996100' advertisedOutputAmount: type: string example: '997321' deviation: $ref: '#/components/schemas/SimulationDeviationDto' gasUsed: type: string example: '142331' reason: type: string example: Simulation exceeded budget latencyMs: type: number example: 712 providerResults: type: array items: $ref: '#/components/schemas/SimulationProviderResultDto' required: - source - executionStatus - outputValidation - advertisedOutputAmount - latencyMs - providerResults QuoteResponseDto: type: object properties: inputAmount: type: string example: '1000000' outputAmount: type: string example: '997321' minOutputAmount: type: string example: '992334' estimatedTimeSec: type: number example: 120 description: Estimated bridge completion time in seconds. Returned only for bridge routes. adapter: enum: - ACROSS - RELAY - GASZIP - OPENOCEAN - JUPITER - SYMBIOSIS - MAYAN - MAYAN_WORMHOLE - MAYAN_SWIFT - MAYAN_MCTP - MAYAN_FAST_MCTP - OKX - RISE - NORDSTERN - KYBERSWAP - DFLOW - NEAR_INTENTS type: string example: OPENOCEAN calldata: $ref: '#/components/schemas/QuoteCalldataDto' fees: $ref: '#/components/schemas/ParsedFeesDto' gas: $ref: '#/components/schemas/GasEstimationDto' warnings: type: array items: $ref: '#/components/schemas/QuoteWarningDto' approvalAddress: type: string example: '0x1111111111111111111111111111111111111111' description: Approval spender address for EVM-origin routes. transactionSize: type: object properties: raw: type: number example: 812 encoded: type: number example: 1084 description: Serialized Solana transaction size when available. bridgeScan: $ref: '#/components/schemas/BridgeScanMetadataDto' simulation: $ref: '#/components/schemas/SimulationDto' usd: $ref: '#/components/schemas/QuoteUsdPricesDto' required: - inputAmount - outputAmount - adapter - calldata - fees AdvancedRoutesRequestDto: type: object properties: senderAddress: type: string example: '0x1111111111111111111111111111111111111111' receiverAddress: type: string example: '0x2222222222222222222222222222222222222222' originChainId: type: number example: 8453 destinationChainId: type: number example: 42161 amount: type: string example: '1000000' originCurrency: type: string example: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' destinationCurrency: type: string example: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831' integrator: type: string example: partner-app fee: type: number minimum: 0 maximum: 0.1 example: 0.01 slippage: type: number minimum: 0 maximum: 1 example: 0.005 includeBridges: type: string description: Comma-separated bridge adapter names to include. example: RELAY,ACROSS includeExchanges: type: string description: Comma-separated exchange adapter names to include. example: OPENOCEAN,OKX excludeBridges: type: string description: Comma-separated bridge adapter names to exclude. example: MAYAN_FAST_MCTP excludeExchanges: type: string description: Comma-separated exchange adapter names to exclude. example: OKX maxRoutes: type: number minimum: 1 example: 2 required: - senderAddress - originChainId - destinationChainId - amount - originCurrency - destinationCurrency AdvancedTokenRefDto: type: object properties: address: type: string symbol: type: string decimals: type: number chainId: type: number required: - address - symbol - decimals - chainId AdvancedStepActionDto: type: object properties: fromChainId: type: number toChainId: type: number fromToken: $ref: '#/components/schemas/AdvancedTokenRefDto' toToken: $ref: '#/components/schemas/AdvancedTokenRefDto' fromAmount: type: string slippage: type: number fromAddress: type: string toAddress: type: string required: - fromChainId - toChainId - fromToken - toToken - fromAmount AdvancedStepEstimateDto: type: object properties: fromAmount: type: string quoteFromAmount: type: string toAmount: type: string toAmountMin: type: string estimatedTimeSec: type: number fees: $ref: '#/components/schemas/ParsedFeesDto' approvalAddress: type: string simulatedToAmount: type: string simulation: $ref: '#/components/schemas/SimulationDto' required: - fromAmount - toAmount - toAmountMin - fees AdvancedStepExecutionOptionsDto: type: object properties: applyFee: type: boolean requiresPreviousStepAmount: type: boolean quoteRequest: type: object additionalProperties: true routeRequest: type: object additionalProperties: true required: - applyFee BridgeScanMetadataDto: type: object additionalProperties: true AdvancedTransactionRequestDto: type: object properties: to: type: string data: type: string value: type: string gas: $ref: '#/components/schemas/GasEstimationDto' transactionSize: type: object properties: raw: type: number encoded: type: number required: - to - value AdvancedRouteStepDto: type: object properties: id: type: string routeId: type: string type: type: string enum: - swap - bridge tool: type: string example: RELAY action: $ref: '#/components/schemas/AdvancedStepActionDto' estimate: $ref: '#/components/schemas/AdvancedStepEstimateDto' integrator: type: string fee: type: number execution: $ref: '#/components/schemas/AdvancedStepExecutionOptionsDto' warnings: type: array items: $ref: '#/components/schemas/QuoteWarningDto' bridgeScan: $ref: '#/components/schemas/BridgeScanMetadataDto' transactionRequest: $ref: '#/components/schemas/AdvancedTransactionRequestDto' required: - id - routeId - type - tool - action - estimate - execution AdvancedRouteDto: type: object properties: id: type: string routeKind: type: string enum: - single-step - multistep inputAmount: type: string outputAmount: type: string minOutputAmount: type: string estimatedTimeSec: type: number fees: $ref: '#/components/schemas/ParsedFeesDto' warnings: type: array items: $ref: '#/components/schemas/QuoteWarningDto' adapter: type: string example: RELAY isMultistep: type: boolean steps: type: array items: $ref: '#/components/schemas/AdvancedRouteStepDto' simulation: $ref: '#/components/schemas/SimulationDto' required: - id - routeKind - inputAmount - outputAmount - minOutputAmount - fees - adapter - isMultistep - steps AdvancedRoutesResponseDto: type: object properties: routes: type: array items: $ref: '#/components/schemas/AdvancedRouteDto' required: - routes AdvancedExecutionContextDto: type: object properties: senderAddress: type: string receiverAddress: type: string amountOverride: type: string previousStepReceivedAmount: type: string slippage: type: number minimum: 0 maximum: 1 required: - senderAddress - receiverAddress AdvancedStepTransactionRequestDto: type: object properties: step: $ref: '#/components/schemas/AdvancedRouteStepDto' context: $ref: '#/components/schemas/AdvancedExecutionContextDto' required: - step - context PopulatedAdvancedStepDto: allOf: - $ref: '#/components/schemas/AdvancedRouteStepDto' - type: object properties: transactionRequest: $ref: '#/components/schemas/AdvancedTransactionRequestDto' required: - transactionRequest StandardErrorResponseDto: type: object properties: statusCode: type: number example: 400 code: enum: - NO_AVAILABLE_QUOTES - WRONG_ADDRESS - RATE_LIMIT - ADAPTER_BAD_REQUEST - ADAPTER_UNAUTHORIZED - ADAPTER_INTERNAL - VALIDATION_ERROR - NOT_FOUND - UNKNOWN type: string description: |- Machine-readable Delora error code. - NO_AVAILABLE_QUOTES: No bridge or exchange adapter returned an executable quote for the requested transfer. - WRONG_ADDRESS: A wallet address is missing, malformed, or incompatible with the requested chain type. - RATE_LIMIT: The request exceeded the configured rate limit for the IP address or API key. - ADAPTER_BAD_REQUEST: An upstream bridge or exchange adapter rejected the request as invalid. - ADAPTER_UNAUTHORIZED: An upstream bridge or exchange adapter rejected the request because credentials are missing or invalid. - ADAPTER_INTERNAL: An upstream bridge or exchange adapter failed with an internal error. - VALIDATION_ERROR: The request failed Delora API validation, including invalid query parameters, body fields, or address formats. - NOT_FOUND: The requested chain, token, or resource was not found. - UNKNOWN: The request failed with an unexpected error that does not map to a more specific code. x-enumDescriptions: - No bridge or exchange adapter returned an executable quote for the requested transfer. - A wallet address is missing, malformed, or incompatible with the requested chain type. - The request exceeded the configured rate limit for the IP address or API key. - An upstream bridge or exchange adapter rejected the request as invalid. - An upstream bridge or exchange adapter rejected the request because credentials are missing or invalid. - An upstream bridge or exchange adapter failed with an internal error. - The request failed Delora API validation, including invalid query parameters, body fields, or address formats. - The requested chain, token, or resource was not found. - The request failed with an unexpected error that does not map to a more specific code. example: VALIDATION_ERROR message: type: string example: Invalid request parameters details: description: Optional error details. When details is an object, `message` can be either a string or an array of strings. oneOf: - type: object additionalProperties: true properties: message: oneOf: - type: string - type: array items: type: string description: Human-readable details. Validation errors may return multiple messages. errorCode: type: string code: oneOf: - type: string - type: number status: oneOf: - type: string - type: number - type: string - type: array items: type: string example: message: - One or more request parameters are invalid. timestamp: type: string example: '2026-05-13T18:00:00.000Z' path: type: string example: /v1/... required: - statusCode - code - message - timestamp NativeTokenDto: type: object properties: address: type: string example: '0x0000000000000000000000000000000000000000' decimals: type: number example: 18 symbol: type: string example: ETH chainId: type: number example: 8453 coinKey: type: string example: ETH name: type: string example: Ether logoURI: type: string example: https://example.com/eth.png required: - address - decimals - symbol - chainId - coinKey - name - logoURI ChainInfoDto: type: object properties: key: type: string example: base name: type: string example: Base chainType: type: string enum: - EVM - SVM example: EVM id: type: number example: 8453 idHex: type: string example: '0x2105' mainnet: type: boolean example: true logoURI: type: string example: https://example.com/base.png tokenlistUrl: type: string example: https://tokens.example.com/base.json multicallAddress: type: string example: '0xcA11bde05977b3631167028862bE2a173976CA11' rpcUrls: example: - https://mainnet.base.org type: array items: type: string blockExplorerUrls: type: string example: https://basescan.org nativeToken: $ref: '#/components/schemas/NativeTokenDto' DeloraDiamond: type: string example: '0x1111111111111111111111111111111111111111' required: - key - name - chainType - id - idHex - mainnet - logoURI - rpcUrls - blockExplorerUrls - nativeToken ChainsResponseDto: type: object properties: chains: type: array items: $ref: '#/components/schemas/ChainInfoDto' required: - chains ToolInfoDto: type: object properties: key: enum: - ACROSS - RELAY - GASZIP - OPENOCEAN - JUPITER - SYMBIOSIS - MAYAN - MAYAN_WORMHOLE - MAYAN_SWIFT - MAYAN_MCTP - MAYAN_FAST_MCTP - OKX - RISE - NORDSTERN - KYBERSWAP - DFLOW - NEAR_INTENTS type: string example: RELAY name: type: string example: Relay logoURI: type: string example: https://example.com/relay.png supportedChains: example: - '1' - '8453' type: array items: type: string required: - key - name - logoURI - supportedChains ToolsResponseDto: type: object properties: exchanges: type: array items: $ref: '#/components/schemas/ToolInfoDto' bridges: type: array items: $ref: '#/components/schemas/ToolInfoDto' required: - exchanges - bridges HealthResponseDto: type: object properties: status: type: string example: ok required: - status