Detailed Guides
Swapping Code Examples
Application starter code
const API_KEY = ''
const API_URL = 'https://trade-api.gateway.uniswap.org/v1'
const headers = {
'x-api-key': API_KEY,
}
const signer = provider.getSigner()
// APPROVAL
const approvalResponse = await axios.post(
`${API_URL}/check_approval`,
{
walletAddress: await signer.getAddress(),
amount: BigNumber.from(amount).mul(2).toString(),
token: tokenIn,
chainId: 1,
tokenOut: tokenOut,
tokenOutChainId: 1,
},
{
headers,
}
)
if (approvalResponse.data.approval) {
await signer.sendTransaction(approvalResponse.data.approval)
}
// QUOTE
const quoteResponse = await axios.post(
`${API_URL}/quote`,
{
swapper: await signer.getAddress(),
tokenInChainId: 1,
tokenOutChainId: 1,
tokenIn: tokenIn,
tokenOut: tokenOut,
amount: amount,
routingPreference: routingPreference,
type: 'EXACT_INPUT',
},
{
headers,
}
)
const { quote, permitData, routing } = quoteResponse.data
let signature
if (permitData) {
signature = await signer._signTypedData(permitData.domain, permitData.types, permitData.values)
}
//ORDER
let postTransactionResponse
if (routing === 'CLASSIC' || routing === 'WRAP' || routing === 'UNWRAP' || routing === 'BRIDGE') {
postTransactionResponse = await axios.post(
`${API_URL}/swap`,
{
signature: signature,
quote: quote,
permitData: permitData,
},
{
headers,
}
)
await signer.sendTransaction(postTransactionResponse.data.swap)
} else if (routing === 'DUTCH_LIMIT' || routing === 'DUTCH_V2' || routing === 'DUTCH_V3' || routing === 'PRIORITY') {
postTransactionResponse = await axios.post(
`${API_URL}/order`,
{
signature: signature,
quote: quote,
},
{
headers,
}
)
}
Assistant
Responses are generated using AI and may contain mistakes.