Get a gasless quote
Quote endpoint for gasless swaps. Returns a single quote object plus the EIP-712 signing steps (`swapTxns[]`) the wallet must sign.
For a working example, visit the Hyperliquid Withdrawals Guide.
Authorization
bearerAuth API key for authentication.
In: header
Query Parameters
HyperCore-side token address. Use 0x2222…2222 for HYPE, 0x2000000000000000000000000000000000000000 for USDC-spot, 0x2100000000000000000000000000000000000000 for USDC-perps, 0x200000000000000000000000000000000000010C for USDT (USDT-SPOT).
Logical origin chain. 1337 for HyperCore-origin withdrawals.
1337Destination token address. 0x000…000 denotes the chain's native token (e.g. ETH on chain 1, HYPE on chain 999).
Destination chain id. 999 is HyperEVM (same-token routes are passthrough). Any Across-supported EVM chain is valid.
Amount in the input token's smallest unit, as an integer string. With tradeType=exactInput, this is the exact amount taken from the user's HyperCore balance.
Trade execution strategy. exactInput is the default and only shape exercised in the canonical test suite.
"exactInput""exactInput" | "exactOutput"EVM address that will sign every step. The server uses this as the EIP-712 signer when verifying signatures on submit. Must match the connected wallet.
Address that receives the output on the destination chain. EVM hex address.
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):
- B2B or A2B routes:
- refundOnOrigin defaults to true
- Refunds occur on the origin chain
- Destination refunds do not apply here
- 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.
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.
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. For example, 1% appFee would use 0.01 as a value here.
EVM address that receives the app fee on the destination chain. Required if appFee > 0.
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://across.to/api/swap/gasless?inputToken=0x2100000000000000000000000000000000000000&originChainId=1337&outputToken=0x0000000000000000000000000000000000000000&destinationChainId=1&amount=100000000&tradeType=exactInput&depositor=0xA4d353BBc130cbeF1811f27ac70989F9d568CeAB&recipient=0xA4d353BBc130cbeF1811f27ac70989F9d568CeAB"{
"depositId": "11693314882668005655414399642742358739341528431815608912897637273556066525329",
"crossSwapType": "bridgeableToBridgeable",
"amountType": "exactInput",
"inputToken": {
"decimals": 8,
"symbol": "USDC-SPOT",
"address": "0x2000000000000000000000000000000000000000",
"chainId": 1337
},
"outputToken": {
"decimals": 6,
"symbol": "USDC",
"address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"chainId": 42161
},
"refundToken": {
"decimals": 6,
"symbol": "USDC",
"address": "0xb88339CB7199b77E23DB6E890353E22632Ba630f",
"chainId": 999
},
"inputAmount": "1000000000",
"maxInputAmount": "1000000000",
"expectedOutputAmount": "9994700",
"minOutputAmount": "9994700",
"expectedFillTime": 4,
"approvalTxns": null,
"checks": {
"allowance": {
"token": "0x2000000000000000000000000000000000000000",
"spender": "0x0000000000000000000000000000000000000000",
"actual": "0",
"expected": "0"
},
"balance": {
"token": "0x2000000000000000000000000000000000000000",
"actual": "0",
"expected": "1000000000"
}
},
"steps": {
"originSwap": null,
"bridge": {
"provider": "sponsored-cctp"
},
"destinationSwap": null
},
"fees": {
"total": {
"amount": "0",
"amountUsd": "0.0"
},
"totalMax": {
"amount": "0",
"amountUsd": "0.0"
},
"originGas": {
"amount": "0",
"token": {
"chainId": 999,
"address": "0x0000000000000000000000000000000000000000",
"decimals": 18,
"symbol": "HYPE"
}
},
"submission": {
"amount": "5300",
"token": {
"address": "0xb88339CB7199b77E23DB6E890353E22632Ba630f",
"chainId": 999,
"symbol": "USDC",
"decimals": 6
},
"recipient": "0x07aE8551Be970cB1cCa11Dd7a11F47Ae82e70E67",
"valueUsd": 0.00529841,
"sponsored": false
}
},
"swapTx": {
"ecosystem": "evm-gasless",
"chainId": 999,
"to": "0x10D8b8DaA26d307489803e10477De69C0492B610"
},
"swapTxns": [
{
"stepId": "hypercore-transfer",
"ecosystem": "hypercore",
"chainId": 1337,
"to": "0x2000000000000000000000000000000000000000"
},
{
"stepId": "gasless-auth",
"ecosystem": "evm-gasless",
"chainId": 999,
"to": "0x10D8b8DaA26d307489803e10477De69C0492B610"
}
],
"quoteExpiryTimestamp": 1779287711,
"id": "qvxmd-1779284191902-df1eb4e05240"
}{
"type": "AcrossApiError",
"code": "AMOUNT_TOO_HIGH",
"status": 400,
"message": "Amount is higher than available liquidity. Max amount is 716928.917387 USDC.",
"id": "vgcwv-1779284191168-cae95d247531"
}{
"type": "AcrossApiError",
"code": "FORBIDDEN_API_KEY",
"status": 403,
"message": "Invalid or missing API key"
}{
"type": "AcrossApiError",
"code": "INTERNAL_SERVER_ERROR",
"status": 500,
"message": "Internal server error"
}Create persistent deposit addresses POST
Returns a persistent, infinite-TTL deposit address. The same request parameters always resolve to the same address, so you can request it once and reuse it. Requires an API key with the `deposit-address` permission (Bearer auth). The supported destination is currently only `USDC-SPOT` on HyperCore, delivered to an EVM recipient address. You don't need to hardcode which chains you can deposit from (input chains), the API response will include that information in the `supportedInputs` field including the input token to send there, and that route's min/max limits.
Submit a signed gasless withdrawal POST
Submit the EIP-712 signatures from `GET /swap/gasless`. Returns a `depositId`. Pass `swapTx` and `swapTxns[]` through from the quote unchanged and include a signature in `signaturesByStepId` for **every** step in `swapTxns[]`.