Swap V3 User Reference
Last verified against the Socket Swap V3 swagger: 2026-06-10. This reference covers the user-facing Swap V3 endpoints:GET /v3/swap/quote: Swap V3 quote API.userOps=txmaps to OpenRouter direct routes.GET /v3/swap/status: Swap V3 status API.
Endpoint Selection
Use/v3/swap/quote to fetch executable transaction routes, deposit-address routes, and CEX withdraw routes in one normalized route model.
OpenRouter direct routes currently support:
- Same-chain swaps when
originChainId === destinationChainId. - Cross-chain bridge routes when
originChainId !== destinationChainId.
Common Token and Amount Rules
inputAmountis a string in the smallest token unit for EVM-style chains.- The native token address is
0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE. - EVM addresses are normalized to lowercase by the API.
receiverAddressmust be valid for the destination chain.userAddressis required for OpenRouter transaction routes.- Same-chain quotes reject identical
inputTokenandoutputToken.
Swap V3 Quote
Request
Optional query parameters:
Active same-chain DEX provider IDs:
Cross-chain bridge provider IDs:
Same-Chain OpenRouter Swap Example
Cross-Chain OpenRouter Bridge Example
Response Shape
Swap V3 Status
Request
The v3 status endpoint looks up execution state by
quoteId.
Response Shape
Execution Flow
- Request quotes from
/v3/swap/quotewithuserOps=tx. - Select a route. Prefer
routeTagsor compareoutput.valueInUsd,estimatedTime, andgasFee. - Check quote freshness with
expiresAt. - If
approvalis present, approveapproval.spenderAddressforapproval.amountofapproval.tokenAddress. - Submit the route transaction from
userAddress. For an EVM route, sendtxData.objectas the transaction. - Poll status with the returned
quoteId. - Continue polling until the route reaches a terminal status.
Fees
Integrator fees are set withfeeBps and feeTakerAddress.
Rules:
feeBpsandfeeTakerAddressmust be provided together.feeBpsmust be greater than0and at most10000.- For direct DEX routes, fees can be taken from input or output depending on the OpenRouter fee resolution.
- For direct bridge no-swap routes, fees are forced to the input side.
- The client-facing output amount is already net of applicable fees.
output and execution data. It does not expose a separate affiliate fee object on tx routes.
Validation and Error Notes
Common400 errors:
- Missing
userOpsfor/v3/swap/quote. - Missing
originChainIdforuserOps=tx. - Missing
userAddressforuserOps=tx. - Missing
refundAddressforuserOps=depositoruserOps=cex-withdraw. - Missing
exchangeforuserOps=cex-withdraw. - Invalid
slippage. - Invalid or unsupported chain ID.
destinationPayloadwithoutdestinationGasLimit, or the reverse.feeBpswithoutfeeTakerAddress, or the reverse.- Provider listed in both include and exclude filters.
Implementation Notes for Integrators
- OpenRouter EVM routes usually ask the user to approve the AllowanceHolder contract, not the final bridge or DEX.
- The transaction
tois usually the AllowanceHolder. The OpenRouter call is wrapped inside the returned calldata. - Use
quoteIdexactly as returned. It is used for status lookup and source transaction recording. - Do not rebuild calldata client-side. Use the returned
txData. - Do not send expired quotes.
- For same-chain swaps,
routeDetails.dexDetailsis populated in Swap V3 when route metadata is available. - For cross-chain routes,
routeDetails.bridgeDetailsdescribes the bridge leg. If there is an origin swap leg,routeDetails.dexDetailsmay also be present.