All pages
Powered by GitBook
1 of 20

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Velora Delta API

Here, you'll find everything you need to understand how the Delta API works and how to implement it. Start with our brief overview for a quick introduction to Delta's smart contract, then explore how to use its functions effectively.

Velora API

Velora's API provides the most straightforward and efficient access to the Velora Protocol. It connects your application to a vast network of liquidity sources guaranteeing optimal token swap rates across multiple blockchain networks.

Velora currently has two versions of its API available:

Overview
Contracts
Retrieve delta Price with fallback to market
Build a Delta Order to Sign
Submit a Delta Order
Track a Delta Order auction status
Example: Quote With Fallback

Velora Delta API

Access an intent-based protocol that enables gas-less swaps where multiple agents compete to execute the trade at the best price possible. By using Velora Delta, users don’t need to make a transaction themselves but only to sign a Delta Order.

Velora Market API

Access a decentralized exchange aggregator that allows developers to access hundreds of DEXs and tens of thousands of liquidity pools in real-time.

Example: Fetch Price & Build Transaction

Here’s an example of an implementation for Velora's Market API. It utilizes Velora's endpoints to fetch pricing information and build transactions for token swaps.

Overview

Velora Market API is the most straightforward and efficient way to access to the Velora Protocol. It connects your application to a vast network of liquidity sources guaranteeing optimal token swap rates across multiple blockchain networks.

To get started, we recommend familiarizing yourself with the available API versions to understand their unique features and differences. From there, dive into the various endpoints tailored for specific tasks, whether you need to fetch a price quote, construct a transaction, or streamline both processes using the all-in-one Swap endpoint.

You’ll also find a practical example to guide you through the implementation process, making it easier to integrate Velora into your application.

If you'd like to find the latest integrations, feel free to use DexLib, our open-source library that contains all live and pending DEX integrations.

API v5

Introduction to Velora API version 5

Please note that as of the launch of v6.2, Velora no longer maintains v5. We recommend all v5 integrations to upgrade to v6.2.

Velora's goal is to deliver the best market prices by aggregating over multiple decentralized exchanges, market makers, and lending protocols.

Velora API allows users to fetch optimal prices to swap from one token to another and then build transaction data that can be used to execute transactions on-chain. Currently, Velora only supports EVM-based networks (Ethereum, BSC, Polygon, etc) and tokens following ERC20 standard.

Before you get deeper into the docs, here is a quick overview of the general flow you will use to interact with the Velora API. Let's take the example of you wanting to swap 10 ETH to DAI.

  • First, you should call /prices endpoint (detailed documentation ) using an HTTP query like GET https://api.paraswap.io/prices/?srcToken=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE&destToken=0x6b175474e89094c44da98b954eedeac495271d0f&amount=10000000000000000000&srcDecimals=18&destDecimals=18&side=SELL&network=1&version=5. This will return the optimal prices using ParaSwap's Hopper Algorithm

  • If you are satisfied with the price, you can call the /transactions endpoint (detailed documentation ). This will return a transaction object.

  • You should then give the appropriate allowance to the tokenTransferProxy for the source token. You can find the address of tokenTransferProxy in the payload returned in the price endpoint. You can skip this step if a high enough allowance was already given.

  • You can finally use this transaction data to execute the swaps on-chain by sending it to the provider.

Check out the following pages to understand the Velora v5 API. To try out all API endpoints, visit the of Velora v5.

Developers can also use our JS/TS SDK for web and Node.js integrations

If you want to do some swaps, you can directly use our UI.

Supported methods:

SELL:

  • simpleSwap

  • multiSwap

  • megaSwap

  • swapOnUniswapV2Fork

BUY:

  • simpleBuy

  • buy

  • buyOnUniswapV2Fork

  • directUniV3Buy

Velora Market API

In this guide, you'll explore the Velora Market API, its different versions, and the various actions it enables.

Start by reading the Overview section to better understand how the Market API aggregates liquidity across multiple DEXs and AMMs to provide optimal trade execution.

This guide will help you to:

  • Leverage the API effectively.

  • Retrieve a price and get the most optimal route for a trade.

  • Build parameters for a transaction with the response from the prices endpoint.

  • Find the optimal fee strategy for your integration.

Contracts

Portikus Adapter

Portikus Adapter is Velora's Delta contract

When working on the API implementation, you’ll use the following contract addresses at these stages:

  • Order creation

  • Signing order

  • Submitting Order to API

  • On-Chain Execution

Delta’s contract has been deployed on Ethereum and Base networks. It shares the same address across both chains.

Addresses of Delta contract

Network
Address

API Versions

In this section you can find all the information related to Velora API available versions

Velora currently has two versions of its API available. It is highly recommended to integrate or upgrade to v6.2, the latest version of the Market API, to take full advantage of its latest innovations.

v6.2 introduces key enhancements, including gas optimizations and greater flexibility for partners in managing their fees.

Please note that as of the launch of v6.2, Velora no longer maintains v5.

Cancel a Delta Order

To cancel orders, you can use the /cancel endpoint provided by the API, which would remove the orders from the order book. The signature is an EIP-712 signature, built with the following structure. Both LIMIT and MARKET orders can be canceled.

Overview

API versions

Retrieve a price

Build a transaction

Get Price & Calldata

Examples

API v6.2

API v5

POST
https://api.paraswap.io/delta/orders/cancel

Body

Name
Type
Description

orderIds

string[]

Order IDs to cancel

signature

string

EIP-712 signature with the structure described above

Response

{
  "success": true
}
{
  "errorType": "OrderCancellationError",
  "details": "Order not found"
}

Upon successful cancellation, the API will return a confirmation message indicating that the limit order has been successfully cancelled.

domain

{
  "name": "Portikus",
  "version": "2.0.0",
  "chainId": <chainId>,
  "verifyingContract": <deltaAddress>
}

type

{
  "OrderCancellations": [
    {
      "name": "orderIds",
      "type": "string[]",
    }
  ]
}

value

