API Reference

Source Code

The API is designed to be run serverlessly (without storing state) and is a wrapper on top of the SDKarrow-up-right. See full implementation herearrow-up-right.

circle-check

Pick the Correct API for your Use Case

Aspect
Swap API
Suggested-Fees API

Output

Executable calldata for the transaction

Quote data only (requires dev assembly)

Swap Handling

Full swap-bridge-swap support (any → any)

Only bridgeable → bridgeable

App Fee Handling

Set app fee percentage and recipient using query parameters

Requires extra embedded action to charge fees

Use Cases

Should be default for integrators (wallets, dApps, aggregators)

Niche: teams wanting to control their own swap infra or manage custom swap routing

Caching & Liveness

Consumers of Across APIs are requested not to cache API responses, specially the /swap/approval and /suggested-fees endpoints.

The Across API serves data that is derived from the onchain state of the Across contracts and relayer bots. The onchain state is subject to change each block, and cached data can quickly become invalid as a result.

The exception is the /deposit/status endpoint which is implemented in this stateful repositoryarrow-up-right because it relies on an indexing solution.

circle-exclamation

Testnet Across API

Please ensure that you use https://testnet.across.to/api as the URL to access the endpoints given below on the testnet. You can use the API on testnet for these supported chains.

Testnet fills typically take around 1 minute, significantly slower than mainnet's 2 second fills. This is because testnet lacks the economic incentives and relayer competition that drive mainnet's performance and reliability. We also recommend users to perform relatively smaller deposits (~$10) as relayer settlement does not occur on the testnet and unfilled deposits are not automatically refunded.

Therefore we only recommend you to use testnet API to ensure your implementation of the API is correct and then switch to mainnet API and experience Across in it's true form.


API Endpoints

Bridge and Swap with Swap API

circle-info

Swap API now supports slippage=auto .

The slippage parameter can be configured as either:

  • auto (default): The Swap API automatically determines an optimal slippage value.

  • A numerical value: Must be a decimal between 0 and 1, representing the percentage. For example, to allow 0.5% slippage, set:

When a numerical slippage value is provided, it is applied evenly across both origin and destination respectively. For example, a value of 0.01 (1% total slippage) results in 0.5% slippage on origin chain and destination chain respectively.

Note: If swap only happens on origin or destination chain (and not both), then full slippage will be applied. Example - a value of 0.01 (1% total slippage) results in 1% slippage only, when there is only an origin swap or only a destination swap.

Get swap approval data

get
/swap/approval

Returns data required to execute a crosschain swap. If the input token requires approval, approvalTxns will be included in the response.

Query parameters
tradeTypestring · enumRequired

Defines the type of trade execution strategy used in a swap or bridge request. Each trade type specifies how input and output token amounts are determined and how associated fees are handled. Here are the tradeTypes:

  • exactInput: Use this when you want to bridge or swap a fixed amount of your inputToken. You define the exact quantity of tokens to send, and the system calculates the amount of outputToken you'll receive after all fees are deducted. If your input isn't sufficient to cover the transaction fees, the request will fail.
  • minOutput: Use this when you need to receive at least a certain amount of the outputToken. You set the minimum output you're willing to accept, and the system calculates the necessary input amount, including fees and slippage. Due to price slippage, the final amount you receive will be at least your specified minimum but could be slightly more. This is especially useful for simple swaps without subsequent crosschain actions.
  • exactOutput: Use this when you need to receive a precise amount of the destination token. You specify the exact output you require, and the system calculates the total input needed to guarantee that amount. If market conditions prevent the system from delivering that exact amount, the entire transaction is cancelled, and your funds are refunded. This is recommended for multi-step transactions, like providing an exact amount of an ERC20 token to a minting contract.
Default: exactInputPossible values:
amountstringRequired

Required amount is in inputToken if tradeType=exactInput otherwise amount is in outputToken.

Example: 1000000
inputTokenstringRequired

Address of the input token on the origin chain.

Example: 0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85
outputTokenstringRequired

Address of the output token on the destination chain.

Example: 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1
originChainIdintegerRequired

Chain ID of the origin chain.

Example: 10
destinationChainIdintegerRequired

Chain ID of the destination chain.

Example: 42161
depositorstringRequired

Address of the depositor initiating the swap.

Example: 0xA4d353BBc130cbeF1811f27ac70989F9d568CeAB
recipientstringOptional

