API Reference
Source Code
Caching & Liveness
Testnet Across API
API Endpoints
Returns suggested fees based inputToken+outputToken, originChainId, destinationChainId, and amount. Also includes data used to compute the fees.
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.
0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2Address 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.
0x4200000000000000000000000000000000000006Chain ID where the specified token or inputToken exists.
1The desired destination chain ID of the bridge transfer.
10Amount 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.
1000000000000000000Recipient 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
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
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
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
Suggested fees for the transaction and supporting data
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.
1708047000Is the input amount below the minimum transfer amount.
falseThe block used associated with this quote, used to compute lpFeePct.
19237525The contract address of the origin SpokePool.
0xe35e9842fceaCA96570B734083f4a58e8F7C5f2AThe 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.
0x428AB2BA90Eba0a4Be7aF34C9Ac451ab061AC010The 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.
10The 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.
4The 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.
Invalid input
Unexpected error within the API
Returns transfer limits for inputToken+outputToken, originChainId, and destinationChainId.
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.
0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2Address 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.
0x4200000000000000000000000000000000000006Chain ID where the specified token or inputToken exists.
1The intended destination chain ID of the bridge transfer.
10Transfer limits
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.
7799819The maximum deposit size in the tokens' units. Note: The formatting of this number is the same as minDeposit.
22287428516241The 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.
201958902363The 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.
2045367713809The 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.
2045367713809Invalid input
Unexpected error within the API
Returns available routes based on specified parameters.
Chain ID of the originating chain.
1Chain ID of the destination chain.
10Origin chain address of token contract to transfer.
Example: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2Destination chain address of token contract to receive.
Example: 0x4200000000000000000000000000000000000006
0x4200000000000000000000000000000000000006List of available routes
Chain ID of the originating chain.
1Chain ID of the destination chain.
10Origin chain address of token contract to transfer.
0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2Destination chain address of token contract to receive.
0x4200000000000000000000000000000000000006The symbol of the origin token to transfer.
WETHThe symbol of the destination token to receive.
WETHInvalid input
Unexpected error within the API
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.
Chain Id where the deposit originated from.
137The deposit id that is emitted from the DepositV3 function call as a V3FundsDeposited event.
1349975Lifecycle of a transaction
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 FilledV3Relay 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
depositoron theoriginChainIdin the next batch of repayments. - refunded: Deposit has expired and the depositor has been successfully refunded on the originChain.
- slowFillRequested: Deposit has been made but no relayer has filled the intent, therefore Across' relayer fills the user’s intent without requiring another relayer to front the capital. It's important that the input token and output token are the same asset here.
The transaction hash of the fill transaction on the destination chain. This field is only present when fillStatus is filled.
The chain id where the fill transaction will take place.
Lifecycle of a transaction
Last updated