Execute a quote
Submits the credential that turns a quote into a transfer: either authorization.signatures, a map keyed by each signable nextActions id, or authorization.txHash for approval-funded quotes — sent before expiresAt.
A 2xx means accepted, not arrived; follow it with GET /v1/transfers/{orderId}.
Authorization
bearerAuth API key for authentication.
In: header
Path Parameters
The quote id returned by POST /v1/quotes. It is also the order id. Quotes expire about 15 minutes after issue, so replace the example below with one you just created.
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
curl -X POST "https://api.staging.across.to/v1/quotes/0x1e9b5c06da9e6759cb6ed082a6870313433eedf8114041d644b0cc953b75f4e9/executions" \ -H "Content-Type: application/json" \ -d '{ "authorization": { "signatures": { "funding": "0x9947456ab053e6cb59f17d571dcd9d1f0f1f1a0c7a1c0d2e3f4a5b6c7d8e9f001122334455667788990011223344556677889900112233445566778899001b" } } }'{
"executionId": "1ccad237-5f79-4983-a63f-8264677f2636",
"transferId": "0x1e9b5c06da9e6759cb6ed082a6870313433eedf8114041d644b0cc953b75f4e9",
"quoteId": "0x1e9b5c06da9e6759cb6ed082a6870313433eedf8114041d644b0cc953b75f4e9",
"acceptedAt": "2026-09-04T01:29:02.001Z",
"balanceCheck": {
"chainId": 42161,
"token": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"requiredAmount": "500000",
"observedBalance": "775738",
"blockNumber": 495960312,
"observedAt": "2026-09-04T01:29:02.055Z"
}
}{
"error": {
"type": "request",
"code": "request.missing_field",
"message": "authorization.signatures is required",
"param": "authorization.signatures",
"requestId": "mps4hrl21eqmhpeqom9q79jjeg"
}
}{
"code": "unauthenticated",
"message": "the request does not have valid authentication credentials for the operation",
"details": null
}{
"code": "unauthenticated",
"message": "the request does not have valid authentication credentials for the operation",
"details": {}
}{
"error": {
"type": "request",
"code": "request.invalid_json",
"message": "string",
"param": "string",
"requestId": "string",
"details": {
"balanceCheck": {
"chainId": 0,
"token": "string",
"requiredAmount": "string",
"observedBalance": "string",
"blockNumber": 0,
"observedAt": "2019-08-24T14:15:22Z"
}
}
}
}Price a transfer POST
Prices one transfer and returns everything needed to execute it: `destination.amount` (expected) alongside `destination.minimumAmount` (the guaranteed floor), an itemised fee breakdown, `expiresAt`, and every action to sign or send. A quote is an offer, not a commitment, but approval-funded quotes escrow on-chain via `store()` before you submit. `quoteId` is also the id you track the transfer by.
List transfers GET
Lists transfers, newest first. Filters are repeatable and combine — values within one filter match any, separate filters must all match — and for reconciliation `externalId` matches your own id while `txnRef` matches any transaction in the transfer's lifecycle.