Address of the account receiving the output token. Defaults to depositor if not provided.

Example: 0xA4d353BBc130cbeF1811f27ac70989F9d568CeAB
appFeenumberOptional

Enables integrators to collect a customizable fee in the output token, sent to a designated address on the destination chain. appFee is expressed in percentage with value ranging between 0 and 1.

Example: 0.01
appFeeRecipientstringOptional

Address of the account receiving the app fees. Must be defined if you are also defining appFee.

Example: 0xA4d353BBc130cbeF1811f27ac70989F9d568CeAB
integratorIdstringOptional

2-byte hex-string that identifies the integrator. E.g., "0xdead".

Example: 0xdead
refundAddressstringOptional

Address to receive refunds. Defaults to depositor if not provided.

Default: 0xDEPOSITOR_ADDRESS
refundOnOriginbooleanOptional

For routes that include a destination swap (bridgeableToAny or anyToAny), destination refunds are the default behavior unless refundOnOrigin=true is explicitly set when calling the Swap API. Across determines refund behavior based on the route type (when refundOnOrigin is NOT explicitly set):

  1. B2B or A2B routes:
  • refundOnOrigin defaults to true
  • Refunds occur on the origin chain
  • Destination refunds do not apply here
  1. B2A or A2A routes
  • refundOnOrigin defaults to false
  • Refunds occur on the destination chain

If an explicit refundOnOrigin value is provided, that value is always respected. If a refund occurs, the address that receives the refunded funds is determined using the following priority order: 1. refundAddress (if explicitly specified) 2. recipient (if specified) 3. depositor (fallback) This applies to both origin and destination refunds.

Default: true
slippagestring · float | stringOptional

Slippage tolerance percentage can be set to auto (default) or a numerical value. Numerical value must be between 0 and 1 representing corresponding percentage. So if you want slippage to be 0.5% , you need to pass 0.005 as the value here). If slippage is auto, the Swap API will select the best slippage intelligently and move ahead with the crosschain swap. If slippage is set to a numerical value, for example 0.01 (1% slippage), it divides this value equally for each leg. This means 0.5% slippage for origin and 0.5% slippage for destination.

Default: auto
skipOriginTxEstimationbooleanOptional

Used to define whether you want to calculate the transaction details (swap) on origin chain. Defaults to false.

Default: true
strictTradeTypebooleanOptional

Used to define whether you want to strictly follow the defined tradeType. Defaults to true.

Default: true
excludeSourcesstring[]Optional

Used to define the sources you want to exclude from the crosschain swap action. Defaults to an empty array. Available sources can be retrieved via /swap/sources endpoint

Default: []
includeSourcesstring[]Optional

Used to define the sources you want to include from the crosschain swap action. Defaults to an empty array. Available sources can be retrieved via /swap/sources endpoint

Default: []
Responses
chevron-right
200

Swap approval data returned successfully.

application/json
crossSwapTypestring · enumOptional

The crossSwapType determines how swaps are processed within the system.
It controls:

  • Which swap strategy to use (bridgeable tokens vs. any tokens)
  • How to handle the swap flow (input/output token logic)
  • Which quote-fetching functions to call
  • How responses and errors are formatted
Example: anyToBridgeablePossible values:
amountTypestringOptional

Type of amount specification.

Example: exactInput
inputAmountstringOptional

Required input amount in the smallest unit of the input token.

Example: 1000000
maxInputAmountstringOptional

Maximum amount of input token that may be used.

Example: 1000000
expectedOutputAmountstringOptional

Expected amount of output token.

Example: 467917612181896
minOutputAmountstringOptional

Minimum guaranteed amount of output token.

Example: 464434354522974
expectedFillTimeintegerOptional

Expected time in seconds to complete the swap.

Example: 2
quoteExpiryTimestampnumberOptional

Timestamp when the quote will expire.

Example: 1770679043
idstringOptional

Unique identifier for the swap request.

Example: vqhfb-1770675636494-01dc8983f2fc
get
/swap/approval
circle-info

While integrating HyperCore, please go through the Working with HyperCore guide to ensure your codebase handles the edge cases here properly.

Reach out to us incase you need any help.

Build embedded crosschain swap actions with the Swap API

post
/swap/approval

