# Confirm Route

## Confirm Route API

After presenting the best route or all possible routes to the user, and once the user confirms the swap via one of the routes, you need to call this method using the user's selected wallets and the request ID of the chosen route. This will inform Rango that the user has confirmed this route and initiate the swap execution. You can also pass the destination field to set a custom destination for the final output, which can be different from the selected wallets.

{% tabs %}
{% tab title="Typescript (SDK)" %}

```typescript
const confimedRoute = await rango.confirmRoute({
    requestId: "33e0b996-da5e-4922-9fdc-f7206247fc34",
    selectedWallets: {
        "BSC": "0xeae6d42093eae057e770010ffd6f4445f7956613",
        "AVAX_CCHAIN": "0xeae6d42093eae057e770010ffd6f4445f7956613",
    },
    destination: "0x6f33bb1763eebead07cf8815a62fcd7b30311fa3",
})
```

{% endtab %}

{% tab title="Node.js (Axios)" %}

```typescript
const response = await axios.post(
  'https://api.rango.exchange/routing/confirm',
  {
    'requestId': '33e0b996-da5e-4922-9fdc-f7206247fc34',
    'selectedWallets': {
      'BSC': '0xeae6d42093eae057e770010ffd6f4445f7956613',
      'AVAX_CCHAIN': '0xeae6d42093eae057e770010ffd6f4445f7956613'
    },
    'destination': '0x6f33bb1763eebead07cf8815a62fcd7b30311fa3',
  },
  {
    params: {
      'apiKey': 'c6381a79-2817-4602-83bf-6a641a409e32'
    },
    headers: {
      'content-type': 'application/json'
    }
  }
);
```

{% endtab %}

{% tab title="Bash (cURL)" %}

```bash
curl --request POST \
     --url 'https://api.rango.exchange/routing/confirm?apiKey=c6381a79-2817-4602-83bf-6a641a409e32' \
     --header 'content-type: application/json' \
     --data '
{
  "selectedWallets": {
    "BSC": "0xeae6d42093eae057e770010ffd6f4445f7956613",
    "AVAX_CCHAIN": "0xeae6d42093eae057e770010ffd6f4445f7956613"
  },
  "destination": "0x6f33bb1763eebead07cf8815a62fcd7b30311fa3",
  "requestId": "33e0b996-da5e-4922-9fdc-f7206247fc34"
}
'
```

{% endtab %}
{% endtabs %}

{% embed url="<https://rango-api.readme.io/reference/confirmswap>" %}
Route Confirmation Swagger
{% endembed %}

### Confirm Route Request&#x20;

{% tabs %}
{% tab title="API Definition" %}

* **`requestId`** <mark style="color:red;">\*</mark> String
  * Description: The unique ID for the selected route. (In the response of best route or best routes endpoints.)
* **`selectedWallets`** <mark style="color:red;">\*</mark>  Object
  * Description: The list of user's selected wallets for this swap. For a multi-step swap, we need to have wallet address of every blockchain in the route. (Blockchain to wallet address map)
* **`destination`** String
  * Description: Custom wallet address destination for the final output of the route. (If you want to set a wallet address different than selected wallet addresses)&#x20;
    {% endtab %}

{% tab title="SDK Models (Typescript)" %}

```typescript
export type ConfirmRouteRequest = {
  requestId: string
  selectedWallets: { [key: string]: string }
  destination?: string
}
```

{% endtab %}
{% endtabs %}

### Confirm Route Response&#x20;

{% tabs %}
{% tab title="API Definition" %}

* **`ok`**
  * Description: If true, route confirmation was successful and error message is null.
* **`result`**
  * Description: The updated route.
* **`error`**
  * Description: Error occurred during confirming the route.
* **`errorCode`**
  * Description: Error code shows the type of error.
* **`traceId`**
  * Description: Trace Id helps Rango support team to trace the issue.
    {% endtab %}

{% tab title="SDK Models (Typescript)" %}

