Across API
Source code:
The API is designed to be run serverlessly (without storing state) and is a wrapper on top of the SDK. Implementation here.
Caching & Liveness
Users of the Across API are requested to cache results for no longer than 300 seconds.
The Across API serves data that is derived from the on-chain state of the Across contracts and relayer bots. The on-chain state is subject to change each block, and cached data can quickly become invalid as a result.
Calculating Suggested Fees
The API uses the Across SDK under the hood, but offers a convenient way to get suggested fees when placing a Deposit transaction.
Example:
You can visit this example in your browser: Link.
Or curl it on the CLI:
curl "https://across.to/api/suggested-fees?token=0x7f5c764cbc14f9669b88837ca1490cca17c31607&destinationChainId=42161&amount=100000000000"
Note: When filling relays, it is strongly recommended to use the Across SDK relayFeeCalculator. Using the suggested-fees
API endpoint is done at the relayer's own risk.
API Definition
All API calls use https://across.to/api
as the host.
suggested-fees
Path: /suggested-fees
Method: GET
Query Params
Parameter Name | Description | Example |
---|---|---|
token | Address of token contract to transfer. For ETH (or other native tokens, like matic) use, use the wrapped address, like WETH. Note: the address provided can be the token address on any chain. In the unlikely event where two different tokens have the same address on different chains, you can use the optional chainId parameter defined below to indicate which chain should be used. | 0x7f5c764cbc14f9669b88837ca1490cca17c31607 |
destinationChainId | The intended destination of the transfer. | 42161 |
amount | Amount of the token to transfer. Note: this amount is in the native decimals of the token. So, for WETH, this would be the amount of human-readable WETH multiplied by | 100000000000 |
originChainId (optional) | Used to specify which chain where the specified token address exists. Note: this is only needed to disambiguate when there are matching addresses on different chains. Otherwise, this can be inferred by the API. | 10 |
recipient (optional) | The recipient of the deposit. This can be an EOA or a contract. If this is an EOA and | 0xc186fa914353c44b2e33ebe05f21846f1048beda |
message (optional) | Specifies calldata that is passed to the | 0xABC123 |
relayer (optional) | Optionally override the relayer address used to simulate the | 0x428ab2ba90eba0a4be7af34c9ac451ab061ac010 |
timestamp (optional) | 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. | 1653547649 |
Returns a JSON object with the following properties:
Property Name | Description | Example |
---|---|---|
relayFeePct | The percentage of the transfer amount that should go to the relayer as a fee. This is the strongly recommended minimum value to ensure a relayer will perform the transfer under the current network conditions. The value returned in this field is guaranteed to be at least 0.03% in order to meet minimum relayer fee requirements. Note: 1% is represented as | 61762946000000000 |
lpFeePct | The percent of the amount that will go to the LPs as a fee for borrowing their funds.
The formatting of the percentage is the same as | 1252191895805000 |
timestamp | The quote timestamp that was used to compute the To pay the quoted LP fee, the user would need to pass this quote timestamp to the protocol when sending their bridge transaction. | 1646925270 |
Errors:
400: invalid input.
500: an unexpected error within the API.
Querying Limits
The API uses the UMA SDK under the hood, but offers a convenient way to get transfer limits.
Example: Finding limits for bridging USDC from Optimism to Arbitrum.
You can visit this example in your browser: Link
Or curl it on the CLI:
curl "https://across.to/api/limits?token=0x7f5c764cbc14f9669b88837ca1490cca17c31607&destinationChainId=42161"
API Definition
All API calls use https://across.to/api
as the host.
limits
Path: /limits
Method: GET
Query Params
Parameter Name | Description | Example |
---|---|---|
token | Address of token contract to transfer. For ETH (or other native tokens, like matic) use, use the wrapped address, like WETH. Note: the address provided can be the token address on any chain. In the unlikely event where two different tokens have the same address on different chains, you can use the optional chainId parameter defined below to indicate which chain should be used. | 0x7f5c764cbc14f9669b88837ca1490cca17c31607 |
destinationChainId | The intended destination of the transfer. | 42161 |
originChainId (optional) | Used to specify which chain where the specified token address exists. Note: this is only needed to disambiguate when there are matching addresses on different chains. In that case, an arbitrary one will be chosen, so it is recommended that this is always provided. | 10 |
Returns a JSON object with the following properties:
Property Name | Description | Example |
---|---|---|
minDeposit | The minimum deposit size in the tokens' units. Note: USDC has | 7799819 |
maxDeposit | The maximum deposit size in the tokens' units. Note: The formatting of this number is the same as minDeposit. | 22287428516241 |
maxDepositInstant | 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 1-4 minutes of the deposit. | 201958902363 |
maxDepositShortDelay | 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. | 2045367713809 |
Errors:
400: invalid input.
500: an unexpected error within the API.
Finding Available Routes
Example:
You can visit this example in your browser: Link
Or curl it on the CLI:
curl "https://across.to/api/available-routes"
API Definition
All API calls use https://across.to/api
as the host.
available-routes
available-routes
Path: /available-routes
Method: GET
Query Params
Property Name | Description | Example |
---|---|---|
originChainId | The chain ID of the originating chain to a bridge transfer. Note: This is an optional query parameter. This parameter will filter the response JSON based. This filter can be used in addition to additional parameters to create a custom filter. | 1 |
destinationChainId | The chain ID of the destination chain to a bridge transfer. Note: This is an optional query parameter. This parameter will filter the response JSON based. This filter can be used in addition to additional parameters to create a custom filter. | 10 |
originToken | The token address of the originating bridge transfer. Must be a valid ERC-20 token address. Note: This is an optional query parameter. This parameter will filter the response JSON based. This filter can be used in addition to additional parameters to create a custom filter. | 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 |
destinationToken | The token address that funds will be transferred to at the destination chain. Must be a valid ERC-20 token address. Note: This is an optional query parameter. This parameter will filter the response JSON based. This filter can be used in addition to additional parameters to create a custom filter. | 0x4200000000000000000000000000000000000006 |
Returns a JSON array of Objects
with the following properties:
Property Name | Description | Example |
---|---|---|
originChainId | The chain ID of the originating chain to a bridge transfer. | 1 |
destinationChainId | The chain ID of the destination chain to a bridge transfer. | 10 |
originToken | The token address of the originating bridge transfer. Note: this will be a valid ERC-20 token address. | 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 |
destinationToken | The token address that funds will be transferred to at the destination chain. Note: this will be a valid ERC-20 token address. | 0x4200000000000000000000000000000000000006 |
Errors:
400: invalid input.
500: an unexpected error within the API.
Last updated