Use the /swap/approval API to build embedded crosschain actions (e.g., mint, deposit) that execute on the destination chain immediately after a swap. Define an action with its target, functionSignature, and value. For contract calls, provide an args[] array where each parameter can be static or dynamically populated with a token balance by setting populateDynamically: true and specifying the balanceSourceToken. In this example we will transfer the entire balance of a newly swapped token, call the ERC20 transfer function with a static recipient address and a dynamic amount argument flagged for population.

Query parameters
tradeTypestring · enumRequired

Defines the type of trade execution strategy used in a swap or bridge request. Each trade type specifies how input and output token amounts are determined and how associated fees are handled. Here are the tradeTypes:

  • exactInput: Use this when you want to bridge or swap a fixed amount of your inputToken. You define the exact quantity of tokens to send, and the system calculates the amount of outputToken you'll receive after all fees are deducted. If your input isn't sufficient to cover the transaction fees, the request will fail.
  • minOutput: Use this when you need to receive at least a certain amount of the outputToken. You set the minimum output you're willing to accept, and the system calculates the necessary input amount, including fees and slippage. Due to price slippage, the final amount you receive will be at least your specified minimum but could be slightly more. This is especially useful for simple swaps without subsequent crosschain actions.
  • exactOutput: Use this when you need to receive a precise amount of the destination token. You specify the exact output you require, and the system calculates the total input needed to guarantee that amount. If market conditions prevent the system from delivering that exact amount, the entire transaction is cancelled, and your funds are refunded. This is recommended for multi-step transactions, like providing an exact amount of an ERC20 token to a minting contract.
Default: exactInputPossible values:
amountstringRequired

Required amount of output token in smallest unit.

Example: 1000000
inputTokenstringRequired

Address of the input token on the origin chain.

Example: 0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85
outputTokenstringRequired

Address of the output token on the destination chain.

Example: 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1
originChainIdintegerRequired

Chain ID of the origin chain.

Example: 10
destinationChainIdintegerRequired

Chain ID of the destination chain.

Example: 42161
depositorstringRequired

Address of the depositor initiating the swap.

Example: 0xA4d353BBc130cbeF1811f27ac70989F9d568CeAB
recipientstringOptional

Address of the account receiving the output token. Defaults to depositor if not provided.

Example: 0xA4d353BBc130cbeF1811f27ac70989F9d568CeAB
appFeenumberOptional

Enables integrators to collect a customizable fee in the output token, sent to a designated address on the destination chain. appFee is expressed in percentage with value ranging between 0 and 1.

Example: 0.01
appFeeRecipientstringOptional

Address of the account receiving the app fees. Must be defined if you are also defining appFee.

Example: 0xA4d353BBc130cbeF1811f27ac70989F9d568CeAB
integratorIdstringOptional

2-byte hex-string that identifies the integrator. E.g., "0xdead".

Example: 0xdead
refundAddressstringOptional

Address to receive refunds. Defaults to depositor if not provided.

Default: 0xDEPOSITOR_ADDRESS
refundOnOriginbooleanOptional

For routes that include a destination swap (bridgeableToAny or anyToAny), destination refunds are the default behavior unless refundOnOrigin=true is explicitly set when calling the Swap API. Across determines refund behavior based on the route type (when refundOnOrigin is NOT explicitly set):

  1. B2B or A2B routes:
  • refundOnOrigin defaults to true
  • Refunds occur on the origin chain
  • Destination refunds do not apply here
  1. B2A or A2A routes
  • refundOnOrigin defaults to false
  • Refunds occur on the destination chain

If an explicit refundOnOrigin value is provided, that value is always respected. If a refund occurs, the address that receives the refunded funds is determined using the following priority order: 1. refundAddress (if explicitly specified) 2. recipient (if specified) 3. depositor (fallback) This applies to both origin and destination refunds.

Default: true
slippagestring · float | stringOptional

Slippage tolerance percentage can be set to auto (default) or a numerical value. Numerical value must be between 0 and 1 representing corresponding percentage. So if you want slippage to be 0.5% , you need to pass 0.005 as the value here). If slippage is auto, the Swap API will select the best slippage intelligently and move ahead with the crosschain swap. If slippage is set to a numerical value, for example 0.01 (1% slippage), it divides this value equally for each leg. This means 0.5% slippage for origin and 0.5% slippage for destination.

Default: auto
skipOriginTxEstimationbooleanOptional

Used to define whether you want to calculate the transaction details (swap) on origin chain. Defaults to false.

Default: true
strictTradeTypebooleanOptional

