Discover what you can move
Lists the chains and tokens available to move between, flagging anything unavailable with a reason code; token lists are paginated, chains are not.
Anchor all four of originChainId/originToken/destinationChainId/destinationToken to get the capabilities block (availability, executionOptions, amountTypes, limits, gasTopUp) — availability means selectable, not priceable, and POST /v1/quotes is the binding check.
Authorization
bearerAuth API key for authentication.
In: header
Query Parameters
Sub-collections to include. Defaults to [chains, tokens].
Token address or symbol. Requires originChainId — the same symbol exists on many chains.
Token address or symbol. Requires destinationChainId — the same symbol exists on many chains.
true returns only tokens that can be quoted against the opposite selection: availability.status is available or degraded (a degraded token still quotes). The default, false, returns every offered token -- including incompatible and unavailable ones -- with availability saying which.
Free-text match on token symbol, name, or address.
The operations your client can perform, from which the server derives the funding methods it can execute. Each entry is kind:ecosystem for a wallet operation (for example approve_token:evm), or submit_execution, which carries no ecosystem. Repeat the parameter or comma-separate the values.
Tokens none of them can fund come back with availability.status: unavailable and unsupported_funding_method, so you never surface a route you have no way to execute, and capabilities.executionOptions lists the operations each remaining option needs. Omit it to narrow nothing.
Evaluate every route on this one rail only. Routes with no path on it are dropped, and a rail that is down or degraded reads that way even where another rail still serves the route. One rail per request; a list is rejected. capabilities.limits is not returned with rails.
Ignored. This endpoint no longer reads or returns wallet balances.
Page size per token side. Values above 100 are rejected.
Opaque cursor from pagination.origin.nextCursor, to page through the origin token list.
Keep following nextCursor until it is absent: a page can hold fewer rows than limit, or none, and still continue. If the list changed and the walk cannot continue, the request fails with 409 conflict.cursor_expired -- start again from the first page.
Opaque cursor from pagination.destination.nextCursor, to page through the destination token list.
Keep following nextCursor until it is absent: a page can hold fewer rows than limit, or none, and still continue. If the list changed and the walk cannot continue, the request fails with 409 conflict.cursor_expired -- start again from the first page.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/capabilities?include=chains&include=tokens&originChainId=42161&originToken=0xaf88d065e77c8cC2239327C5EDb3A432268e5831&destinationChainId=8453&destinationToken=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&capabilities.operations=approve_token%3Aevm&capabilities.operations=sign_typed_data%3Aevm&capabilities.operations=submit_execution&limit=5"{
"meta": {
"versionedAt": "2026-10-15T23:27:16.467Z",
"catalogSource": "live",
"balances": "not_requested",
"ranking": "default"
},
"pagination": {
"origin": {
"total": 1
},
"destination": {
"total": 1
}
},
"chains": [
{
"chainId": 1,
"name": "mainnet",
"displayName": "Mainnet",
"namespace": "evm",
"explorerUrl": "https://etherscan.io",
"logoUrl": "https://alexandria.across.to/assets/chains/mainnet.svg",
"nativeToken": {
"symbol": "ETH",
"decimals": 18
},
"publicRpcUrl": "https://eth.llamarpc.com",
"popular": true,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 8453,
"name": "base",
"displayName": "Base",
"namespace": "evm",
"explorerUrl": "https://basescan.org",
"logoUrl": "https://alexandria.across.to/assets/chains/base.svg",
"nativeToken": {
"symbol": "ETH",
"decimals": 18
},
"publicRpcUrl": "https://mainnet.base.org",
"popular": true,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 130,
"name": "unichain",
"displayName": "Unichain",
"namespace": "evm",
"explorerUrl": "https://uniscan.xyz",
"logoUrl": "https://alexandria.across.to/assets/chains/unichain.svg",
"nativeToken": {
"symbol": "ETH",
"decimals": 18
},
"publicRpcUrl": "https://mainnet.unichain.org/",
"popular": true,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 42161,
"name": "arbitrum-one",
"displayName": "Arbitrum One",
"namespace": "evm",
"explorerUrl": "https://arbiscan.io",
"logoUrl": "https://alexandria.across.to/assets/chains/arbitrum.svg",
"nativeToken": {
"symbol": "ETH",
"decimals": 18
},
"publicRpcUrl": "https://arb1.arbitrum.io/rpc",
"popular": true,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 34268394551451,
"name": "solana",
"displayName": "Solana",
"namespace": "solana",
"explorerUrl": "https://solscan.io",
"logoUrl": "https://alexandria.across.to/assets/chains/solana.svg",
"nativeToken": {
"symbol": "SOL",
"decimals": 9
},
"publicRpcUrl": "https://api.mainnet-beta.solana.com",
"popular": true,
"canBeOrigin": true,
"canBeDestination": false
},
{
"chainId": 5042,
"name": "arc",
"displayName": "ARC",
"namespace": "evm",
"explorerUrl": "https://explorer.arc.io",
"logoUrl": "https://alexandria.across.to/assets/chains/arc.svg",
"nativeToken": {
"symbol": "USDC",
"decimals": 6
},
"publicRpcUrl": "https://rpc.arc.network",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 43114,
"name": "avalanche",
"displayName": "Avalanche",
"namespace": "evm",
"explorerUrl": "https://snowscan.xyz",
"logoUrl": "https://alexandria.across.to/assets/chains/avalanche.svg",
"nativeToken": {
"symbol": "AVAX",
"decimals": 18
},
"publicRpcUrl": "https://api.avax.network/ext/bc/C/rpc",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 56,
"name": "bnb-smart-chain",
"displayName": "BNB Smart Chain",
"namespace": "evm",
"explorerUrl": "https://bscscan.com",
"logoUrl": "https://alexandria.across.to/assets/chains/bsc.svg",
"nativeToken": {
"symbol": "BNB",
"decimals": 18
},
"publicRpcUrl": "https://bsc-dataseed1.binance.org",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 1337,
"name": "hypercore",
"displayName": "HyperCore",
"namespace": "evm",
"explorerUrl": "https://app.hyperliquid.xyz/explorer",
"logoUrl": "https://alexandria.across.to/assets/chains/hypercore.svg",
"nativeToken": {
"symbol": "HYPE",
"decimals": 18
},
"publicRpcUrl": "https://api.hyperliquid.xyz",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 999,
"name": "hyperevm",
"displayName": "HyperEVM",
"namespace": "evm",
"explorerUrl": "https://hyperevmscan.io",
"logoUrl": "https://alexandria.across.to/assets/chains/hyperevm.svg",
"nativeToken": {
"symbol": "HYPE",
"decimals": 18
},
"publicRpcUrl": "https://rpc.hyperliquid.xyz/evm",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 57073,
"name": "ink",
"displayName": "Ink",
"namespace": "evm",
"explorerUrl": "https://explorer.inkonchain.com",
"logoUrl": "https://alexandria.across.to/assets/chains/ink.svg",
"nativeToken": {
"symbol": "ETH",
"decimals": 18
},
"publicRpcUrl": "https://rpc-gel.inkonchain.com",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 2337,
"name": "lighter",
"displayName": "Lighter",
"namespace": "evm",
"explorerUrl": "https://app.lighter.xyz/explorer",
"logoUrl": "https://alexandria.across.to/assets/chains/lighter.svg",
"nativeToken": {
"symbol": "LIT",
"decimals": 18
},
"publicRpcUrl": "https://mainnet.zklighter.elliot.ai",
"popular": false,
"canBeOrigin": false,
"canBeDestination": true
},
{
"chainId": 59144,
"name": "linea",
"displayName": "Linea",
"namespace": "evm",
"explorerUrl": "https://lineascan.build",
"logoUrl": "https://alexandria.across.to/assets/chains/linea.svg",
"nativeToken": {
"symbol": "ETH",
"decimals": 18
},
"publicRpcUrl": "https://rpc.linea.build",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 4326,
"name": "megaeth",
"displayName": "MegaETH",
"namespace": "evm",
"explorerUrl": "https://megaeth.blockscout.com",
"logoUrl": "https://alexandria.across.to/assets/chains/megaeth.svg",
"nativeToken": {
"symbol": "ETH",
"decimals": 18
},
"publicRpcUrl": "https://mainnet.megaeth.com/rpc",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 143,
"name": "monad",
"displayName": "Monad",
"namespace": "evm",
"explorerUrl": "https://monadvision.com",
"logoUrl": "https://alexandria.across.to/assets/chains/monad.svg",
"nativeToken": {
"symbol": "MON",
"decimals": 18
},
"publicRpcUrl": "https://rpc-mainnet.monadinfra.com",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 10,
"name": "optimism",
"displayName": "Optimism",
"namespace": "evm",
"explorerUrl": "https://optimistic.etherscan.io",
"logoUrl": "https://alexandria.across.to/assets/chains/optimism.svg",
"nativeToken": {
"symbol": "ETH",
"decimals": 18
},
"publicRpcUrl": "https://mainnet.optimism.io",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 9745,
"name": "plasma",
"displayName": "Plasma",
"namespace": "evm",
"explorerUrl": "https://plasmascan.to",
"logoUrl": "https://alexandria.across.to/assets/chains/plasma.svg",
"nativeToken": {
"symbol": "XPL",
"decimals": 18
},
"publicRpcUrl": "https://rpc.plasma.to",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 137,
"name": "polygon",
"displayName": "Polygon",
"namespace": "evm",
"explorerUrl": "https://polygonscan.com",
"logoUrl": "https://alexandria.across.to/assets/chains/polygon.svg",
"nativeToken": {
"symbol": "POL",
"decimals": 18
},
"publicRpcUrl": "https://polygon-rpc.com",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 4663,
"name": "robinhood",
"displayName": "Robinhood",
"namespace": "evm",
"explorerUrl": "https://robinhoodchain.blockscout.com",
"logoUrl": "https://alexandria.across.to/assets/chains/robinhood.svg",
"nativeToken": {
"symbol": "ETH",
"decimals": 18
},
"publicRpcUrl": "https://rpc.mainnet.chain.robinhood.com",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 4217,
"name": "tempo",
"displayName": "Tempo",
"namespace": "evm",
"explorerUrl": "https://explore.mainnet.tempo.xyz",
"logoUrl": "https://alexandria.across.to/assets/chains/tempo.svg",
"nativeToken": null,
"publicRpcUrl": "https://rpc.tempo.xyz",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 728126428,
"name": "tron",
"displayName": "TRON",
"namespace": "tron",
"explorerUrl": "https://tronscan.org",
"logoUrl": "https://alexandria.across.to/assets/chains/tron.svg",
"nativeToken": {
"symbol": "TRX",
"decimals": 6
},
"publicRpcUrl": "https://api.trongrid.io/jsonrpc",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
},
{
"chainId": 480,
"name": "world-chain",
"displayName": "World Chain",
"namespace": "evm",
"explorerUrl": "https://worldchain-mainnet-explorer.alchemy.com",
"logoUrl": "https://alexandria.across.to/assets/chains/world-chain.svg",
"nativeToken": {
"symbol": "ETH",
"decimals": 18
},
"publicRpcUrl": "https://worldchain-mainnet.g.alchemy.com/public",
"popular": false,
"canBeOrigin": true,
"canBeDestination": true
}
],
"originTokens": [
{
"chainId": 42161,
"address": "0xaf88d065e77c8cc2239327c5edb3a432268e5831",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"logoUrl": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png",
"priceUsd": 0.999608,
"popular": true,
"availability": {
"status": "available"
},
"verified": true
}
],
"destinationTokens": [
{
"chainId": 8453,
"address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"logoUrl": "https://ethereum-optimism.github.io/data/USDC/logo.png",
"priceUsd": 0.999608,
"popular": true,
"availability": {
"status": "available"
},
"verified": true
}
],
"capabilities": {
"amountTypes": [
"exact_input",
"exact_output",
"min_output"
],
"executionOptions": [
{
"requiredOperations": [
{
"kind": "sign_typed_data",
"ecosystem": "evm"
},
{
"kind": "submit_execution"
}
]
},
{
"requiredOperations": [
{
"kind": "approve_token",
"ecosystem": "evm"
},
{
"kind": "sign_typed_data",
"ecosystem": "evm"
},
{
"kind": "submit_execution"
}
]
},
{
"requiredOperations": [
{
"kind": "approve_token",
"ecosystem": "evm"
},
{
"kind": "send_transaction",
"ecosystem": "evm"
}
]
}
],
"gasTopUp": {
"supported": true,
"token": {
"kind": "native",
"chainId": 8453,
"address": "0x0000000000000000000000000000000000000000",
"symbol": "ETH",
"name": "ETH",
"decimals": 18,
"explorerUrl": "https://basescan.org/token/0x0000000000000000000000000000000000000000",
"chain": {
"chainId": 8453,
"name": "base",
"displayName": "Base",
"namespace": "evm",
"explorerUrl": "https://basescan.org",
"logoUrl": "https://alexandria.across.to/assets/chains/base.svg",
"nativeToken": {
"symbol": "ETH",
"decimals": 18
},
"publicRpcUrl": "https://mainnet.base.org"
}
},
"limits": {
"max": {
"amount": "2183978334934917"
},
"validUntil": "2026-11-03T21:07:02.375Z"
}
},
"availability": {
"status": "available"
},
"limits": {
"min": {
"token": {
"chainId": 42161,
"address": "0xaf88d065e77c8cc2239327c5edb3a432268e5831"
},
"amount": "267419",
"amountUsd": "0.27"
},
"max": {
"token": {
"chainId": 42161,
"address": "0xaf88d065e77c8cc2239327c5edb3a432268e5831"
},
"amount": "10000000000000",
"amountUsd": "9995690"
},
"validUntil": "2026-11-03T21:05:03.273Z"
}
}
}{
"error": {
"type": "request",
"code": "request.invalid_param",
"message": "limit must be an integer between 1 and 100",
"param": "limit",
"requestId": "6ovgro9uc2nqktp2uurgto7ino"
}
}{
"code": "unauthenticated",
"message": "the request does not have valid authentication credentials for the operation",
"details": null
}{
"code": "unauthenticated",
"message": "the request does not have valid authentication credentials for the operation",
"details": {}
}{
"error": {
"type": "request",
"code": "request.invalid_json",
"message": "string",
"param": "string",
"requestId": "string",
"details": {
"balanceCheck": {
"chainId": 0,
"tokenAddress": "string",
"requiredAmount": "string",
"observedBalance": "string",
"blockNumber": 0,
"observedAt": "2019-08-24T14:15:22Z"
},
"amountLimits": {
"side": "min",
"amount": "string",
"token": {
"chainId": 0,
"address": "string"
},
"rail": "string",
"observedAt": "2019-08-24T14:15:22Z"
},
"retryWithAllowedAuthorizationTypes": [
"approval"
]
}
}
}API Reference
One API for moving money across chains.
Price a transfer POST
Prices one transfer and returns everything needed to execute it: `destination.amount` (expected) alongside `destination.minAmount` (the guaranteed floor), an itemised fee breakdown, `expiresAt`, and every action to sign or send. A quote is an offer, not a commitment. Complete the returned `nextActions` in order. Only when they end with `submit_execution`, POST the results to `POST /v1/quotes/{orderId}/executions`. A quote funded by an approval and an on-chain `prefunded-store` transaction has no `submit_execution`: that transaction starts the transfer, so there is nothing to POST.