Submit a signed gasless swap
Submits the signatures for a gasless swap quote from GET /swap/gasless. On direct EVM routes the quote returns a single swapTx — sign its typedData and submit { swapTx, signature }. For HyperCore origin routes (e.g. Hyperliquid withdrawals), the quote returns the steps to sign in swapTxns[]. Have the user sign each step, then submit { swapTx, swapTxns, signaturesByStepId }. One signature per step, keyed by the step's stepId. Pass swapTx and swapTxns through from the quote unchanged. Across submits the transactions and covers the gas. Returns a depositId for tracking the deposit.
Gasless lets a user authorize a swap or transfer with a single signature and no gas. For a working example, see the Hyperliquid Withdrawals Guide.
Authorization
bearerAuth API key for authentication.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://api.staging.across.to/gasless/submit" \ -H "Content-Type: application/json" \ -d '{ "swapTx": { "ecosystem": "evm-gasless", "chainId": 42161, "to": "0x10D8b8DaA26d307489803e10477De69C0492B610", "data": { "type": "erc3009" } }, "signature": "0xabc..." }'{
"depositId": "63138902050176194869835581561020090006750407517885256902905383053846970918917",
"messageId": null,
"id": "7fg9l-1780952860050-cde67e6bc61f"
}{
"type": "AcrossApiError",
"code": "INVALID_PARAM",
"status": 400,
"message": "Invalid signature: unable to verify signature",
"param": "signature",
"id": "w8cbj-1780949503966-fe83ebbc58dd"
}{
"type": "AcrossApiError",
"code": "FORBIDDEN_API_KEY",
"status": 403,
"message": "Sponsored gasless route not eligible for this API key"
}{
"type": "AcrossApiError",
"status": 409,
"message": "Another submit is in flight for this depositId; retry shortly"
}{
"type": "AcrossApiError",
"code": "INTERNAL_SERVER_ERROR",
"status": 500,
"message": "Internal server error"
}{
"type": "AcrossApiError",
"code": "NO_RELAYER_AVAILABLE",
"status": 503,
"message": "No gasless relayer available"
}Get a gasless swap quote GET
Quote a **gasless** swap or transfer: the user authorizes it with a single EIP-712 signature (`swapTx` — an ERC-3009 or Permit2 permit) and a submitter broadcasts it on-chain, so the user pays no gas.
Create a webhook subscription POST
Register an HTTPS endpoint to receive webhook events for deposit-address transfers. Requires an API key with the `deposit-address` permission (Bearer auth). A subscription is persistent: it receives every matching event — across all of your deposit addresses — until you delete it. A 2xx response to a delivery only acknowledges that one event; it does not end the subscription. The signing `secret` is returned **once** in this response and never again — store it to verify delivery signatures.