```typescript
export type ConfirmRouteResponse = {
  ok: boolean
  result: Omit<BestRouteResponse, 'error' | 'errorCode' | 'traceId'> | null
  error: string | null
  errorCode: string | null
  traceId: number | null
}

export type BestRouteResponse = {
  requestId: string
  requestAmount: string
  from: Asset
  to: Asset
  result: SimulationResult | null
  validationStatus: BlockchainValidationStatus[]
  diagnosisMessages: string[]
  missingBlockchains: string[]
  walletNotSupportingFromBlockchain: boolean
  error: string | null
  errorCode: number | null
  traceId: number | null
}

export type Asset = {
  blockchain: string
  address: string | null
  symbol: string
}

export type SimulationResult = {
  outputAmount: string
  resultType: RoutingResultType
  swaps: SwapResult[]
}

export enum RoutingResultType {
  OK = 'OK',
  HIGH_IMPACT = 'HIGH_IMPACT',
  NO_ROUTE = 'NO_ROUTE',
  INPUT_LIMIT_ISSUE = 'INPUT_LIMIT_ISSUE',
  HIGH_IMPACT_FOR_CREATE_TX = 'HIGH_IMPACT_FOR_CREATE_TX',
}

export type SwapResult = {
  swapperId: string
  swapperLogo: string
  swapperType: SwapperType
  swapChainType: 'INTER_CHAIN' | 'INTRA_CHAIN'
  from: SwapResultAsset
  to: SwapResultAsset
  toAmount: string
  fromAmount: string
  fromAmountMaxValue: string | null
  fromAmountMinValue: string | null
  fromAmountPrecision: string | null
  fromAmountRestrictionType: AmountRestrictionType
  routes: SwapRoute[] | null
  internalSwaps: SwapResult[] | null
  fee: SwapFee[]
  estimatedTimeInSeconds: number
  timeStat: TimeStat | null
  includesDestinationTx: boolean
  maxRequiredSign: number
  recommendedSlippage: RecommendedSlippage | null
  warnings: string[]
}

export type SwapperType = 'BRIDGE' | 'DEX' | 'AGGREGATOR' | 'OFF_CHAIN'

export type SwapResultAsset = {
  blockchain: string
  address: string | null
  symbol: string
  logo: string
  blockchainLogo: string
  decimals: number
  usdPrice: number | null
}

export type AmountRestrictionType = 'INCLUSIVE' | 'EXCLUSIVE'

export type SwapRoute = {
  nodes: SwapSuperNode[] | null
}

export type SwapFee = {
  name: string
  expenseType: ExpenseType
  asset: Asset
  amount: string
  price: number | null
  meta: EVMFeeMeta | null
}

export type ExpenseType =
  | 'FROM_SOURCE_WALLET'
  | 'DECREASE_FROM_OUTPUT'
  | 'FROM_DESTINATION_WALLET'

export type EVMFeeMeta = {
  type: "EvmNetworkFeeMeta",
  gasLimit: string,
  gasPrice: string
}

export type TimeStat = {
  min: number
  avg: number
  max: number
}

export type BlockchainValidationStatus = {
  blockchain: string
  wallets: WalletValidationStatus[]
}

export type WalletValidationStatus = {
  address: string
  addressIsValid: boolean
  requiredAssets: WalletRequiredAssets[]
  validResult: boolean
}

export type WalletRequiredAssets = {
  asset: Asset
  requiredAmount: Amount
  currentAmount: Amount
  ok: boolean
  reason: 'FEE' | 'FEE_AND_INPUT_ASSET' | 'INPUT_ASSET'
}

export type Amount = {
  amount: string
  decimals: number
}
```

{% endtab %}

{% tab title="Sample Response" %}