Used to define whether you want to strictly follow the defined tradeType.Defaults to true.

Default: true
excludeSourcesstring[]Optional

Used to define the sources you want to exclude from the crosschain swap action. Defaults to an empty array.

Default: true
includeSourcesstring[]Optional

Used to define the sources you want to include from the crosschain swap action. Defaults to an empty array.

Default: true
Body
Responses
chevron-right
200

Swap approval data returned successfully.

application/json
crossSwapTypestring · enumOptional

The crossSwapType determines how swaps are processed within the system.
It controls:

  • Which swap strategy to use (bridgeable tokens vs. any tokens)
  • How to handle the swap flow (input/output token logic)
  • Which quote-fetching functions to call
  • How responses and errors are formatted
Example: bridgeableToAnyPossible values:
amountTypestringOptional

Type of amount specification.

Example: exactInput
inputAmountstringOptional

Required input amount in the smallest unit of the input token.

Example: 1000000
expectedOutputAmountstringOptional

Expected amount of output token.

Example: 263466241499732
minOutputAmountstringOptional

Minimum guaranteed amount of output token.

Example: 260831579075100
expectedFillTimeintegerOptional

Expected time in seconds to complete the swap.

Example: 3
quoteExpiryTimestampnumberOptional

Timestamp when the quote will expire.

Example: 1764640283
idstringOptional

Unique identifier for the swap request.

Example: 6pl4c-1754347045980-2353645c0fb7
post
/swap/approval

Get supported chains for swap operations

get
/swap/chains

Returns a list of all supported blockchains that support crosschain swaps on Across Protocol.

Responses
chevron-right
200

List of supported chains

application/json
get
/swap/chains

Get supported tokens for swap operations

get
/swap/tokens

Returns a list of all supported tokens that support crosschain swaps on Across Protocol. This list is aggregated from multiple sources. It is important for the tokens to be whitelisted by the sources to be available in this API.

Responses
chevron-right
200

List of supported tokens

application/json
get
/swap/tokens

Get supported sources for swap operations

get
/swap/sources

Returns a list of all supported sources that support crosschain swaps on Across Protocol.

Query parameters
chainIdall ofOptional

Chain ID of the chain to get supported sources for.

Example: 1
anyOptionalExample: 1
and
integer · enum · min: 1OptionalPossible values:
Responses
chevron-right
200

List of supported sources for crosschain swaps for a given chain

application/json
get
/swap/sources

Tracking Deposits

Track the lifecycle of a deposit

get
/deposit/status

Returns the fill status of a deposit along with a corresponding fill transaction hash if filled.

This endpoint loads data queried by an indexing service that polls relevant events on a 10-second cadence. Users should therefore expect an average latency of 1 to 15 seconds after submitting a deposit to see the status changed in this endpoint. This delay comes from the time it takes for the internal indexing to include the deposit transaction.

Query parameters
originChainIdall ofOptional

Chain Id where the deposit originated from. This must be used in conjunction with depositId. depositTxHash is not required when using this parameter.

Example: {"value":137}
integer · enum · min: 1OptionalPossible values:
depositIdintegerOptional

The deposit id that is emitted from the FundsDeposited event. This must be used in conjunction with originChainId. depositTxnRef is not required when using this parameter.

Example: {"value":1349975}
depositTxnRefstringRequired

The deposit transaction hash that is emitted from the FundsDeposited event. If you are using this, you donot need the other parameters (i.e. originChainId and depositId).

Example: {"value":"0x56a86610aad2a653161c9dd4b4972f948198fd02ae9589cfac1d57bd86a156c1"}
Responses
chevron-right
200

Lifecycle of a Transaction

application/json
statusstring · enumOptional

The status of the deposit.

  • filled: Deposits with this status have been filled on the destination chain and the recipient should have received funds. A FilledRelay event was emitted on the destination chain SpokePool.
  • pending: Deposit has not been filled yet.
  • expired: Deposit has expired and will not be filled. Expired deposits will be refunded to the depositor on the originChainId in the next batch of repayments.
  • refunded: Deposit has expired and the depositor has been successfully refunded on the originChain.
Possible values:
fillTxnRefstringOptional

The transaction hash of the fill transaction on the destination chain. This field is only present when status is filled.

destinationChainIdintegerOptional

The chain id where the fill transaction took place.

originChainIdintegerOptional

