Skip to main content
POST
Claims an EVM-targeted swap gaslessly via the HTLCCoordinator contract.

Path Parameters

id
string<uuid>
required

Swap ID

Body

application/json

Request body for POST /swap/{id}/claim-gasless.

The client provides the HTLC preimage (secret) and an EIP-712 signature authorising the server to call redeemAndExecute on the coordinator contract on the client's behalf.

Examples

Minimal request (WBTC-direct target, no DEX swap):

Request with DEX calldata (non-WBTC target, e.g. USDC):

destination
string
required

EVM address where tokens should be sent

r
string
required

EIP-712 signature r (32-byte hex string, with or without 0x prefix)

s
string
required

EIP-712 signature s (32-byte hex string, with or without 0x prefix)

secret
string
required

The secret/preimage (32-byte hex string, with or without 0x prefix)

v
integer<int32>
required

EIP-712 signature v

Required range: x >= 0
bridge_recipient
string | null

Optional non-EVM bridge recipient (e.g. a Solana base58 SPL pubkey). Used as CCTP mintRecipient when bridge_target_chain is non-EVM; must match the value passed to redeem-and-swap-calldata so the rebuilt calls_hash matches the EIP-712 signature.

For Solana: this is the recipient's USDC ATA, not their wallet.

bridge_recipient_wallet
string | null

Optional Solana wallet pubkey, supplied alongside bridge_recipient when the recipient's USDC ATA does not yet exist. Triggers the extended 65-byte forwarding hookData. Must mirror what was passed to redeem-and-swap-calldata so the rebuilt calls_hash matches.

dex_calldata
null | object

Optional DEX calldata from the client. If provided, the server uses this instead of fetching from 1inch. Client should fetch via GET /swap/{id}/redeem-and-swap-calldata?destination=...

Response

Claim relayed, or already relayed / observed (idempotent): the status and the claim transaction hash

id
string
required

Swap ID

message
string
required

Success message

status
string
required

Current swap status

tx_hash
string
required

Hash of the claim transaction. Empty while the relay is still being broadcast (a concurrent request beat this one by seconds) or when the swap was claimed by a transaction the server did not relay.