```json
{
  "ok":true,
  "error":null,
  "errorCode":null,
  "traceId":null,
  "result":{
    "from":{
      "blockchain":"BSC",
      "symbol":"BNB",
      "address":null
    },
    "to":{
      "blockchain":"AVAX_CCHAIN",
      "symbol":"AVAX",
      "address":null
    },
    "requestAmount":"1",
    "requestId":"a4abd8bc-e743-4fca-ae0e-5f781d9cdd0a",
    "result":{
      "outputAmount":"22.750365244468519211",
      "swaps":[
        {
          "swapperId":"BSCPancakeV3",
          "swapperLogo":"https://raw.githubusercontent.com/rango-exchange/assets/main/swappers/Pancake/icon.svg",
          "swapperType":"DEX",
          "from":{
            "symbol":"BNB",
            "logo":"https://rango.vip/tokens/ALL/BNB.png",
            "blockchainLogo":"https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/BSC/icon.svg",
            "address":null,
            "blockchain":"BSC",
            "decimals":18,
            "usdPrice":493.75
          },
          "to":{
            "symbol":"USDC",
            "logo":"https://rango.vip/i/e4x0s8",
            "blockchainLogo":"https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/BSC/icon.svg",
            "address":"0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
            "blockchain":"BSC",
            "decimals":18,
            "usdPrice":1.002
          },
          "fromAmount":"1",
          "fromAmountPrecision":null,
          "fromAmountMinValue":null,
          "fromAmountMaxValue":null,
          "fromAmountRestrictionType":null,
          "toAmount":"492.564957917070936228",
          "fee":[
            {
              "asset":{
                "blockchain":"BSC",
                "symbol":"BNB",
                "address":null
              },
              "expenseType":"DECREASE_FROM_OUTPUT",
              "amount":"0.0015",
              "name":"Rango Fee",
              "price":493.75
            },
            {
              "asset":{
                "blockchain":"BSC",
                "symbol":"BNB",
                "address":null
              },
              "expenseType":"FROM_SOURCE_WALLET",
              "amount":"0.000406595200000000",
              "name":"Network Fee",
              "meta":{
                "type":"EvmNetworkFeeMeta",
                "gasLimit":"369632",
                "gasPrice":"1100000000"
              },
              "price":493.75
            }
          ],
          "estimatedTimeInSeconds":30,
          "swapChainType":"INTER_CHAIN",
          "routes":[
            {
              "nodes":[
                {
                  "nodes":[
                    {
                      "marketName":"BSCPancakeV3",
                      "marketId":"BSCPancakeV3",
                      "percent":1.0,
                      "pools":[
                        "0xf2688fb5b81049dfb7703ada5e770543770612c4"
                      ],
                      "inputAmount":"998500000000000000",
                      "outputAmount":"492564957917070936228"
                    }
                  ],
                  "from":"BNB",
                  "fromLogo":"",
                  "fromAddress":null,
                  "fromBlockchain":"BSC",
                  "to":"USDC",
                  "toLogo":"",
                  "toAddress":"0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
                  "toBlockchain":"BSC"
                }
              ]
            }
          ],
          "recommendedSlippage":null,
          "warnings":[
            
          ],
          "timeStat":null,
          "includesDestinationTx":false,
          "internalSwaps":null,
          "maxRequiredSign":1
        },
        {
          "swapperId":"XY Finance",
          "swapperLogo":"https://raw.githubusercontent.com/rango-exchange/assets/main/swappers/XY Finance/icon.svg",
          "swapperType":"BRIDGE",
          "from":{
            "symbol":"USDC",
            "logo":"https://rango.vip/i/e4x0s8",
            "blockchainLogo":"https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/BSC/icon.svg",
            "address":"0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
            "blockchain":"BSC",
            "decimals":18,
            "usdPrice":1.002
          },
          "to":{
            "symbol":"USDC",
            "logo":"https://rango.vip/i/j9eYAa",
            "blockchainLogo":"https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/AVAX_CCHAIN/icon.svg",
            "address":"0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
            "blockchain":"AVAX_CCHAIN",
            "decimals":6,
            "usdPrice":1.0
          },
          "fromAmount":"492.564957917070936228",
          "fromAmountPrecision":null,
          "fromAmountMinValue":"0.215999999999999992006394222698872908949851989746093750",
          "fromAmountMaxValue":"4245.273839",
          "fromAmountRestrictionType":"EXCLUSIVE",
          "toAmount":"492.343221",
          "fee":[
            {
              "asset":{
                "blockchain":"BSC",
                "symbol":"USDC",
                "address":"0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d"
              },
              "expenseType":"DECREASE_FROM_OUTPUT",
              "amount":"0.2217364957917070936228",
              "name":"Swapper Fee",
              "price":1.002
            },
            {
              "asset":{
                "blockchain":"BSC",
                "symbol":"BNB",
                "address":null
              },
              "expenseType":"FROM_SOURCE_WALLET",
              "amount":"0.000205356800000000",
              "name":"Network Fee",
              "meta":{
                "type":"EvmNetworkFeeMeta",
                "gasLimit":"186688",
                "gasPrice":"1100000000"
              },
              "price":493.75
            }
          ],
          "estimatedTimeInSeconds":600,
          "swapChainType":"INTRA_CHAIN",
          "routes":null,
          "recommendedSlippage":null,
          "warnings":[
            
          ],
          "timeStat":null,
          "includesDestinationTx":false,
          "internalSwaps":null,
          "maxRequiredSign":1
        },
        {
          "swapperId":"AvaxChainV3",
          "swapperLogo":"https://raw.githubusercontent.com/rango-exchange/assets/main/swappers/UniSwapV2/icon.svg",
          "swapperType":"DEX",
          "from":{
            "symbol":"USDC",
            "logo":"https://rango.vip/i/j9eYAa",
            "blockchainLogo":"https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/AVAX_CCHAIN/icon.svg",
            "address":"0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
            "blockchain":"AVAX_CCHAIN",
            "decimals":6,
            "usdPrice":1.0
          },
          "to":{
            "symbol":"AVAX",
            "logo":"https://api.rango.exchange/tokens/AVAX/AVAX.png",
            "blockchainLogo":"https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/AVAX_CCHAIN/icon.svg",
            "address":null,
            "blockchain":"AVAX_CCHAIN",
            "decimals":18,
            "usdPrice":21.56
          },
          "fromAmount":"492.343221",
          "fromAmountPrecision":null,
          "fromAmountMinValue":null,
          "fromAmountMaxValue":null,
          "fromAmountRestrictionType":null,
          "toAmount":"22.750365244468519211",
          "fee":[
            {
              "asset":{
                "blockchain":"AVAX_CCHAIN",
                "symbol":"AVAX",
                "address":null
              },
              "expenseType":"FROM_SOURCE_WALLET",
              "amount":"0.010380480000000000",
              "name":"Network Fee",
              "meta":{
                "type":"EvmNetworkFeeMeta",
                "gasLimit":"377472",
                "gasPrice":"27500000000"
              },
              "price":21.56
            }
          ],
          "estimatedTimeInSeconds":30,
          "swapChainType":"INTER_CHAIN",
          "routes":[
            {
              "nodes":[
                {
                  "nodes":[
                    {
                      "marketName":"AvaxChainV3",
                      "marketId":"AvaxChainV3",
                      "percent":1.0,
                      "pools":[
                        "0xfae3f424a0a47706811521e3ee268f00cfb5c45e"
                      ],
                      "inputAmount":"492343221",
                      "outputAmount":"22750365244468519211"
                    }
                  ],
                  "from":"USDC",
                  "fromLogo":"",
                  "fromAddress":"0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
                  "fromBlockchain":"AVAX_CCHAIN",
                  "to":"AVAX",
                  "toLogo":"",
                  "toAddress":null,
                  "toBlockchain":"AVAX_CCHAIN"
                }
              ]
            }
          ],
          "recommendedSlippage":null,
          "warnings":[
            
          ],
          "timeStat":null,
          "includesDestinationTx":false,
          "internalSwaps":null,
          "maxRequiredSign":1
        }
      ],
      "resultType":"OK"
    },
    "validationStatus":[
      {
        "blockchain":"BSC",
        "wallets":[
          {
            "address":"0xccf3d872b01762aba74b41b1958a9a86ee8f34a3",
            "requiredAssets":[
              {
                "asset":{
                  "blockchain":"BSC",
                  "symbol":"BNB",
                  "address":null
                },
                "requiredAmount":{
                  "amount":"1000611952000000000",
                  "decimals":18
                },
                "currentAmount":{
                  "amount":"54842791773041088",
                  "decimals":18
                },
                "reason":"FEE_AND_INPUT_ASSET",
                "ok":false
              }
            ],
            "addressIsValid":true,
            "validResult":true
          }
        ]
      },
      {
        "blockchain":"AVAX_CCHAIN",
        "wallets":[
          {
            "address":"0xccf3d872b01762aba74b41b1958a9a86ee8f34a3",
            "requiredAssets":[
              {
                "asset":{
                  "blockchain":"AVAX_CCHAIN",
                  "symbol":"AVAX",
                  "address":null
                },
                "requiredAmount":{
                  "amount":"10380480000000000",
                  "decimals":18
                },
                "currentAmount":{
                  "amount":"1101940113660760969",
                  "decimals":18
                },
                "reason":"FEE",
                "ok":true
              }
            ],
            "addressIsValid":true,
            "validResult":true
          }
        ]
      }
    ],
    "walletNotSupportingFromBlockchain":false,
    "missingBlockchains":[
      
    ],
    "diagnosisMessages":[
      
    ]
  }
}
```

{% endtab %}
{% endtabs %}