The chain id where the deposit transaction originally took place.

depositIdintegerOptional

The deposit Id for the deposit transaction.

depositTxnRefintegerOptional

The deposit transaction hash.

depositRefundTxnRefintegerOptional

The deposit refund transaction hash.

actionsSucceededbooleanOptional

Defines if the actions succeeded.

paginationobjectOptional

The pagination object defines the currentIndex and maxIndex of the returned deposits.

get
/deposit/status
circle-info

For best results, we recommend using the deposit/status endpoint on mainnet only. Our event indexing currently focuses on mainnet, so testnet queries may return incomplete data.

Get all deposits for a given depositor

get
/deposits

Returns all deposits for a given depositor.

This endpoint loads data queried by an indexing service that polls relevant events on a 10-second cadence. Users should therefore expect an average latency of 1 to 15 seconds after submitting a deposit to see the status changed in this endpoint. This delay comes from the time it takes for the internal indexing to include the deposit transaction.

Query parameters
limitintegerOptional

Maximum number of deposits to return in a single request; used for pagination.

Example: {"value":50}
skipintegerOptional

Number of deposits to skip from the beginning of the result set; used for pagination.

Example: {"value":100}
depositorstringOptional

Wallet address of the depositor; filters results to deposits made by this address.

Example: {"value":"0x89f423567c2648BB828c3997f60c47b54f57Fa6e"}
Responses
chevron-right
200

List of deposits for a given depositor

application/json
idintegerOptional

Internal unique identifier for the deposit record.

relayHashstringOptional

Hash of the relay data used to verify and track fill events.

depositIdstringOptional

Unique identifier assigned to the deposit event on the origin chain.

originChainIdintegerOptional

The chain ID where the deposit was originally made.

destinationChainIdintegerOptional

The target chain ID where the fill is expected to complete.

depositorstringOptional

Wallet address of the user who initiated the deposit.

recipientstringOptional

Wallet address intended to receive funds on the destination chain.

inputTokenstringOptional

Address of the token deposited on the origin chain.

inputAmountstringOptional

Amount of inputToken sent in the deposit (in wei).

outputTokenstringOptional

Address of the token expected to be received on the destination chain.

outputAmountstringOptional

Amount of outputToken expected to be received (in wei).

messagestringOptional

Optional arbitrary bytes message encoded with the deposit intent.

messageHashstringOptional

Hash of the message payload.

exclusiveRelayerstringOptional

Address of the relayer granted exclusivity to fill the deposit, if any.

exclusivityDeadlinestring · date-time · nullableOptional

Timestamp indicating when relayer exclusivity expires.

fillDeadlinestring · date-timeOptional

Deadline by which the deposit must be filled before expiring.

quoteTimestampstring · date-timeOptional

Time at which the quote for the deposit was generated.

depositTxHashstringOptional

Transaction hash of the deposit on the origin chain.

depositBlockNumberintegerOptional

Block number where the deposit transaction was confirmed.

depositBlockTimestampstring · date-timeOptional

Timestamp of the block containing the deposit transaction.

statusstring · enumOptional

The status of the deposit fill lifecycle.

Possible values:
depositRefundTxHashstring · nullableOptional

Transaction hash for refund if deposit expired and funds were returned to the depositor.

swapTokenPriceUsdstring · nullableOptional

USD price of the token used in any optional swap.

swapFeeUsdstring · nullableOptional

Fee paid in USD for the optional swap (if performed).

bridgeFeeUsdstringOptional

Fee paid in USD for bridging the funds across chains.

inputPriceUsdstringOptional

USD price of the input token at the time of deposit.

outputPriceUsdstringOptional

USD price of the output token at the time of quote.

fillGasFeestringOptional

Gas cost incurred in native token units during fill.

fillGasFeeUsdstringOptional

USD value of the gas fee for filling the deposit.

fillGasTokenPriceUsdstringOptional

USD price of the gas token on the destination chain at the time of fill.

swapTransactionHashstring · nullableOptional

Transaction hash for any token swap conducted on the destination chain.

swapTokenstring · nullableOptional

Token address used in a swap on the destination chain, if any.

swapTokenAmountstring · nullableOptional

Amount of the swapToken exchanged, if a swap occurred.

relayerstringOptional

Address of the relayer that submitted the fill on the destination chain.

fillBlockTimestampstring · date-timeOptional

Timestamp when the fill was confirmed on the destination chain.

fillTxstringOptional

Transaction hash of the actual fill transaction.

speedupsstring[]Optional

List of transaction hashes representing optional speedup fills.

get
/deposits
200

List of deposits for a given depositor


Bridge with Suggested Fees API

Retrieve suggested fee quote for a deposit.

get
/suggested-fees

Returns suggested fees based inputToken+outputToken, originChainId, destinationChainId, and amount. Also includes data used to compute the fees.

Query parameters
inputTokenstringRequired

Address of token to bridge on the origin chain. Must be used together with parameter outputToken. For ETH, use the wrapped address, like WETH.

Note that the address provided must exist on the specified originChainId below.

Example: {"value":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"}
outputTokenstringRequired

Address of token to bridge on the destination chain. Must be used together with parameter inputToken. For ETH, use the wrapped address, like WETH.

Note that the address provided must exist on the specified destinationChainId below.

Example: {"value":"0x4200000000000000000000000000000000000006"}
originChainIdall ofRequired

Chain ID where the specified token or inputToken exists.

Example: {"value":1}
integer · enum · min: 1OptionalPossible values:
destinationChainIdall ofRequired

The desired destination chain ID of the bridge transfer.

Example: {"value":10}
integer · enum · min: 1OptionalPossible values:
amountinteger · min: 1Required

Amount of the token to transfer.

Note that this amount is in the native decimals of the token. So, for WETH, this would be the amount of human-readable WETH multiplied by 1e18. For USDC, you would multiply the number of human-readable USDC by 1e6.

Example: {"value":"1000000000000000000"}
recipientstringOptional

Recipient of the deposit. Can be an EOA or a contract. If this is an EOA and message is defined, then the API will throw a 4xx error.

Example: 0xc186fA914353c44b2E33eBE05f21846F1048bEda

messagestringOptional

Calldata passed to the recipient if recipient is a contract address. This calldata is passed to the recipient via the recipient's handleAcrossMessage() public function. Example: 0xABC123

relayerstringOptional

Optionally override the relayer address used to simulate the fillRelay() call that estimates the gas costs needed to fill a deposit. This simulation result impacts the returned suggested-fees. The reason to customize the EOA would be primarily if the recipientAddress is a contract and requires a certain relayer to submit the fill, or if one specific relayer has the necessary token balance to make the fill.

Example: 0x428AB2BA90Eba0a4Be7aF34C9Ac451ab061AC010

timestampintegerOptional

The quote timestamp used to compute the LP fees. When bridging with across, the user only specifies the quote timestamp in their transaction. The relayer then determines the utilization at that timestamp to determine the user's fee. This timestamp must be close (within 10 minutes or so) to the current time on the chain where the user is depositing funds and it should be <= the current block timestamp on mainnet. This allows the user to know exactly what LP fee they will pay before sending the transaction.

If this value isn't provided in the request, the API will assume the latest block timestamp on mainnet.

Example: 1653547649

Responses
chevron-right
200

Suggested fees for the transaction and supporting data

application/json
timestampstringOptional

The quote timestamp that was used to compute the lpFeePct. To pay the quoted LP fee, the user would need to pass this quote timestamp to the protocol when sending their bridge transaction.

Example: 1708047000
isAmountTooLowbooleanOptional

Is the input amount below the minimum transfer amount.

Example: false
quoteBlockstringOptional

The block used associated with this quote, used to compute lpFeePct.

Example: 19237525
spokePoolAddressstringOptional

The contract address of the origin SpokePool.

Example: 0xe35e9842fceaCA96570B734083f4a58e8F7C5f2A
exclusiveRelayerstringOptional

The relayer that is suggested to be set as the exclusive relayer for in the depositV3 call for the fastest fill. Note: when set to "0x0000000000000000000000000000000000000000", relayer exclusivity will be disabled. This value is returned in cases where using an exclusive relayer is not recommended.

Example: 0x428AB2BA90Eba0a4Be7aF34C9Ac451ab061AC010
exclusivityDeadlinestringOptional

The suggested exclusivity period (in seconds) the exclusive relayer should be given to fill before other relayers are allowed to take the fill. Note: when set to "0", relayer exclusivity will be disabled. This value is returned in cases where using an exclusive relayer is not reccomended.

Example: 10
expectedFillTimeSecstringOptional

The expected time (in seconds) for a fill to be made. Represents 75th percentile of the 7-day rolling average of times (updated daily). Times are dynamic by origin/destination token/chain for a given amount.

Example: 4
fillDeadlinestringOptional

The recommended deadline (UNIX timestamp in seconds) for the relayer to fill the deposit. After this destination chain timestamp, the fill will revert on the destination chain.

get
/suggested-fees
Curl
circle-info

To use embedded crosschain actions with the /suggested-fees API, please refer to the Legacy Embedded Crosschain Actions guide.

This enables you to build bridge+action flows with the /suggested/fees API.

Retrieve current transfer limits of the system

get
/limits

Returns transfer limits for inputToken+outputToken, originChainId, and destinationChainId.

Query parameters
inputTokenstringRequired

Address of token to bridge on the origin chain. Must be used together with parameter outputToken. For ETH, use the wrapped address, like WETH.

Note that the address provided must exist on the specified originChainId.

Example: {"value":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"}
outputTokenstringRequired

Address of token to bridge on the destination chain. Must be used together with parameter inputToken. For ETH, use the wrapped address, like WETH.

Note that the address provided must match the token address on the specified destinationChainId below.

Example: {"value":"0x4200000000000000000000000000000000000006"}
originChainIdall ofRequired

Chain ID where the specified token or inputToken exists.

Example: {"value":1}
integer · enum · min: 1OptionalPossible values:
destinationChainIdall ofRequired

The intended destination chain ID of the bridge transfer.

Example: {"value":10}
integer · enum · min: 1OptionalPossible values:
Responses
chevron-right
200

Transfer limits

application/json
minDepositstringOptional

The minimum deposit size in the tokens' units. Note: USDC has 6 decimals, so this value would be the number of USDC multiplied by 1e6. For WETH, that would be 1e18.

Example: 7799819
maxDepositstringOptional

The maximum deposit size in the tokens' units. Note: The formatting of this number is the same as minDeposit.

Example: 22287428516241
maxDepositInstantstringOptional

The max deposit size that can be relayed "instantly" on the destination chain. Instantly means that there is relayer capital readily available and that a relayer is expected to relay within seconds to 5 minutes of the deposit.

Example: 201958902363
maxDepositShortDelaystringOptional

The max deposit size that can be relayed with a "short delay" on the destination chain. This means that there is relayer capital available on mainnet and that a relayer will immediately begin moving that capital over the canonical bridge to relay the deposit. Depending on the chain, the time for this can vary. Polygon is the worst case where it can take between 20 and 35 minutes for the relayer to receive the funds and relay. Arbitrum is much faster, with a range between 5 and 15 minutes. Note: if the transfer size is greater than this, the estimate should be between 2-4 hours for a slow relay to be processed from the mainnet pool.

Example: 2045367713809
recommendedDepositInstantstringOptional

The recommended deposit size that can be relayed "instantly" on the destination chain. Instantly means that there is relayer capital readily available and that a relayer is expected to relay within seconds to 5 minutes of the deposit. Value is in the smallest unit of the respective token.

Example: 2045367713809
get
/limits
Curl

Retrieve available routes for transfers

get
/available-routes

Returns available routes based on specified parameters.

Query parameters
originChainIdall ofOptional

Chain ID of the originating chain.

Example: 1
anyOptionalExample: 1
and
integer · enum · min: 1OptionalPossible values:
destinationChainIdall ofOptional

Chain ID of the destination chain.

Example: 10
anyOptionalExample: 10
and
integer · enum · min: 1OptionalPossible values:
originTokenstringOptional

Origin chain address of token contract to transfer.

Example: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

Example: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
destinationTokenstringOptional

Destination chain address of token contract to receive.

Example: 0x4200000000000000000000000000000000000006

Example: 0x4200000000000000000000000000000000000006
Responses
chevron-right
200

List of available routes

application/json
originChainIdstringOptional

Chain ID of the originating chain.

Example: 1
destinationChainIdstringOptional

Chain ID of the destination chain.

Example: 10
originTokenstringOptional

Origin chain address of token contract to transfer.

Example: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
destinationTokenstringOptional

Destination chain address of token contract to receive.

Example: 0x4200000000000000000000000000000000000006
originTokenSymbolstringOptional

The symbol of the origin token to transfer.

Example: WETH
destinationTokenSymbolstringOptional

The symbol of the destination token to receive.

Example: WETH
get
/available-routes

Last updated