{
  "orderIds": [<id1>, <id2>]
}
directUniV3Swap
  • directCurveV1Swap

  • directCurveV2Swap

  • directBalancerV2GivenInSwap

  • directBalancerV2GivenOutSwap
    here
    here
    Open-API documentation
    https://github.com/paraswap/paraswap-sdk

    Ethereum

    0x0000000000bbf5c5fd284e657f01bd000933c96d

    Base

    0x0000000000bbf5c5fd284e657f01bd000933c96d

    Optimism

    0x0000000000bbf5c5fd284e657f01bd000933c96d

    Arbitrum

    0x0000000000bbf5c5fd284e657f01bd000933c96d

    Polygon

    0x0000000000bbf5c5fd284e657f01bd000933c96d

    BSC

    API v6.2

    Introduction to Velora API v6.2

    Velora v6.2 has been released! See what's new here: https://x.com/VeloraDEX/status/1803435422011498551

    To switch to v6.2, you only need to pass &version=6.2 to /prices & you're good to go!

    Velora V6.2's main goal is to provide the best possible gas-optimized protocol for order routing. It has significant improvements in terms of smart contract architecture that achieve both best-in-class gas efficiency and scalability through modularity.

    To use V6.2, you need to pass &version=6.2 query param when calling /prices. The process for swapping remains the same:

    • Call GET /prices to retrieve an optimal price for a given pair & amount.

    • Call POST /transactions for retrieving the that includes the call data

    • Alternatively, you can use GET /swap to retrieve both the price config & Transaction Object.

    You can also use the JavaScript/TypeScript SDK for easier integrations:

    Major changes in V6.2:

    • No longer need to approve a different smart contract for ERC20 tokens. Augustus V6.2 is the only contract you need to interact with. More details .

    • More control over : should you choose to take a surplus fee, you can cap it to 1% of the trade volume as protection for your users if it applies to your specific case. You can also send partner fees directly to the user. Take a look at the new params (isCapSurplus , isSurplusToUser , isDirectFeeTransfer) params in section.

    Supported methods:

    SELL:

    • swapExactAmountIn

    • swapExactAmountInOnUniswapV2

    • swapExactAmountInOnUniswapV3

    • swapExactAmountInOnBalancerV2

    BUY:

    • swapExactAmountOut

    • swapExactAmountOutOnUniswapV2

    • swapExactAmountOutOnUniswapV3

    • swapExactAmountOutOnBalancerV2

    Retrieve details for creating cross-chain order

    Get Bridge Info

    GET https://api.paraswap.io/delta/prices/bridge-info

    Returns info on supported source destination chains and destination tokens for cross-chain orders.

    The data structure is a nested dictionary where the primary keys are sourceChainId values, and the secondary keys are destinationChainId

    Example: Quote With Fallback

    This example shows an implementation for token swapping using the Velora API, particularly focusing on getting a quote for a token swap and handling both Delta pricing and a fallback to market pricing when Delta fails.

    We recommend using for better developer experience. You can find SDK example of the exact functionality of this code .

    Example:

    Overview

    Velora Delta is a new set of smart contracts developed by Velora. It's built on top of the Portikus Intents network and is currently available on the Ethereum and Base networks. This development unlocks several benefits for swapping tokens, including:

    • Gas-less trading: users can submit a trade without using a gas token, as Delta will execute the trades on their behalf.

    • MEV Protection: By submitting your trade through Velora Delta, you can protect your users’ swaps from events like sandwich attacks.

    • Price Competition:

    Submit a Delta Order

    Submit Delta Order for Auction

    POST https://api.paraswap.io/delta/orders

    The Submit Delta Order for Auction endpoint allows you to submit a Delta order to be auctioned on Velora Delta. This enables decentralized and efficient execution of large token swaps through the Delta smart contract.

    By sending a properly formatted request, you can specify order details such as the source and destination tokens, amounts, deadline, and additional parameters required for execution.

    Flat fees are capped at 2% as a security protection for users.
  • excludeDirectContractMethods is no longer supported in /prices. It has been replaced by excludeContractMethodsWithoutFeeModel, which ensures all swaps can be monetized.

  • swapExactAmountInOnCurveV1
  • swapExactAmountInOnCurveV2

  • swapOnAugustusRFQTryBatchFill

  • swapExactAmountInOutOnMakerPSM

  • swapOnAugustusRFQTryBatchFill
  • swapExactAmountInOutOnMakerPSM

  • Transaction Object
    Velora SDK
    here
    partner fees
    /transactions
    0x0000000000bbf5c5fd284e657f01bd000933c96d
    Velora Delta is increasingly competitive as different agents compete to deliver the best possible prices to users.

    The easiest way to make use of the Delta is to use the Velora SDK. Refer here SDK Delta documentation.

    Simple Delta flow using API with axios looks like this:

    1. Request prices for a token pair

    This function is used to fetch a price quote for swapping

    In this case, we’re swapping 100 DAI for PSP tokens on Ethereum (chainId: 1) using Velora's Delta API.

    2. Build a Delta order

    On this section, partners can pick between two models:

    • Fee Model: It allows partners to take up to 2% of the trade in partner fees (200 bps)

    • Surplus Model: Which only works if a surplus is generated from the trade. On this case, the partner will collect 50% of the order surplus instead of a flat percent fee to the specified partner address.

    If you want to earn fees on your users orders, they have to be set on this step. For more details, check the Partner Fees Section in Order Building.

    3. Sign the received Order

    This part of the code uses EIP-712 for Signing, which is a standard for signing structured data on Ethereum, allowing off-chain signatures that can be verified on-chain without gas costs. This ensures a secure, gas-efficient, and human-readable signing process.

    4. Submit the signed Order

    At this stage, the signed order is sent and an auction is performed between all the available Agents.

    For more details, check the Submit a Delta order section.

    5. Check the Order Auction Status

    This function is used to check the status of an order and retrieve a result.

    If the order status is executed, it means a taker has filled the order, and the swap has been completed.

    If the status is still 'PENDING' or 'OPEN', the order is waiting for execution.

    For more information on Order Auction Status, check the Track Delta Order Auction Status section.

    A more detailed example of Delta usage, including fallback to Market (traditional swapping flow), can be found in examples.

    const API_URL = 'https://api.paraswap.io';
    const DAI_TOKEN = '0x6b175474e89094c44da98b954eedeac495271d0f';
    const PSP_TOKEN = '0xcafe001067cdef266afb7eb5a286dcfd277f3de5';
    
    const { data: quote } = await axios.get(`${API_URL}/quote`, {
      params: {
        chainId: 1,
        srcToken: DAI_TOKEN,
        destToken: PSP_TOKEN,
        amount: '100000000000000000000', // 100 DAI
        srcDecimals: 18,
        destDecimals: 18,
        mode: 'delta',
        side: 'SELL',
      },
    });
    const accountWallet = new ethers.Wallet(/*Private Key or Mnemonic*/);
    
    const { data: builtOrder } = await axios.post(`${API_URL}delta/orders/build`, {
      price: quote.delta,
      chainId: 1,
      owner: account.address,
      /* if you want to collect fees
      partnerAddress: /.../,
      partnerFeeBps: /.../, - takes precedence if passed with `partnerTakesSurplus`
      partnerTakesSurplus: true,
      */
    });
    // Delta protocol works with EIP-712 signatures
    const signature = accountWallet.signTypedData(
      builtOrder.domain,
      builtOrder.types,
      builtOrder.value,
    );
    
    // compact the signature
    const compactSignature = ethers.Signature.from(signature).compactSerialized;
    const { data: deltaAuction } = await axios.post(`${API_URL}/orders`, {
      chainId: 1,
      order: builtOrder.value,
      signature: compactSignature,
      // partner: '...' // if available
    });
    // poll if necessary
    const { data: auction } = await axios.get(`${API_URL}/orders/${deltaAuction.id}`);
    if (auction?.status === 'EXECUTED') {
      console.log('Auction was executed');
    }
    values. Each combination of
    sourceChainId
    and
    destinationChainId
    maps to a list of supported token addresses on destination chain for cross-chain transactions.

    Response

    {
      "supportedTokens": {
        "1": {
          "10": [
            "0x4200000000000000000000000000000000000006",
            "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
            "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
            "0x7F5c764cBc14f9669B88837ca1490cCa17c31607"
    
    Expected Behavior for Integrators:

    When executed, this script:

    1. Connects to an Ethereum wallet.

    2. Retrieves the user's wallet address and prepares to swap 100 DAI for PSP tokens on Ethereum Mainnet (Chain ID: 1).

    3. Requests a quote from Velora with the mode: "all", meaning it will prioritize Delta pricing but fall back to market pricing if Delta is unavailable.

    4. If Delta pricing is available, the script:

      • Builds an order for execution.

      • Signs the order using EIP-712 structured signing.

      • Submits the order for execution through the Delta auction system.

    5. If Delta pricing is not available, the script:

      • Logs the reason for the fallback.

      • Retrieves a market price route instead.

      • Builds a transaction using the market price.

    This example ensures the swap execution is optimized for efficiency while providing a fail-safe fallback in case Delta pricing is unavailable. As a developer, you should expect a seamless experience for token swaps with automatic routing adjustments.

    Velora SDK
    here
    Use this endpoint to initiate a Delta auction order and optimize your trade execution on the Velora Delta network.

    Request Body Params

    Name
    Type
    Description

    order*

    Order

    The order to be submitted.

    signature*

    string

    Signature of the order from order.owner address. EOA signatures must be submitted in ERC-2098 Compact Representation.

    chainId*

    string

    Chain ID. (Mainnet - 1, Optimism - 10, BSC - 56, Polygon - 137, Fantom - 250, zkEVM - 1101, Base - 8453, Arbitrum - 42161, Avalanche - 43114, Gnosis - 100).

    type

    MARKET | LIMIT

    Indicates order type. Defaults to MARKET. Used for filtering only

    Example Responses:

    The first example response indicates a successful order submission because it includes an id, orderHash, status, and other relevant order details. The status is "NOT_STARTED", meaning the order has been created but not yet processed.

    The second response, { "error": "Validation failed with error" }, indicates a failed submission due to a validation issue, likely caused by missing or incorrect parameters in the request.

    import axios from 'axios';
    import { ethers } from 'ethers';
    
    const API_URL = "https://api.paraswap.io";
    
    const chainId = 1; // Mainnet
    const DAI_TOKEN = '0x6b175474e89094c44da98b954eedeac495271d0f';
    const PSP_TOKEN = '0xcafe001067cdef266afb7eb5a286dcfd277f3de5';
    
    async function quoteWithFallback() {
      // @ts-expect-error assume window.ethereum is available
      const ethersProvider = new ethers.providers.Web3Provider(window.ethereum);
    
      const accounts = await ethersProvider.listAccounts();
      const account = accounts[0]!;
      const signer = ethersProvider.getSigner(account);
    
      const amount = '100000000000000000000'; // 100 DAI
    
      const { data: quote } = await axios.get(`${API_URL}/quote`, {
        params: {
          chainId,
          srcToken: DAI_TOKEN,
          destToken: PSP_TOKEN,
          amount,
          userAddress: account,
          srcDecimals: 18,
          destDecimals: 18,
          mode: 'all', // Delta quote if possible, with fallback to Market price
          side: 'SELL',
        },
      });
    
      if ('delta' in quote) {
        // Delta pricing is available - we can build and submit a order
        const price = quote.delta;
        
        // build order
        const { data: builtOrder } = await axios.post(`${API_URL}/orders/build`, {
          price,
          chainId,
          owner: account,
        });
        
        // sign the order
        const signature = signer.signTypedData(
          builtOrder.domain,
          builtOrder.types,
          builtOrder.value,
        );
        
        // compact the signature
        const compactSignature = ethers.Signature.from(signature).compactSerialized;
    
        // submit the order
        const { data: deltaAuction } = await axios.post(`${API_URL}/orders`, {
          order: builtOrder.value,
          signature: compactSignature,
          // partner: '...' // if available
        });
    
        // poll if necessary
        const { data: auction } = await axios.get(`${API_URL}/orders/${deltaAuction.id}`);
        if (auction?.status === 'EXECUTED') {
          console.log('Auction was executed');
        }
      } else {
        // Delta pricing failed - falling back to market
        console.log(
          `Delta Quote failed: ${quote.fallbackReason.errorType} - ${quote.fallbackReason.details}`
        );
        const priceRoute = quote.market;
    
        // build transaction params
        const { data: txParams } = await axios.post(`${API_URL}/transactions/${chainId}`, {
          srcToken: DAI_TOKEN,
          destToken: PSP_TOKEN,
          srcAmount: amount,
          slippage: 100, // 1%
          priceRoute,
          userAddress: account,
          // partner: '...' // if available
        });
    
        // submit the transaction
        const swapTx = await signer.sendTransaction(txParams);
      }
    }
    {
      "id": "57165af8-eee8-408e-b8e8-86cc7f5c9f5c",
      "auctionOrderId": "e4579d19-e4b9-4fa1-87f3-edcf6c002a3b",
      "deltaVersion": "2.0",
      "user": "0xb0326588271f2531fbfc9a13d52d3da45be1d956",
      "signature": "0xd3696d88ae37871f79356a8cc5fee465a6cf514e7e875a6e4e004caac16079f69d03023d2deecbaf8e11fd300572b25dd9a7669986e8c6dbbb712f489071ce23",
      "status": "NOT_STARTED",
      "bridgeStatus": null,
      "order": {
        "owner": "0xb0326588271f2531fbfc9a13d52d3da45be1d956",
        "beneficiary": "0xb0326588271f2531fbfc9a13d52d3da45be1d956",
        "srcToken": "0x4200000000000000000000000000000000000006",
        "destToken": "0xfde4c96c8593536e31f229ea8f37b2ada2699bb2",
        "srcAmount": "500000000000000",
        "destAmount": "2140607",
        "expectedAmount": "2151364",
        "kind": 0,
        "metadata": "0x",
        "deadline": 1757371581,
        "nonce": "1757367983280",
        "partnerAndFee": "90631063861114836560958097440945986548822432573276877133894239693005947666432",
        "permit": "0x",
        "bridge": {
          "protocolSelector": "0x21eaa4cd",
          "destinationChainId": 10,
          "outputToken": "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58",
          "scalingFactor": 0,
          "protocolData": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001490"
        }
      },
      "bridgeMetadata": null,
      "orderVersion": "2.0.0",
      "orderHash": "0x079ea5b71361f8140259f8cf3844f7a29bb310c1cf8f8688bb5e9f40a688efcd",
      "partiallyFillable": false,
      "chainId": 8453,
      "type": "MARKET",
      "partner": "paraswap.io",
      "referrerAddress": null,
      "includeAgents": null,
      "excludeAgents": null,
      "bridgeProtocol": "ACROSS",
      "deltaGasOverhead": 185712,
      "expiresAt": "2025-09-08T22:46:21.000Z",
      "createdAt": "2025-09-08T21:46:40.398Z",
      "updatedAt": "2025-09-08T21:46:40.398Z"
    }
    {
      "error": "Validation failed with error"
    }
    Polls the order status to confirm whether it was executed.

    Submits the transaction directly to the Ethereum network using the user's wallet.

    ,
    "0x68f180fcCe6836688e9084f035309E29Bf0A2095",
    "0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea",
    "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1",
    "0xFE8B128bA8C78aabC59d4c64cEE7fF28e9379921",
    "0xFf733b2A3557a7ed6697007ab5D11B79FdD1b76B",
    "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58",
    "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4",
    "0x395Ae52bB17aef68C2888d941736A71dC6d4e125"
    ],
    "137": [
    "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619",
    "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
    "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
    "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6",
    "0x3066818837c5e6eD6601bd5a91B0762877A6B731",
    "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063",
    "0x9a71012B13CA4d3D0Cdc72A177DF3ef03b0E76A3",
    "0xF328b73B6c685831F238c30a23Fc19140CB4D8FC",
    "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",
    "0x25788a1a171ec66Da6502f9975a15B609fF54CF6"
    ],
    "324": [
    "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4",
    "0xBBeB516fb02a01611cBBE0453Fe3c580D7281011",
    "0x4B9eb6c0b6ea15176BBF62841C6B2A8a398cb656",
    "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C"
    ],
    "480": [
    "0x4200000000000000000000000000000000000006",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "0x79A02482A880bCE3F13e09Da970dC34db4CD24d1",
    "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3",
    "0x7077C71B4AF70737a08287E279B717Dcf64fdC57"
    ],
    "690": [
    "0x4200000000000000000000000000000000000006",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
    ],
    "1135": [
    "0x4200000000000000000000000000000000000006",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3",
    "0x05D032ac25d322df992303dCa074EE7392C117b9",
    "0xac485391EB2d7D88253a7F1eF18C37f4242D1A24"
    ],
    "8453": [
    "0x4200000000000000000000000000000000000006",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA",
    "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb",
    "0x4158734D47Fc9692176B5085E0F52ee0Da5d47F1",
    "0xd652C5425aea2Afd5fb142e120FeCf79e18fafc3"
    ],
    "34443": [
    "0x4200000000000000000000000000000000000006",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "0xd988097fb8612cc24eeC14542bC03424c656005f",
    "0xcDd475325D6F564d27247D1DddBb0DAc6fA0a5CF",
    "0xf0F161fDA2712DB8b566946122a5af183995e2eD"
    ],
    "41455": [
    "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "0xD648529D4803d3467bA8850577BEd4e4b8Ae583C"
    ],
    "42161": [
    "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
    "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8",
    "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f",
    "0xd693Ec944A85eeca4247eC1c3b130DCa9B0C3b22",
    "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1",
    "0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8",
    "0x53691596d1BCe8CEa565b84d4915e69e03d9C99d",
    "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
    "0xCF934E2402A5e072928a39a956964eb8F2B5B79C"
    ]
    },
    "8453": {
    "1": [
    "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
    "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "0x6B175474E89094C44Da98b954EedeAC495271d0F",
    "0xba100000625a3754423978a60c9317c58a424e3D",
    "0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e"
    ],
    "10": [
    "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
    "0x7F5c764cBc14f9669B88837ca1490cCa17c31607",
    "0x4200000000000000000000000000000000000006",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1",
    "0xFE8B128bA8C78aabC59d4c64cEE7fF28e9379921",
    "0x395Ae52bB17aef68C2888d941736A71dC6d4e125"
    ],
    "137": [
    "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
    "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
    "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619",
    "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063",
    "0x9a71012B13CA4d3D0Cdc72A177DF3ef03b0E76A3",
    "0x25788a1a171ec66Da6502f9975a15B609fF54CF6"
    ],
    "324": [
    "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4",
    "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "0x4B9eb6c0b6ea15176BBF62841C6B2A8a398cb656"
    ],
    "480": [
    "0x79A02482A880bCE3F13e09Da970dC34db4CD24d1",
    "0x4200000000000000000000000000000000000006",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "0x7077C71B4AF70737a08287E279B717Dcf64fdC57"
    ],
    "690": [
    "0x4200000000000000000000000000000000000006",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
    ],
    "1135": [
    "0x4200000000000000000000000000000000000006",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
    ],
    "34443": [
    "0xd988097fb8612cc24eeC14542bC03424c656005f",
    "0x4200000000000000000000000000000000000006",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
    ],
    "41455": [
    "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
    ],
    "42161": [
    "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
    "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8",
    "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1",
    "0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8",
    "0xCF934E2402A5e072928a39a956964eb8F2B5B79C"
    ],
    "57073": [
    "0x4200000000000000000000000000000000000006",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
    ],
    "59144": [
    "0x176211869cA2b568f2A7D4EE941E073a821EE1ff",
    "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5"
    ],
    "81457": [
    "0x4300000000000000000000000000000000000004",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "0x4300000000000000000000000000000000000003"
    ],
    "534352": [
    "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4",
    "0x5300000000000000000000000000000000000004",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "0xF9Af83FC41e0cc2af2fba93644D542Df6eA0F2b7"
    ],
    "7777777": [
    "0xCccCCccc7021b32EBb4e8C08314bD62F7c653EC4",
    "0x4200000000000000000000000000000000000006",
    "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
    ]
    }
    }
    }

    partiallyFillable

    boolean

    Allow the order to be filled in parts. Default: false

    partner

    string

    Partner string.

    includeAgents

    string[]

    List of agent names to include. If not provided, all the agents are included

    excludeAgents

    string[]

    List of agent names to exclude. If not provided, none of the agents are excluded

    referrerAddress

    string

    Referrer address

    built

    Build a transaction: /transactions

    Build Transaction

    POST https://api.paraswap.io/transactions/:network

    Build parameters for a transaction with the response from /prices endpoint.

    Path Parameters

    Path parameters define the network on which the transaction will be executed. Since blockchain networks operate independently, specifying the correct network ensures that the API queries the right environment for liquidity and transaction execution.

    Name
    Type
    Description

    Query Parameters

    As an integrator, you can modify the behavior of the API call based on the Query parameters. This allows you to customize the response based on your needs.

    Name
    Type
    Description

    Request Body

    The request body provides the details needed to execute a swap, including token details, amounts, pricing data, and user-specific parameters.

    Name
    Type
    Description

    Example:

    Here’s an example of a successful and failed transaction.

    Most common error messages

    The following is a list of the most common error messages of the /transactions endpoint. Most are self-explanatory and can be self-solved, but feel free to contact Velora Support using the chat in the bottom right corner of this page.

    • Validation failed: permit signature should be lower than 706

    • Validation failed: <error> - params validation failed (message has the exact reason of failure)

    • Missing price route - price route param is not passed

    eip1559

    boolean

    Allows the API to return EIP-1559 styled transaction with maxFeePerGas and maxPriorityFeePerGas paramters.

    *Note: We currently support EIP1559 transactions in the following chains:

    Mainnet, Ropsten, and Avalanche.

    Default: false

    srcAmount

    integer

    Source Amount with decimals. Required if side=SELL. Could only be omitted if slippage is provided when side=BUY

    destAmount

    integer

    Destination amount with decimals. Required if side=BUY. Could only be omitted if slippage is provided when side=SELL.

    priceRoute

    object

    priceRoute from response body returned from /prices endpoint. priceRoute should be sent exactly as it was returned by the /prices endpoint.

    slippage

    integer

    Allowed slippage percentage represented in basis points. Eg: for 2.5% slippage, set the value to 2.5 * 100 = 250; for 10% = 1000. Slippage could be passed instead of destAmount when side=SELL or srcAmount when side=BUY. Min: 0; Max: 10000

    userAddress

    string

    Address of the caller of the transaction (msg.sender)

    txOrigin

    string

    Whenever msg.sender (userAddress) i.e. address calling the Velora contract is different than the address sending the transaction, txOrigin must be passed along with userAddress.

    receiver

    string

    Address of the Receiver (that will receive the output of the swap). Used for Swap&Transfer.

    partnerAddress

    string

    Address that will be entitled to claim fees or surplus.

    *Note: Fees have to be claimed from the unless isSurplusToUser or isDirectFeeTransfer are used

    partnerFeeBps

    string

    If provided it is used together with partnerAddress. Should be in basis points percentage. Look at slippage parameter description for understanding better. Eg: 200 (for 2% fee percent)

    *Note: Fees have to be claimed from the unless isSurplusToUser or isDirectFeeTransfer are used

    partner

    string

    Your project name.

    Used for providing analytics on your project swaps.

    permit

    string

    Hex string for the signature used for Permit. This can be used to avoid giving approval. Helps in saving gas.

    deadline

    integer

    Timestamp (10 digit/seconds precision) till when the given transaction is valid. For a deadline of 5 minute, deadline: Math.floor(Date.now()/1000) + 300 E.g.: 1629214486

    isCapSurplus

    boolean

    Allows for capping the surplus at 1% maximum.

    Default: true

    takeSurplus

    boolean

    Allows to collect surplus. Works with partnerAddress

    Default: false

    isSurplusToUser

    boolean

    Specify if user should receive surplus instead of partner. Default: false

    isDirectFeeTransfer

    boolean

    Specify if fees should be sent directly to the partner instead of registering them on FeeClaimer.

    Default: false

    Missing srcAmount (sell)
  • Cannot specify both slippage and destAmount (sell)

  • Missing slippage or destAmount (sell)

  • Missing slippage or srcAmount (buy)

  • Source Amount Mismatch (sell)

  • Destination Amount Mismatch (buy)

  • Missing destAmount (buy)

  • Cannot specify both slippage and srcAmount (buy)

  • Network Mismatch

  • Source Token Mismatch

  • Destination Token Mismatch

  • Contract method doesn't support swap and transfer

  • Side Mismatch

  • Source Decimals Mismatch

  • Destination Decimals Mismatch

  • It is not allowed to pass both params: "positiveSlippageToUser" and "takeSurplus". - We advise removing "positiveSlippageToUser" because it is deprecated

  • When "isSurplusToUser"="true", "takeSurplus" must be also "true" and either "partnerAddress" or "partner" must be set

  • When "isDirectFeeTransfer"="true", please also set "takeSurplus"="true" and provide partner/fee information via "partnerFeeBps" & "partnerAddress" or valid "partner" params; or add "referrer" param

  • Internal Error while building transaction - something went wrong during the transaction build

  • Unable to build transaction <code> - something went wrong during the transaction build

  • It is not allowed to have limit-orders Dex or paraswappool Dex in route and 'ignoreChecks=true' together. Consider requesting the price with excluded limit-orders if you want to use 'ignoreChecks': &excludeDEXS=ParaSwapPool,ParaSwapLimitOrders

  • It seems like the rate has changed, please re-query the latest Price

  • The rate has changed, please re-query the latest Price

  • This transaction has some errors and may fail. Please contact support for more details

  • Not enough <token> balance

  • Not enough <token> allowance given to TokenTransferProxy(<spender>)

  • Unable to check price impact - src or dest tokens don’t have valid usd price

  • network

    number

    Network ID. (Mainnet - 1, Optimism - 10, BSC - 56, Polygon - 137, Base - 8453, Arbitrum - 42161, Avalanche - 43114, Gnosis - 100, Sonic - 146, Unichain - 130, Plasma - 9745).

    gasPrice

    string

    Gas-price to be used for the transaction in wei.

    ignoreChecks

    boolean

    Allows the API to skip performing on-chain checks such as balances, allowances, as well as possible transaction failures. *Note: The response does not contain gas parameter when ignoreChecks is set to true. Default: false

    ignoreGasEstimate

    boolean

    Allows the API to skip gas checks *Note: The response does not contain gas parameter when ignoreGasEstimate is set to true. Default: false

    onlyParams

    boolean

    Allows the API to return the contract parameters only. Default: false

    srcToken

    string

    Destination Token Address. Only Token Symbol could be specified for tokens from /tokens.

    srcDecimals

    integer

    Source Token Decimals. (Can be omitted if Token Symbol is provided for srcToken).

    destToken

    string

    Destination Token Address. Only Token Symbol could be specified for tokens from /tokens.

    destDecimals

    integer

    Destination Token Decimals. (Can be omitted if Token Symbol is provided for destToken).

    Retrieve a price: /prices

    Get Price Route

    GET https://api.paraswap.io/prices

    This endpoint gets the optimal price and price route required to swap from one token to another.

    You’ll find the parameters to build a successful query below:

    Query Parameters

    Name
    Type
    Description

    Here are two examples of a successful price response and a failed query.

    The first query was a sell price request on Ethereum Mainnet (chainId: 1) using Velora's Market API. The request aimed to swap 1,000 USDC for ETH (destToken: 0xeeee...eeee) while retrieving the best possible route for the trade.

    As a result, it successfully retrieved an optimized route for swapping 1,000 USDC to ETH via Uniswap V3, with minimal slippage and efficient execution while estimating gas costs.

    Most common error messages

    The following is a list of the most common error messages of the /prices endpoint. Most are self-explanatory and can be self-solved, but feel free to contact Velora Support using the chat in the bottom right corner of this page.

    • Invalid route, from token should be the first token of the route

    • Invalid route, to token should be the last token of the route

    • Token not found. Please pass srcDecimals & destDecimals query params to trade any tokens -Check the doc for more details

    Get Price & Calldata: /swap

    The /swap endpoint allows you to make one API call to get both the priceRoute object as well as the Transaction Object.

    It is designed to simplify the trading process by combining price estimation and transaction calldata generation into a single API call. This makes it a convenient option for users who want a quick and streamlined way to execute trades without handling multiple requests. However, while it offers ease of use, it also comes with certain limitations.

    Limitations

    • Lower rate limits

    {
        "from": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
        "to": "0x6a000f20005980200259b80c5102003040001068",
        "value": "0",
        "data": "0xe3ead59e0000000000000000000000005f0000d4780a00d2dce0a00004000800cb0e5041000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000006b175474e89094c44da98b954eedeac495271d0f00000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000db4d11c67691ad50000000000000000000000000000000000000000000000000dd8426a4440caf10a8104c26c244959a1d46f205acc49520000000000000000000000000133fc2c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000160a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000006000240000ff00000300000000000000000000000000000000000000000000000000000000a9059cbb0000000000000000000000004610ba8d5d10fba8c048a2051a0883ce04eabace00000000000000000000000000000000000000000000000000000000000f42406a000f20005980200259b80c51020030400010680000008000240000ff0600030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000f4240000000000000000000004de54610ba8d5d10fba8c048a2051a0883ce04eabace",
        "gasPrice": "16000000000",
        "chainId": 1
    }
    {
      "error": "Unable to process the transaction"
    }
    Fee Claimer contract
    Fee Claimer contract

    side

    string

    SELL or BUY. Default: SELL.

    network

    string

    Network ID. (Mainnet - 1, Optimism - 10, BSC - 56, Polygon - 137, Base - 8453, Arbitrum - 42161, Avalanche - 43114, Gnosis - 100, Sonic - 146, Unichain - 130, Plasma - 9745). Default: 1.

    otherExchangePrices

    boolean

    If provided, others object is filled in the response with price quotes from other exchanges (if available for comparison). Default: false

    includeDEXS

    string

    Comma Separated List of DEXs to include. All supported DEXs by chain can be found eg: UniswapV3, CurveV1

    excludeDEXS

    string

    Comma Separated List of DEXs to exclude. All supported DEXs by chain can be found eg: UniswapV3, CurveV1

    excludeRFQ

    boolean

    Exclude all RFQs from pricing eg: AugustusRFQ, Hashflow Default: false

    includeContractMethods

    string

    Comma Separated List of Comma Separated List of Contract Methods to include in pricing (without spaces). View the list of the supported methods for and eg: swapExactAmountIn,swapExactAmountInOnUniswapV2

    excludeContractMethods

    string

    Comma Separated List of Contract Methods to exclude from pricing (without spaces). View the list of the supported methods for and

    userAddress

    string

    User's Wallet Address.

    route

    string

    Dash (-) separated list of tokens (addresses or symbols from /tokens) to comprise the price route. Max 4 tokens. *Note: If route is specified, the response will only comprise of the route specified which might not be the optimal route.

    partner

    string

    Partner string.

    destDecimals*

    integer

    Destination Token Decimals. (Can be omitted if Token Symbol is used in destToken).

    maxImpact

    number

    In %. It's a way to bypass the API price impact check (default = 15%).

    receiver

    String

    Receiver's Wallet address. (Can be omitted if swapping tokens from and to same account)

    srcTokenTransferFee

    string

    If the source token is a tax token, you should specify the tax amount in BPS.

    *For example: for a token with a 5% tax, you should set it to 500 as [(500/10000)*100=5%]

    **Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.

    destTokenTransferFee

    string

    If the destination token is a tax token, you should specify the tax amount in BPS.

    *For example: for a token with a 5% tax, you should set it to 500 as [(500/10000)*100=5%]

    **Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.

    srcTokenDexTransferFee

    string

    If the source token is a tax token, you should specify the tax amount in BPS. Some tokens only charge tax when swapped in/out DEXs and not on ordinary transfers.

    *For example: for a token with a 5% tax, you should set it to 500 as [(500/10000)*100=5%]

    **Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.

    destTokenDexTransferFee

    string

    If the destination token is a tax token, you should specify the tax amount in BPS. Some tokens only charge tax when swapped in/out DEXs, not on ordinary transfers.

    *For example: for a token with a 5% tax, you should set it to 500 as [(500/10000)*100=5%]

    **Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.

    version

    number

    To specify the protocol version. Values: 5 or 6.2 Default: 5

    excludeContractMethodsWithoutFeeModel

    boolean

    Specify that methods without fee support should be excluded from the price route. Default: false

    ignoreBadUsdPrice

    boolean

    If tokens USD prices are not available, Bad USD Price error will be thrown. Use this param to skip this check. Default: false

    Invalid tokens - (srcToken and destToken) or (route) params are not passed

  • If receiver is defined userAddress should also be defined

  • It is not allowed to pass both params: "positiveSlippageToUser" and "takeSurplus". - We advice removing "positiveSlippageToUser", because it is deprecated

  • excludeDirectContractMethods param is deprecated, please use excludeContractMethodsWithoutFeeModel for newer versions

  • Invalid Amount - amount param is not a valid number

  • Validation failed: <error> - params validation failed (message has the exact reason for failure)

  • Price Timeout - reverts when a query takes more time than expected

  • No routes found with enough liquidity

  • Bad USD price - src or dest tokens don’t have valid usd price

  • Estimated_loss_greater_than_max_impact

  • Internal Error while computing the price - something went wrong during the price route calculation

  • Invalid max USD impact - maxUSDImpact is not a valid number

  • Error while handling price request - something went wrong during the price route calculation

  • srcToken*

    string

    Source Token Address. Instead Token Symbol could be used for tokens listed in the /tokens endpoint.

    srcDecimals*

    integer

    Source Token Decimals. (Can be omitted if Token Symbol is used in srcToken).

    destToken*

    string

    Destination Token Address. Instead Token Symbol could be used for tokens listed in the /tokens endpoint.

    amount*

    string

    srcToken amount (in case of SELL) or destToken amount (in case of BUY). The amount should be in WEI/Raw units (eg. 1WBTC -> 100000000)

    https://developers.paraswap.network/api/get-rate-for-a-token-pair

    It doesn't check sufficient allowances and balances

  • It doesn't return the gas field in txParams, thus the transaction should be simulated locally

  • It automatically excludes RFQ-based DEXs such as AugustusRFQ & ParaSwapLimitOrders.

  • Get Price Route & Transaction Building

    GET https://api.paraswap.io/swap

    This endpoint gets the optimal price and price route required to swap from one token to another.

    Additionally the swap endpoint also generates the parameters required for the transaction.

    Query Parameters

    Name
    Type
    Description

    srcToken*

    string

    Source Token Address. Instead Token Symbol could be used for tokens listed in the /tokens endpoint.

    srcDecimals*

    integer

    Source Token Decimals. (Can be omitted if Token Symbol is used in srcToken).

    destToken*

    string

    Destination Token Address. Instead Token Symbol could be used for tokens listed in the /tokens endpoint.

    amount*

    string

    srcToken amount (in case of SELL) or destToken amount (in case of BUY). The amount should be in WEI/Raw units (eg. 1WBTC -> 100000000)

    Example:

    Here’s an example of an integrator that used the swap function to request a price and generate a transaction.

    🧙Though srcDecimals and destDecimals are optional parameters it is highly recommended to add them while doing the pricing. This will allow you to get prices for all the tokens, including the ones which are also not listed by Velora.

    Swaps fees and Swap&Transfer (where the receiver is not the same as the sender) don't work when swapOnUniswap, swapOnUniswapFork, swapOnZeroXv2, and swapOnZeroXv4 etc. contract methods are used.

    If you would like to disable these methods you can do so by setting a whitelist for methods where Swap&Transfer is supportedincludeContractMethods=simpleSwap,multiSwap,megaSwap

    Most common error messages

    The following is a list of the most common error messages of the /swap endpoint. Most are self-explanatory and can be self-solved, but feel free to contact Velora Support using the chat in the bottom right corner of this page.

    • Missing response from pricing API - failed to get a response from pricing API

    • Can not receive price route - failed to receive price route from the pricing API response

    Build a Delta Order to Sign

    Build a Delta Order to Sign

    POST https://api.paraswap.io/delta/orders/build

    This section explains how to construct a Delta Order, which is essential for executing trades using the Velora Delta API. The /orders/build endpoint retrieves a Delta price and allows fallback to market prices.

    A successfully built order includes a structured object ready for signing.

    Common errors include validation failures, unsupported assets, and signature mismatches.

    {
        "priceRoute": {
            "blockNumber": 19462957,
            "network": 1,
            "srcToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
            "srcDecimals": 6,
            "srcAmount": "1000000000",
            "destToken": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
            "destDecimals": 18,
            "destAmount": "283341969876959340",
            "bestRoute": [
                {
                    "percent": 100,
                    "swaps": [
                        {
                            "srcToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
                            "srcDecimals": 6,
                            "destToken": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
                            "destDecimals": 18,
                            "swapExchanges": [
                                {
                                    "exchange": "UniswapV3",
                                    "srcAmount": "1000000000",
                                    "destAmount": "283341969876959340",
                                    "percent": 100,
                                    "poolAddresses": [
                                        "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640"
                                    ],
                                    "data": {
                                        "path": [
                                            {
                                                "tokenIn": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
                                                "tokenOut": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
                                                "fee": "500",
                                                "currentFee": "500"
                                            }
                                        ],
                                        "gasUSD": "13.515820"
                                    }
                                }
                            ]
                        }
                    ]
                }
            ],
            "gasCostUSD": "14.656605",
            "gasCost": "118200",
            "side": "SELL",
            "version": "6.2",
            "contractAddress": "0x6a000f20005980200259b80c5102003040001068",
            "tokenTransferProxy": "0x6a000f20005980200259b80c5102003040001068",
            "contractMethod": "swapExactAmountInOnUniswapV3",
            "partnerFee": 0,
            "srcUSD": "999.4370000000",
            "destUSD": "1003.8267642998",
            "partner": "anon",
            "maxImpactReached": false,
            "hmac": "7975cda2fd343cb90f1a15d1ec11302c467a8d7d"
        }
    }
    {
      "error": "Validation failed with error"
      }
    {
      "priceRoute": {
        "blockNumber": 20184108,
        "network": 1,
        "srcToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
        "srcDecimals": 6,
        "srcAmount": "1000000",
        "destToken": "0x6b175474e89094c44da98b954eedeac495271d0f",
        "destDecimals": 18,
        "destAmount": "997620341641628401",
        "bestRoute": [
          {
            "percent": 100,
            "swaps": [
              {
                "srcToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
                "srcDecimals": 6,
                "destToken": "0x6b175474e89094c44da98b954eedeac495271d0f",
                "destDecimals": 18,
                "swapExchanges": [
                  {
                    "exchange": "ShibaSwap",
                    "srcAmount": "1000000",
                    "destAmount": "997620341641628401",
                    "percent": 100,
                    "poolAddresses": [
                      "0x4610bA8d5D10FBa8C048A2051a0883CE04eaBAcE"
                    ],
                    "data": {
                      "router": "0xF9234CB08edb93c0d4a4d4c70cC3FfD070e78e07",
                      "path": [
                        "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
                        "0x6b175474e89094c44da98b954eedeac495271d0f"
                      ],
                      "factory": "0x115934131916C8b277DD010Ee02de363c09d037c",
                      "initCode": "0x65d1a3b1e46c6e4f1be1ad5f99ef14dc488ae0549dc97db9b30afe2241ce1c7a",
                      "feeFactor": 10000,
                      "pools": [
                        {
                          "address": "0x4610bA8d5D10FBa8C048A2051a0883CE04eaBAcE",
                          "fee": 30,
                          "direction": false
                        }
                      ],
                      "gasUSD": "5.515040"
                    }
                  }
                ]
              }
            ]
          }
        ],
        "gasCostUSD": "5.932529",
        "gasCost": "107570",
        "side": "SELL",
        "version": "6.2",
        "contractAddress": "0x6a000f20005980200259b80c5102003040001068",
        "tokenTransferProxy": "0x6a000f20005980200259b80c5102003040001068",
        "contractMethod": "swapExactAmountIn",
        "partnerFee": 0,
        "srcUSD": "1.0000000000",
        "destUSD": "0.9973641328",
        "partner": "anon",
        "maxImpactReached": false,
        "hmac": "39d19445379b69c115149340c5caaa05c898e840"
      },
      "txParams": {
        "from": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
        "to": "0x6a000f20005980200259b80c5102003040001068",
        "value": "0",
        "data": "0xe3ead59e0000000000000000000000005f0000d4780a00d2dce0a00004000800cb0e5041000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000006b175474e89094c44da98b954eedeac495271d0f00000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000db4d11c67691ad50000000000000000000000000000000000000000000000000dd8426a4440caf10a8104c26c244959a1d46f205acc49520000000000000000000000000133fc2c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000160a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000006000240000ff00000300000000000000000000000000000000000000000000000000000000a9059cbb0000000000000000000000004610ba8d5d10fba8c048a2051a0883ce04eabace00000000000000000000000000000000000000000000000000000000000f42406a000f20005980200259b80c51020030400010680000008000240000ff0600030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000f4240000000000000000000004de54610ba8d5d10fba8c048a2051a0883ce04eabace",
        "gasPrice": "16000000000",
        "chainId": 1
      }
    }
    {
      "error": "computePrice Error

    side

    string

    SELL or BUY. Default: SELL.

    network

    string

    Network ID. (Mainnet - 1, Optimism - 10, BSC - 56, Polygon - 137, Base - 8453, Arbitrum - 42161, Avalanche - 43114, Gnosis - 100, Sonic - 146, Unichain - 130, Plasma - 9745). Default: 1.

    otherExchangePrices

    boolean

    If provided, others object is filled in the response with price quotes from other exchanges (if available for comparison). Default: false

    includeDEXS

    string

    Comma Separated List of DEXs to include. Supported DEXs: Uniswap, Kyber, Bancor, AugustusRFQ, Oasis, Compound, Fulcrum, 0x, MakerDAO, Chai, Aave, Aave2, MultiPath, MegaPath, Curve, Curve3, Saddle, IronV2, BDai, idle, Weth, Beth, UniswapV2, Balancer, 0xRFQt, SushiSwap, LINKSWAP, Synthetix, DefiSwap, Swerve, CoFiX, Shell, DODOV1, DODOV2, OnChainPricing, PancakeSwap, PancakeSwapV2, ApeSwap, Wbnb, acryptos, streetswap, bakeryswap, julswap, vswap, vpegswap, beltfi, ellipsis, QuickSwap, COMETH, Wmatic, Nerve, Dfyn, UniswapV3, Smoothy, PantherSwap, OMM1, OneInchLP, CurveV2, mStable, WaultFinance, MDEX, ShibaSwap, CoinSwap, SakeSwap, JetSwap, Biswap, BProtocol eg: UniswapV3,0x

    excludeDEXS

    string

    Comma Separated List of DEXs to exclude. (from the list of DEXs mentioned above).

    includeContractMethods

    string

    Comma Separated List of Contract Methods to include without spaces. Available values: swapOnUniswap, buyOnUniswap, swapOnUniswapFork, buyOnUniswapFork, swapOnUniswapV2Fork, buyOnUniswapV2Fork, simpleBuy, simpleSwap, multiSwap, megaSwap, protectedMultiSwap, protectedMegaSwap, protectedSimpleSwap, protectedSimpleBuy, swapOnZeroXv2, swapOnZeroXv4, buy. eg: simpleSwap,multiSwap

    excludeContractMethods

    string

    Comma Separated List of Contract Methods to exclude without spaces. (from the list of contract methods mentioned above).

    userAddress

    string

    User's Wallet Address.

    route

    string

    Dash (-) separated list of tokens (addresses or symbols from /tokens) to comprise the price route. Max 4 tokens. *Note: If route is specified, the response will only comprise of the route specified which might not be the optimal route.

    partner

    string

    Partner string.

    partnerFeeBps

    string

    If provided it is used together with partnerAddress. Should be in basis points percentage. Look at slippage parameter description for understanding better. Eg: 200 (for 2% fee percent)

    *Note: Fees have to be claimed from the Fee Claimer contract unless isSurplusToUser or isDirectFeeTransfer are used

    partnerAddress

    string

    Address that will be entitled to claim fees or surplus.

    *Note: Fees have to be claimed from the Fee Claimer contract unless isSurplusToUser or isDirectFeeTransfer are used

    slippage

    integer

    Allowed slippage percentage represented in basis points. Eg: for 2.5% slippage, set the value to 2.5 * 100 = 250; for 10% = 1000. Slippage could be passed instead of destAmount when side=SELL or srcAmount when side=BUY. Min: 0; Max: 10000

    destDecimals*

    integer

    Destination Token Decimals. (Can be omitted if Token Symbol is used in destToken).

    maxImpact

    number

    In %. It's a way to bypass the API price impact check (default = 15%).

    receiver

    String

    Receiver's Wallet address. (Can be omitted if swapping tokens from and to same account)

    srcTokenTransferFee

    string

    If the source token is a tax token, you should specify the tax amount in BPS.

    *For example: for a token with a 5% tax, you should set it to 500 as [(500/10000)*100=5%]

    **Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.

    destTokenTransferFee

    string

    If the destination token is a tax token, you should specify the tax amount in BPS.

    *For example: for a token with a 5% tax, you should set it to 500 as [(500/10000)*100=5%]

    **Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.

    srcTokenDexTransferFee

    string

    If the source token is a tax token, you should specify the tax amount in BPS. Some tokens only charge tax when swapped in/out DEXs and not on ordinary transfers.

    *For example: for a token with a 5% tax, you should set it to 500 as [(500/10000)*100=5%]

    **Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.

    destTokenDexTransferFee

    string

    If the destination token is a tax token, you should specify the tax amount in BPS. Some tokens only charge tax when swapped in/out DEXs, not on ordinary transfers.

    *For example: for a token with a 5% tax, you should set it to 500 as [(500/10000)*100=5%]

    **Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.

    version

    number

    To specify the protocol version. Values: 5 or 6.2 Default: 5

    ignoreBadUsdPrice

    boolean

    If tokens USD prices are not available, Bad USD Price error will be thrown. Use this param to skip this check. Default: false

    isSurplusToUser

    boolean

    Specify if user should receive surplus instead of partner. Default: false

    isDirectFeeTransfer

    boolean

    Specify if fees should be sent directly to the partner instead of registering them on FeeClaimer.

    Default: false

    isCapSurplus

    boolean

    Allows for capping the surplus at 1% maximum.

    Default: true

    takeSurplus

    boolean

    Allows to collect surplus. Works with partnerAddress

    Default: false

    Use this guide to generate a Delta Order and prepare it for signing before submission.

    Request Body Parameters

    Name
    Type
    Description

    price*

    DeltaPrice

    The delta object retrieved from /quote .

    chainId*

    number

    Chain ID. (Mainnet - 1, Optimism - 10, BSC - 56, Polygon - 137, Fantom - 250, zkEVM - 1101, Base - 8453, Arbitrum - 42161, Avalanche - 43114, Gnosis - 100).

    owner*

    string

    Order owner address.

    bridge

    DeltaBridge

    Required only for cross-chain orders. See below for details

    DeltaBridge structure:

    Name
    Type
    Description

    protocolSelector

    string

    Selector that indicates the bridge protocol used. Obtained from the price API

    destinationChainId

    number

    Destination chain ID. (Mainnet - 1, Optimism - 10, BSC - 56, Polygon - 137, Fantom - 250, zkEVM - 1101, Base - 8453, Arbitrum - 42161, Avalanche - 43114, Gnosis - 100).

    outputToken

    string

    Output token on the destination chain. List of supported output tokens can be obtained from /bridge-info . Output token can also be obtained from price.bridge.outputToken

    scalingFactor

    number

    Specifies difference between the decimals in source bridge token and destination token

    Most common error types

    • ValidationError - validation for params failed

    • UnsupportedChain - the chain ID is not supported by Delta.

    • UnsupportedToken - the token is not supported by Delta.

    • InvalidHmac - hmac check failed, meaning price object returned from /quote endpoint was mutated.

    Supported Permits

    • Permit(ERC-2612) - expected to have 224 bytes length (owner, spender, value, deadline, v, r, s).

    • Permit2

      • TransferFrom format - expected length is 96 bytes (32 for permitNonce, 64 for compact signature), amount and deadline should be the same as in Order.

      • Allowance format - expected length is 192 bytes.

    • DAI Style Permit - expected length is 256 bytes.

    • 0x01 - special permit value that signifies existing Permit2 allowance.

    Delta Contract should be specified as a spender is a permit.

    Sign an Order

    Once the Delta Order is built, it must be signed using the EIP-712 standard before submission. This section provides a working example using ethers.js and axios.

    Example:

    Sign an order (cross-chain)

    The following snippet provides an example implementation of constructing the DeltaBridge structure for the cross-chain swap

    Partner Fees

    This is just technical explanation. If you are using our Order Building endpoint, this knowledge is not required.

    The fees are enabled by encoding partnerAndFee param of the order, before its signed by a user.

    The param includes three values:

    • partnerAddress - on-chain address which will be able to collect the fees.

    • partnerFeeBps - flat fee percent which will be taken from the order. The value is in base points (100is 1%), which the maximum allowed value of 200.

    • partnerTakeSurplus - a flag that, if set, allows the partner to collect 50% of the surplus as fees. It has no impact if passed together with partnerFeeBps, since partnerFeeBps takes precedence.

    These are encoded into a single uint256 value, which then is used as partnerAndFee.

    here
    here
    V5
    V6
    V5
    V6

    Track Delta Order Status

    Get Delta Order Auction Status

    GET https://api.paraswap.io/delta/orders/:orderId

    This endpoint enables users to retrieve real-time details of a specific auction, ensuring transparency and efficient execution monitoring.

    {
      "toSign": {
        "domain": {
          "name": "Portikus",
          "version": "2.0.0",
          "chainId": 1,
          "verifyingContract": "0x0000000000bbf5c5fd284e657f01bd000933c96d"
        },
        "types": {
          "Order": [
            {
              "name": "owner",
              "type": "address"
            },
            {
              "name": "beneficiary",
              "type": "address"
            },
            {
              "name": "srcToken",
              "type": "address"
            },
            {
              "name": "destToken",
              "type": "address"
            },
            {
              "name": "srcAmount",
              "type": "uint256"
            },
            {
              "name": "destAmount",
              "type": "uint256"
            },
            {
              "name": "expectedAmount",
              "type": "uint256"
            },
            {
              "name": "deadline",
              "type": "uint256"
            },
            {
              "name": "kind",
              "type": "uint8"
            },
            {
              "name": "nonce",
              "type": "uint256"
            },
            {
              "name": "partnerAndFee",
              "type": "uint256"
            },
            {
              "name": "permit",
              "type": "bytes"
            },
            {
              "name": "metadata",
              "type": "bytes"
            },
            {
              "name": "bridge",
              "type": "Bridge"
            }
          ],
          "Bridge": [
            {
              "name": "protocolSelector",
              "type": "bytes4"
            },
            {
              "name": "destinationChainId",
              "type": "uint256"
            },
            {
              "name": "outputToken",
              "type": "address"
            },
            {
              "name": "scalingFactor",
              "type": "int8"
            },
            {
              "name": "protocolData",
              "type": "bytes"
            }
          ]
        },
        "value": {
          "owner": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
          "beneficiary": "0x0000000000000000000000000000000000000000",
          "srcToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
          "destToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
          "srcAmount": "10000000",
          "destAmount": "9127760",
          "expectedAmount": "9219960",
          "deadline": 1757333024,
          "kind": 0,
          "nonce": "47551995136396664604384293391986507799897145387152361812735887931703330715323",
          "permit": "0x",
          "partnerAndFee": "0",
          "metadata": "0x",
          "bridge": {
            "protocolSelector": "0x21eaa4cd",
            "destinationChainId": 8453,
            "outputToken": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
            "scalingFactor": 0,
            "protocolData": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
          }
        }
      }
    }
    {
        "errorType": "InvalidHmac",
        "details": "Invalid HMAC"
    }
    import { ethers, TypedDataEncoder } from "ethers"; // ethers V6
    import axios from "axios";
    
    const userWallet = new ethers.Wallet(ethers.id("alice"));
    const userAddress = userWallet.address;
    const chainId = 1;
    // fetch price
    const { data: quoteData } = await axios.get("https://api.paraswap.io/quote?mode=delta&...");
    const price = quoteData.delta;
    // prepare build order params
    const buildOrderParams = {
        price,
        owner: userAddress,
        chainId,
        partnerAddress: "0x81037e7be71bce9591de0c54bb485ad3e048b8de",
        partnerFeeBps: 100, // 1%
        partnerTakesSurplus: false, // the default
    };
    // build the order to sign
    const { data: buildOrderData } = await axios.post("https://api.paraswap.io/delta/orders/build", buildOrderParams);
    const { domain, types, value: order } = buildOrderData.toSign;
    // hash the order
    const eip712Hash = TypedDataEncoder.hash(
      domain,
      types,
      order,
    );
    // sign and compact
    const signature = userWallet.signingKey.sign(typedHash).compactSerialized; // ERC-2098 representation
    import { ethers, TypedDataEncoder } from "ethers"; // ethers V6
    import axios from "axios";
    
    const ETH_ADDRESS = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; // same across all chains
    const USDC_ADDRESS_ETH = "0xA0b86991c6218b36c1d19D4a2e9EB0CE3606EB48"; // USDC on Ethereum
    const WETH_ADDRESS_OP = "0x4200000000000000000000000000000000000006";
    
    const userWallet = new ethers.Wallet(ethers.id("alice"));
    const userAddress = userWallet.address;
    const srcChainId = 1;
    const destChainId = 10;
    
    
    const buildAndSignOrder = async (
    	srcToken: string,
    	srcDecimals: number,
    	// dest token on destination chain
    	destToken: string,
    	destDecimals: number,
    	srcChainId: number,
    	destChainId: number,
    	amount: number,
    ) => {
    	const { data: quoteData } = await axios.get(`https://api.paraswap.io/quote`, {
    		params: {
    			mode: "delta",
    			srcToken,
    			srcDecimals,
    			destToken,
    			destDecimals,
    			chainId: srcChainId,
    			destChainId,
    			amount,
    		},
    	});
    
    	const price = quoteData.delta;
    
    	// prepare build order params
    	const buildOrderParams = {
    		price,
    		owner: userAddress,
    		chainId: srcChainId,
    		partnerAddress: "0x81037e7be71bce9591de0c54bb485ad3e048b8de",
    		partnerFeeBps: 100, // 1%
    		partnerTakesSurplus: false, // the default,
    		bridge: price.bridge,
    	};
    	// build the order to sign
    	const { data: buildOrderData } = await axios.post(
    		"https://api.paraswap.io/delta/orders/build",
    		buildOrderParams,
    	);
    	const { domain, types, value: order } = buildOrderData.toSign;
    	// hash the order
    	const eip712Hash = TypedDataEncoder.hash(domain, types, order);
    	// sign and compact
    	const signature = userWallet.signingKey.sign(eip712Hash).compactSerialized; // ERC-2098 representation
    
    	return { order, signature };
    };
    
    // swap 1 USDC on Mainnet to WETH on Optimism
    const order = await buildAndSignOrder(
    	USDC_ADDRESS_ETH,
    	6,
    	WETH_ADDRESS_OP,
    	18,
    	srcChainId,
    	destChainId,
    	10 ** 18,
    );
    
    

    beneficiary

    string

    Order beneficiary. Default: zero address, meaning owner address.

    slippage

    number

    Slippage in base points (100 is 1%). Default: 100.

    deadline

    number

    Order expiry time as UNIX timestamp. Default: 1 hour from order creation.

    nonce

    string

    Arbitrary uint256 value to be used as order nonce. Default: value generated with internal algos. It is recommended to omit this param.

    permit

    string

    Encoded permit to be used in order settlement. Supported permit types are described here. Default: 0x.

    partiallyFillable

    boolean

    If true, order will be generated as partially fillable. Default: false.

    partnerAddress

    string

    Address of the partner. Used to collect fees from the order. Default: zero address.

    partnerFeeBps

    number

    Partner fee percent in base points (100 is 1%). Max value is 200. Default: 0.

    partnerTakesSurplus

    boolean

    If true, partner will collect 50% of the order surplus instead of flat percent fee. Default: false.

    protocolData

    string

    Protocol-specific data, obtained from pricing API

    endpoint
    endpoint

    Available order statuses (status property)

    Status
    Description

    NOT_STARTED

    The initial state of an order when it enters the system. Orders in this state are waiting to be included in a batch auction. Orders that failed execution may also be reset to this state to retry.

    RUNNING

    Orders that are actively being considered for execution in the current batch auction.

    EXECUTING

    Orders that have been assigned to a winning agent who has been notified to execute them. This status indicates that on-chain execution is in progress. Orders remain in this state untiltransaction confirmation or timeout.

    INSUFFICIENT_BALANCE

    This state indicates that an order has insufficient token balance during secondary validation. This happens when a user's token balance drops below the required amount after the initial validation. Since this is a non-terminal status, the system will periodically recheck the balance, allowing the order to proceed to auction if the user adds sufficient funds.

    INSUFFICIENT_ALLOWANCE

    This state indicates that an order has insufficient token allowance during secondary validation. This occurs when a user's approval for the Delta contract is reduced or revoked after initial validation. Since this is a non-terminal status, the system will periodically recheck the allowance, allowing the order to proceed if the user reinstates or increases the approval.

    INVALIDATED

    A terminal status indicating that an order has failed secondary validation before being included in an auction. This happens when orders undergo re-validation after initial posting but before auction inclusion. Orders may be invalidated due to changed conditions since initial validation, for example nonce was invalidated because other order with the same nonce has already been executed.

    Available bridge statuses (bridgeStatus property, set only for cross-chain orders, null for same-chain orders).

    status
    Description

    PENDING

    The initial status for a bridged order after execution on the source chain. Indicates that the transaction has been successfully executed on the source chain, but hasn't been bridged yet.

    FILLED

    A terminal state indicating that the order has been filled on the destination chain. fillTx property in bridgeMetadata becomes available.

    REFUNDED

    A terminal state indicating that the order has been refunded on the source chain. The refunded token would be the one that was sent to bridge after the swap. depositRefundTxHash property in bridgeMetadata becomes available.

    Get Delta Orders for a User

    GET https://api.paraswap.io/delta/orders

    The Get Delta Orders for a User endpoint allows integrators to fetch all orders associated with a specific address, making it invaluable for dashboards, trade history tracking, and compliance purposes.

    Query Parameters

    Name
    Type
    Description

    userAddress*

    string

    User Address.

    chainId

    string[]

    Comma-separated list of chain ids (e.g. chainId=1,8453

    page

    integer

    Default: 1.

    limit

    integer

    Default: 100.

    Most common error messages

    These are the two most common messages when using this endpoint.

    • ValidationError - validation for params failed

    • UnsupportedChain - the chain ID is not supported by Delta.

    To avoid running into ValidationError and UnsupportedChain errors when using this endpoint, here are some recommendations:

    Avoiding ValidationError

    1. Check Required Parameters: Ensure all mandatory parameters are included in your request. Missing or incorrectly formatted fields often trigger this error.

    2. Validate Data Types: Confirm that parameters match the expected types (e.g., numbers vs. strings, correct JSON structure).

    3. Follow API Documentation: Double-check the expected format for each parameter in the official API documentation.

    Avoiding UnsupportedChain

    1. Verify Supported Chains: Check the API documentation or a dedicated "supported chains" endpoint to ensure the chain ID is compatible with Delta.

    2. Use Correct Chain IDs: Some APIs require chain IDs in decimal format, while others expect hex. Ensure you’re using the correct format.

    {
      "id": "57165af8-eee8-408e-b8e8-86cc7f5c9f5c",
      "deltaVersion": "2.0",
      "status": "EXECUTED",
      "user": "0xb0326588271f2531fbfc9a13d52d3da45be1d956",
      "order": {
        "owner": "0xb0326588271f2531fbfc9a13d52d3da45be1d956",
        "beneficiary": "0xb0326588271f2531fbfc9a13d52d3da45be1d956",
        "srcToken": "0x4200000000000000000000000000000000000006",
        "destToken": "0xfde4c96c8593536e31f229ea8f37b2ada2699bb2",
        "srcAmount": "500000000000000",
        "destAmount": "2140607",
        "expectedAmount": "2151364",
        "kind": 0,
        "metadata": "0x",
        "deadline": 1757371581,
        "nonce": "1757367983280",
        "partnerAndFee": "90631063861114836560958097440945986548822432573276877133894239693005947666432",
        "permit": "0x",
        "bridge": {
          "protocolSelector": "0x21eaa4cd",
          "destinationChainId": 10,
          "outputToken": "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58",
          "scalingFactor": 0,
          "protocolData": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001490"
        }
      },
      "orderHash": "0x079ea5b71361f8140259f8cf3844f7a29bb310c1cf8f8688bb5e9f40a688efcd",
      "chainId": 8453,
      "partner": "paraswap.io",
      "expiresAt": "2025-09-08T22:46:21.000Z",
      "createdAt": "2025-09-08T21:46:40.398Z",
      "updatedAt": "2025-09-08T21:47:10.977Z",
      "partiallyFillable": false,
      "includeAgents": null,
      "excludeAgents": null,
      "bridgeMetadata": {
        "depositId": 4598367,
        "fillDeadline": 1757379701,
        "outputAmount": "2148676",
        "fillTx": "0x0043cf3ae9f69c6cc7098b4a5bc6454af90067a1a7c553900d20a2afe5dcf8e3"
      },
      "bridgeStatus": "filled",
      "referrerAddress": null,
      "type": "MARKET",
      "transactions": [
        {
          "id": "d7e43ea0-5254-4330-9e96-cb55b54ee546",
          "hash": "0x0cdd73270941d1a366c34340a2b77a51f56cc3b445f4a9f268fd12af9d6c16a7",
          "blockNumber": 35289330,
          "blockHash": "0xf141d321f442494a3caaeeb069ec58ce1de5ef17827841ae6d569334dcf0aef9",
          "gasUsed": 276385,
          "gasPrice": 2999412,
          "blobGasUsed": 0,
          "blobGasPrice": 0,
          "index": 155,
          "status": 1,
          "from": "0x2e5ef37ade8afb712b8be858fec7389fe32857e2",
          "to": "0x0000000000bbf5c5fd284e657f01bd000933c96d",
          "receivedAmount": "2152016",
          "receivedAmountUSD": 2.15,
          "spentAmount": "500000000000000",
          "spentAmountUSD": 2.16,
          "filledPercent": 10000,
          "protocolFee": "651",
          "partnerFee": "0",
          "agent": "laita",
          "orderId": "57165af8-eee8-408e-b8e8-86cc7f5c9f5c",
          "bidId": "2081f754-9c72-4243-8557-9f3b9d6c90f6"
        }
      ]
    }
    
    [
      {
        "id": "57165af8-eee8-408e-b8e8-86cc7f5c9f5c",
        "deltaVersion": "2.0",
        "user": "0xb0326588271f2531fbfc9a13d52d3da45be1d956",
        "status": "EXECUTED",
        "order": {
          "owner": "0xb0326588271f2531fbfc9a13d52d3da45be1d956",
          "beneficiary": "0xb0326588271f2531fbfc9a13d52d3da45be1d956",
          "srcToken": "0x4200000000000000000000000000000000000006",
          "destToken": "0xfde4c96c8593536e31f229ea8f37b2ada2699bb2",
          "srcAmount": "500000000000000",
          "destAmount": "2140607",
          "expectedAmount": "2151364",
          "kind": 0,
          "metadata": "0x",
          "deadline": 1757371581,
          "nonce": "1757367983280",
          "partnerAndFee": "90631063861114836560958097440945986548822432573276877133894239693005947666432",
          "permit": "0x",
          "bridge": {
            "protocolSelector": "0x21eaa4cd",
            "destinationChainId": 10,
            "outputToken": "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58",
            "scalingFactor": 0,
            "protocolData": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001490"
          }
        },
        "partiallyFillable": false,
        "orderHash": "0x079ea5b71361f8140259f8cf3844f7a29bb310c1cf8f8688bb5e9f40a688efcd",
        "chainId": 8453,
        "partner": "paraswap.io",
        "expiresAt": "2025-09-08T22:46:21.000Z",
        "createdAt": "2025-09-08T21:46:40.398Z",
        "updatedAt": "2025-09-08T21:47:10.977Z",
        "includeAgents": null,
        "excludeAgents": null,
        "bridgeMetadata": {
          "depositId": 4598367,
          "fillDeadline": 1757379701,
          "outputAmount": "2148676",
          "fillTx": "0x0043cf3ae9f69c6cc7098b4a5bc6454af90067a1a7c553900d20a2afe5dcf8e3"
        },
        "bridgeStatus": "filled",
        "referrerAddress": null,
        "type": "MARKET",
        "transactions": [
          {
            "id": "d7e43ea0-5254-4330-9e96-cb55b54ee546",
            "hash": "0x0cdd73270941d1a366c34340a2b77a51f56cc3b445f4a9f268fd12af9d6c16a7",
            "blockNumber": 35289330,
            "blockHash": "0xf141d321f442494a3caaeeb069ec58ce1de5ef17827841ae6d569334dcf0aef9",
            "gasUsed": 276385,
            "gasPrice": 2999412,
            "blobGasUsed": 0,
            "blobGasPrice": 0,
            "index": 155,
            "status": 1,
            "from": "0x2e5ef37ade8afb712b8be858fec7389fe32857e2",
            "to": "0x0000000000bbf5c5fd284e657f01bd000933c96d",
            "receivedAmount": "2152016",
            "receivedAmountUSD": 2.15,
            "spentAmount": "500000000000000",
            "spentAmountUSD": 2.16,
            "filledPercent": 10000,
            "protocolFee": "651",
            "partnerFee": "0",
            "agent": "laita",
            "orderId": "57165af8-eee8-408e-b8e8-86cc7f5c9f5c",
            "bidId": "2081f754-9c72-4243-8557-9f3b9d6c90f6"
          }
        ]
      },
      {
        "id": "7e6b0bf4-4b71-4b93-bd84-a6dac8d2911a",
        "deltaVersion": "2.0",
        "user": "0xb0326588271f2531fbfc9a13d52d3da45be1d956",
        "status": "EXECUTED",
        "order": {
          "owner": "0xb0326588271f2531fbfc9a13d52d3da45be1d956",
          "beneficiary": "0xb0326588271f2531fbfc9a13d52d3da45be1d956",
          "srcToken": "0x0b2c639c533813f4aa9d7837caf62653d097ff85",
          "destToken": "0x4200000000000000000000000000000000000006",
          "srcAmount": "6505099",
          "destAmount": "1491804070300740",
          "expectedAmount": "1499300573166573",
          "kind": 0,
          "metadata": "0x",
          "deadline": 1757085896,
          "nonce": "1757082301370",
          "partnerAndFee": "90631063861114836560958097440945986548822432573276877133894239693005947666432",
          "permit": "0x000000000000000000000000b0326588271f2531fbfc9a13d52d3da45be1d9560000000000000000000000000000000000bbf5c5fd284e657f01bd000933c96d000000000000000000000000000000000000000000000000000000000063428b0000000000000000000000000000000000000000000000000000000068bee73a000000000000000000000000000000000000000000000000000000000000001bf7e752fbd74f7e10cb3457fe444e4c9f33f0d339a6dd86f44ef7fae93ff630415610f6dd6997d3771e19f5864988c68be8e00a737efa950481412c3427af1b37",
          "bridge": {
            "protocolSelector": "0x21eaa4cd",
            "destinationChainId": 8453,
            "outputToken": "0x4200000000000000000000000000000000000006",
            "scalingFactor": 0,
            "protocolData": "0x000000000000000000000000924a9f036260ddd5808007e1aa95f08ed08aa56900000000000000000000000000000000000000000000000000000021864c4f46"
          }
        },
        "partiallyFillable": false,
        "orderHash": "0x1b07c0e7e7a98ec8e4d391b112465ad3343bd6b8cb420aa6a0d2e203ba3a5b96",
        "chainId": 10,
        "partner": "paraswap.io",
        "expiresAt": "2025-09-05T15:24:56.000Z",
        "createdAt": "2025-09-05T14:25:11.292Z",
        "updatedAt": "2025-09-05T14:25:43.733Z",
        "includeAgents": null,
        "excludeAgents": null,
        "bridgeMetadata": {
          "depositId": 3383355,
          "fillDeadline": 1757094011,
          "outputAmount": "1499413876136046",
          "fillTx": "0x84da86fd9449a2b8a4d2b6914879cc1ccc5267ec58696560b58f46c97655eb1c"
        },
        "bridgeStatus": "filled",
        "referrerAddress": null,
        "type": "MARKET",
        "transactions": [
          {
            "id": "d6efdcd5-d169-46f8-bfef-206d818ac483",
            "hash": "0xa1c0d6ac1d1f9ba354ac034b4c780f01a23a183d66e957daa486b13afc216855",
            "blockNumber": 140741769,
            "blockHash": "0x5cb55e493165cf1e7a2cce2349a700bcbabd7b9daf25aaed6528485bf38779bf",
            "gasUsed": 362017,
            "gasPrice": 1101208,
            "blobGasUsed": 0,
            "blobGasPrice": 0,
            "index": 15,
            "status": 1,
            "from": "0x2e5ef37ade8afb712b8be858fec7389fe32857e2",
            "to": "0x0000000000bbf5c5fd284e657f01bd000933c96d",
            "receivedAmount": "1499557863204788",
            "receivedAmountUSD": 6.52,
            "spentAmount": "6505099",
            "spentAmountUSD": 6.5,
            "filledPercent": 10000,
            "protocolFee": "257290038215",
            "partnerFee": "0",
            "agent": "laita",
            "orderId": "7e6b0bf4-4b71-4b93-bd84-a6dac8d2911a",
            "bidId": "b992925a-54a9-48bc-9dfd-cd159cd60d5f"
          }
        ]
      },
      {
        "id": "45545c6a-a657-48f3-b3ce-c3e9be2316d0",
        "deltaVersion": "2.0",
        "user": "0xb0326588271f2531fbfc9a13d52d3da45be1d956",
        "status": "EXECUTED",
        "order": {
          "owner": "0xb0326588271f2531fbfc9a13d52d3da45be1d956",
          "beneficiary": "0xb0326588271f2531fbfc9a13d52d3da45be1d956",
          "srcToken": "0x0b2c639c533813f4aa9d7837caf62653d097ff85",
          "destToken": "0x4200000000000000000000000000000000000006",
          "srcAmount": "2196554",
          "destAmount": "488746921607604",
          "expectedAmount": "491202936289050",
          "kind": 0,
          "metadata": "0x",
          "deadline": 1757082771,
          "nonce": "1757079183686",
          "partnerAndFee": "90631063861114836560958097440945986548822432573276877133894239693005947666432",
          "permit": "0x000000000000000000000000b0326588271f2531fbfc9a13d52d3da45be1d9560000000000000000000000000000000000bbf5c5fd284e657f01bd000933c96d000000000000000000000000000000000000000000000000000000000021844a0000000000000000000000000000000000000000000000000000000068bedb06000000000000000000000000000000000000000000000000000000000000001c4675562642981eb04e9858348310ff987d90c3a7ec562401c9fe6c1bc3911be127f10f1fcf57b7d4a68e094bf368ee328d6f1016ead6af2fdb40e4bad238e999",
          "bridge": {
            "protocolSelector": "0x21eaa4cd",
            "destinationChainId": 8453,
            "outputToken": "0x4200000000000000000000000000000000000006",
            "scalingFactor": 0,
            "protocolData": "0x000000000000000000000000924a9f036260ddd5808007e1aa95f08ed08aa5690000000000000000000000000000000000000000000000000000000afbbe917c"
          }
        },
        "partiallyFillable": false,
        "orderHash": "0xcdc9843d583ac27251090548f8c697f3a2dd3593282da26fcdca857acb743ecc",
        "chainId": 10,
        "partner": "paraswap.io",
        "expiresAt": "2025-09-05T14:32:51.000Z",
        "createdAt": "2025-09-05T13:33:14.493Z",
        "updatedAt": "2025-09-05T13:44:43.679Z",
        "includeAgents": null,
        "excludeAgents": null,
        "bridgeMetadata": {
          "depositId": 3383287,
          "fillDeadline": 1757090893,
          "outputAmount": "490189613478551",
          "fillTx": "0xe018e615c93abb6d16613d28a860476459c0d077559ac7699a18b1cc6b9f5bc5"
        },
        "bridgeStatus": "filled",
        "referrerAddress": null,
        "type": "MARKET",
        "transactions": [
          {
            "id": "37370696-5f9d-4c55-b1ad-8af4fc06bbe9",
            "hash": "0x9d68335c7350c9f70bfd67bb74240fa99eed8a5c335029a704720f8384627bfd",
            "blockNumber": 140740211,
            "blockHash": "0xaf50d44ca9473c7ceef1e1ddbc7afa9ec0694c3a3366913422cab498c9856d49",
            "gasUsed": 423252,
            "gasPrice": 1101096,
            "blobGasUsed": 0,
            "blobGasPrice": 0,
            "index": 5,
            "status": 1,
            "from": "0x2e5ef37ade8afb712b8be858fec7389fe32857e2",
            "to": "0x0000000000bbf5c5fd284e657f01bd000933c96d",
            "receivedAmount": "490236786721811",
            "receivedAmountUSD": 2.19,
            "spentAmount": "2196554",
            "spentAmountUSD": 2.2,
            "filledPercent": 10000,
            "protocolFee": "0",
            "partnerFee": "0",
            "agent": "laita",
            "orderId": "45545c6a-a657-48f3-b3ce-c3e9be2316d0",
            "bidId": "dd4b8cb4-ece4-4718-a133-fdc5045790b0"
          }
        ]
      }
    ]
    {
      "error": "Validation failed with error"
    }
    {
      "error": "Validation failed with error"
    }

    EXECUTED

    A terminal state indicating that the order has been successfully executed on-chain.

    FAILED

    A terminal state indicating that the order failed execution after multiple retry attempts.

    EXPIRED

    A terminal state indicating that the order's deadline has passed without successful execution.

    type

    LIMIT | MARKET

    Filters orders by types.

    status

    OrderStatus[]

    Comma-separated list of statuses described above. Other possible values are: - ACTIVE - any non-terminal status from the list above - INACTIVE - any terminal status from the list above - SUSPENDED - orders that are suspended, but might be executed in future (INSUFFICIENT_BALANCE/INSUFFICIENT_ALLOWANCE statuses)

    Retrieve Delta price with fallback to Market

    Get Delta Price with fallback to Market

    GET https://api.paraswap.io/quote

    When implementing this endpoint, you can enable API to fallback to market prices if the Delta pricing is not available. If the quote obtained comes from Market pricing data, you’ll get the learn more about the cause in the fallback reason parameter.

    This endpoint is also available in . You can find example usage .

    Query Parameters

    Name
    Type
    Description

    Query Modes Explained

    The endpoint behaves differently based on the mode passed:

    • DELTA - will return the Delta pricing data in the delta field, which can then be used to build, sign and submit a Delta Order.

    • MARKET - will return the Market pricing data in the market field , which is an equivalent to the successful response from /prices?version=6.2 of the Velora API, which can then be used to . Cross-chain orders are not supported in MARKET mode.

    Response

    Fields

    Field
    Type
    Description

    delta Object

    This section provides information about the swap, bridging path, fees, and available bridge routes.

    Core Fields

    Field
    Type
    Description

    BridgeInfo object

    Field
    Type
    Description

    BridgeFee object

    Field
    Type
    Description

    AvailableBridge object

    Lists all potential bridge routes and their parameters. Each item represents one destination bridge option, containing:

    Field
    Type
    Description

    BridgeParams

    Field
    Type
    Description

    Examples for Successful Responses for each mode.

    Most common fallback reasons and error types

    The following is a list of the most common error messages and fallback reasons of the /delta/quote endpoint. Most are self-explanatory and can be self-solved, but feel free to contact Velora Support using the chat in the bottom right corner of this page.

    • ValidationError - validation for params failed

    • UnsupportedChain - the chain ID is not supported by Delta.

    • UnsupportedToken - the token is not supported by Delta.

    amount*

    string

    srcToken amount (in case of SELL) or destToken amount (in case of BUY). The amount should be in WEI/Raw units (eg. 1WBTC -> 100000000)

    side

    SELL | BUY

    Default: SELL.

    chainId*

    number

    Chain ID. (Mainnet - 1, Optimism - 10, BSC - 56, Polygon - 137, Fantom - 250, zkEVM - 1101, Base - 8453, Arbitrum - 42161, Avalanche - 43114, Gnosis - 100).

    userAddress

    string

    User's Wallet Address.

    partner

    string

    Partner string.

    mode

    ALL | DELTA | MARKET

    Preferred mode for the trade. In case of "all", Delta pricing is returned, with Market as a fallback. Default: ALL. MARKET mode is not supported for cross-chain orders

    destChainId

    number

    Destination chain ID for cross-chain quote. (Mainnet - 1, Optimism - 10, BSC - 56, Polygon - 137, Fantom - 250, zkEVM - 1101, Base - 8453, Arbitrum - 42161, Avalanche - 43114, Gnosis - 100).

    ALL - default mode. Will return the Delta pricing data in the delta field. In case the Delta prices are unavailable, fallback to MARKET mode and returns the Market pricing data. Also specifies the fallback reason in fallbackReason field. Refer here for example of usage of this mode.

    destAmountBeforeFee

    string

    Destination token amount before applying fees

    gasCostUSD

    string

    Estimated gas cost of executing the transaction, in USD.

    gasCost

    string

    Estimated gas cost in units of gas.

    srcUSD

    string

    USD equivalent of srcAmount.

    destUSD

    string

    USD equivalent of destAmount after all fees.

    partner

    string

    Partner identifier

    partnerFee

    number

    Partner fee

    bridge

    Bridge?

    Bridge details that should be signed within the order. Available only for cross-chain orders

    bridgeInfo

    BridgeInfo?

    Provides metadata about the selected bridge route.

    hmac

    string

    Hash-based message authentication code

    fees

    BridgeFee[]

    Breakdown of fees charged by the bridge protocol. Some bridges might have no fee

    gasCostUSD

    string

    Gas cost estimate in USD for the transaction

    bridgeParams

    BridgeParams[]

    Set of configurations and objects for each protocol variant.

    SourceEth - Native chain token cannot be used as source token in Delta.
  • UnsupportedSide - BUY is not supported by Delta yet.

  • PricingError - internal oracle failed to provide a price.

  • GasCostExceedsTradeAmount - estimated value paid for gas is bigger than trade amount.

  • srcToken*

    string

    Source Token Address.

    srcDecimals*

    integer

    Source Token Decimals.

    destToken*

    string

    Destination Token Address. For cross-chain quote - destination token on the destination chain. Supported destination tokens for cross-chain can be obtained from /bridge-info endpoint

    destDecimals*

    integer

    Destination Token Decimals.

    delta

    object?

    Main data structure containing details about the swap and bridge operation. Used to sign and submit a Delta order. See below for details

    market

    object?

    Will return the Market pricing . Included when mode=MARKET, or mode=ALL and delta pricing is not available

    deltaAddress

    string

    Address of the Delta smart contract used to execute the transaction.

    srcToken

    string

    ERC20 token address being sent (source token).

    destToken

    string

    Token address being received . For cross-chain orders, this would be the token received on the source chain and sent to bridge

    srcAmount

    string

    Amount of srcToken to be sent

    destAmount

    string

    Final amount received after all fees. For cross-chain orders, this would be the amount received on the source chain and sent to bridge

    protocolName

    string

    Name of the bridge protocol (e.g., Across, CCTPStandard, StargateTaxi).

    destAmountAfterBridge

    string

    Amount expected after bridging, in destination token units, on the destination chain

    destUSDAfterBridge

    string

    USD value of destAmountAfterBridge.

    estimatedTimeMs

    number

    Estimated transfer time in milliseconds.

    feeToken

    string

    Token address in which the fee is charged (0xeeee... = native token).

    amount

    string

    Fee amount in token’s smallest unit.

    amountInUSD

    string

    Fee value in USD.

    destToken

    string

    Destination token received on the source chain

    destAmount

    string

    Destination amount received on the source chain

    destAmountBeforeFee

    string

    Destination amount received on the source chain before applying fees

    destUSD

    string

    USD equivalent of destAmount.

    bridgeInfo

    BridgeInfo

    Bridge metadata (same structure as above)

    bridge

    Bridge

    Protocol configuration for that bridge (same structure as above)

    Velora SDK
    here
    build a swap transaction
    {
      "delta": {
        "srcToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
        "destToken": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
        "srcAmount": "100000000",
        "destAmount": "41290907243749599",
        "destAmountBeforeFee": "42763539574055205",
        "gasCostUSD": "3.436417",
        "gasCost": "318930",
        "srcUSD": "99.99940000000001",
        "destUSD": "96.3531578668",
        "destUSDBeforeFee": "99.7895748668493",
        "gasCostBeforeFee": "98300",
        "gasCostUSDBeforeFee": "1.0591657900269833",
        "partner": "paraswap.io-staging",
        "partnerFee": 0,
        "hmac": "7c6b4b9d3a7bfed5c29c924f84abe4bce4add7e9"
      },
      "deltaAddress": "0x0000000000bbf5c5fd284e657f01bd000933c96d"
    }
    {
      "delta": {
        "srcToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
        "destToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
        "srcAmount": "10000000",
        "destAmount": "9479298",
        "destAmountBeforeFee": "10000000",
        "gasCostUSD": "0.5206030000",
        "gasCost": "338300",
        "srcUSD": "9.9980900000",
        "destUSD": "9.4774870000",
        "destUSDBeforeFee": "9.9980900000",
        "gasCostBeforeFee": "25000",
        "gasCostUSDBeforeFee": "0.0384722157",
        "partner": "anon",
        "partnerFee": 0,
        "bridge": {
          "outputToken": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
          "protocolData": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002258",
          "scalingFactor": 0,
          "destinationChainId": 8453,
          "protocolSelector": "0x21eaa4cd"
        },
        "bridgeInfo": {
          "protocolName": "Across",
          "destAmountAfterBridge": "9474900",
          "destUSDAfterBridge": "9.473090294099999",
          "estimatedTimeMs": 20000,
          "fees": [
            {
              "amount": "4396",
              "feeToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
              "amountInSrcToken": "4396",
              "amountInUSD": "0.004395160364"
            }
          ]
        },
        "availableBridges": [
          {
            "destToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
            "destAmount": "9479298",
            "destAmountBeforeFee": "10000000",
            "destUSD": "9.4774870000",
            "destUSDBeforeFee": "9.9980900000",
            "gasCostUSD": "0.5206030000",
            "gasCost": "338300",
            "gasCostUSDBeforeFee": "0.0384722157",
            "gasCostBeforeFee": "25000",
            "bridgeParams": [
              {
                "bridgeInfo": {
                  "protocolName": "StargateTaxi",
                  "destAmountAfterBridge": "9405953",
                  "destUSDAfterBridge": "9.404156462977",
                  "estimatedTimeMs": 180828,
                  "fees": [
                    {
                      "feeToken": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
                      "amount": "14777250162456",
                      "amountInSrcToken": "59126",
                      "amountInUSD": "0.0591156504123971"
                    }
                  ]
                },
                "bridge": {
                  "protocolSelector": "0x7ae1d4cb",
                  "destinationChainId": 8453,
                  "outputToken": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
                  "scalingFactor": 0,
                  "protocolData": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c026395860db2d07ee33e05fe50ed7bd583189c7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008d644d0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000d7098bf27180000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000001cdec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
                }
              }
            ]
          },
          {
            "destToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
            "destAmount": "9479298",
            "destAmountBeforeFee": "10000000",
            "destUSD": "9.4774870000",
            "destUSDBeforeFee": "9.9980900000",
            "gasCostUSD": "0.5206030000",
            "gasCost": "338300",
            "gasCostUSDBeforeFee": "0.0384722157",
            "gasCostBeforeFee": "25000",
            "bridgeParams": [
              {
                "bridgeInfo": {
                  "protocolName": "CCTPStandard",
                  "destAmountAfterBridge": "9476819",
                  "destUSDAfterBridge": "9.475008927571",
                  "estimatedTimeMs": 900000,
                  "fees": [
                    {
                      "feeToken": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
                      "amount": "619803340000",
                      "amountInUSD": "0.0025",
                      "amountInSrcToken": "2479"
                    }
                  ]
                },
                "bridge": {
                  "protocolSelector": "0x786b64df",
                  "destinationChainId": 8453,
                  "outputToken": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
                  "scalingFactor": 0,
                  "protocolData": "0x0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007d0"
                }
              },
              {
                "bridgeInfo": {
                  "protocolName": "CCTPFast",
                  "destAmountAfterBridge": "9475819",
                  "destUSDAfterBridge": "9.474009118570999",
                  "estimatedTimeMs": 20000,
                  "fees": [
                    {
                      "feeToken": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
                      "amount": "619803340000",
                      "amountInUSD": "0.0025",
                      "amountInSrcToken": "2479"
                    },
                    {
                      "feeToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
                      "amount": "1000",
                      "amountInSrcToken": "1000",
                      "amountInUSD": "0.000999809"
                    }
                  ]
                },
                "bridge": {
                  "protocolSelector": "0x786b64df",
                  "destinationChainId": 8453,
                  "outputToken": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
                  "scalingFactor": 0,
                  "protocolData": "0x000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e8"
                }
              }
            ]
          },
          {
            "destToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
            "destAmount": "9479298",
            "destAmountBeforeFee": "10000000",
            "destUSD": "9.4774870000",
            "destUSDBeforeFee": "9.9980900000",
            "gasCostUSD": "0.5206030000",
            "gasCost": "338300",
            "gasCostUSDBeforeFee": "0.0384722157",
            "gasCostBeforeFee": "25000",
            "bridgeParams": [
              {
                "bridgeInfo": {
                  "protocolName": "Across",
                  "destAmountAfterBridge": "9474900",
                  "destUSDAfterBridge": "9.473090294099999",
                  "estimatedTimeMs": 20000,
                  "fees": [
                    {
                      "amount": "4396",
                      "feeToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
                      "amountInSrcToken": "4396",
                      "amountInUSD": "0.004395160364"
                    }
                  ]
                },
                "bridge": {
                  "outputToken": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
                  "protocolData": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002258",
                  "scalingFactor": 0,
                  "destinationChainId": 8453,
                  "protocolSelector": "0x21eaa4cd"
                }
              }
            ]
          }
        ],
        "hmac": "9079eea5889a708d7addff1658084bd508fe3798"
      },
      "deltaAddress": "0x76e0ebb8d4c6dccb3fdedab7a3e1c87036719a42"
    }
    {
        "fallbackReason": {
            "errorType": "UnsupportedToken",
            "details": "Token 0xa4bc2b90743294e5e6fd3321a9a131947f7785db is not supported"
        },
        "market": {
            "blockNumber": 21222968,
            "network": 1,
            "srcToken": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
            "srcDecimals": 18,
            "srcAmount": "1000000000000000000",
            "destToken": "0xa4bc2b90743294e5e6fd3321a9a131947f7785db",
            "destDecimals": 9,
            "destAmount": "1106884085431",
            "bestRoute": [
                {
                    "percent": 100,
                    "swaps": [
                        {
                            "srcToken": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
                            "srcDecimals": 18,
                            "destToken": "0xa4bc2b90743294e5e6fd3321a9a131947f7785db",
                            "destDecimals": 9,
                            "swapExchanges": [
                                {
                                    "exchange": "UniswapV2",
                                    "srcAmount": "1000000000000000000",
                                    "destAmount": "1106884085431",
                                    "percent": 100,
                                    "poolAddresses": [
                                        "0x98555273b697fA2b4CF3e009403B5ae31Fd2C7A1"
                                    ],
                                    "data": {
                                        "router": "0xF9234CB08edb93c0d4a4d4c70cC3FfD070e78e07",
                                        "path": [
                                            "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
                                            "0xa4bc2b90743294e5e6fd3321a9a131947f7785db"
                                        ],
                                        "factory": "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f",
                                        "initCode": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f",
                                        "feeFactor": 10000,
                                        "pools": [
                                            {
                                                "address": "0x98555273b697fA2b4CF3e009403B5ae31Fd2C7A1",
                                                "fee": 30,
                                                "direction": false
                                            }
                                        ],
                                        "gasUSD": "5.896714"
                                    }
                                }
                            ]
                        }
                    ]
                }
            ],
            "gasCostUSD": "9.771593",
            "gasCost": "132570",
            "side": "SELL",
            "version": "6.2",
            "contractAddress": "0x6a000f20005980200259b80c5102003040001068",
            "tokenTransferProxy": "0x6a000f20005980200259b80c5102003040001068",
            "contractMethod": "swapExactAmountInOnUniswapV2",
            "partnerFee": 0,
            "srcUSD": "3102.2276074900",
            "destUSD": "3121.4131209154",
            "partner": "paraswap.io",
            "maxImpactReached": false,
            "hmac": "b9c7c2ed6a47c98af2a835184a64db4a50fc2b61"
        }
    }
    {
        "market": {
            "blockNumber": 21222968,
            "network": 1,
            "srcToken": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
            "srcDecimals": 18,
            "srcAmount": "1000000000000000000",
            "destToken": "0xa4bc2b90743294e5e6fd3321a9a131947f7785db",
            "destDecimals": 9,
            "destAmount": "1106884085431",
            "bestRoute": [
                {
                    "percent": 100,
                    "swaps": [
                        {
                            "srcToken": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
                            "srcDecimals": 18,
                            "destToken": "0xa4bc2b90743294e5e6fd3321a9a131947f7785db",
                            "destDecimals": 9,
                            "swapExchanges": [
                                {
                                    "exchange": "UniswapV2",
                                    "srcAmount": "1000000000000000000",
                                    "destAmount": "1106884085431",
                                    "percent": 100,
                                    "poolAddresses": [
                                        "0x98555273b697fA2b4CF3e009403B5ae31Fd2C7A1"
                                    ],
                                    "data": {
                                        "router": "0xF9234CB08edb93c0d4a4d4c70cC3FfD070e78e07",
                                        "path": [
                                            "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
                                            "0xa4bc2b90743294e5e6fd3321a9a131947f7785db"
                                        ],
                                        "factory": "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f",
                                        "initCode": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f",
                                        "feeFactor": 10000,
                                        "pools": [
                                            {
                                                "address": "0x98555273b697fA2b4CF3e009403B5ae31Fd2C7A1",
                                                "fee": 30,
                                                "direction": false
                                            }
                                        ],
                                        "gasUSD": "5.896714"
                                    }
                                }
                            ]
                        }
                    ]
                }
            ],
            "gasCostUSD": "9.771593",
            "gasCost": "132570",
            "side": "SELL",
            "version": "6.2",
            "contractAddress": "0x6a000f20005980200259b80c5102003040001068",
            "tokenTransferProxy": "0x6a000f20005980200259b80c5102003040001068",
            "contractMethod": "swapExactAmountInOnUniswapV2",
            "partnerFee": 0,
            "srcUSD": "3102.2276074900",
            "destUSD": "3121.4131209154",
            "partner": "paraswap.io",
            "maxImpactReached": false,
            "hmac": "b9c7c2ed6a47c98af2a835184a64db4a50fc2b61"
        }
    }
    {
        "errorType": "UnsupportedToken",
        "details": "Token 0xa4bc2b90743294e5e6fd3321a9a131947f7785db is not supported"
    }
    :large_orange_circle: