from compass_api_sdk import CompassAPI, models
with CompassAPI(
api_key_auth="<YOUR_API_KEY_HERE>",
) as compass_api:
res = compass_api.uniswap_v3.uniswap_swap_sell_exactly(token_in="USDC", token_out="USDT", fee=models.FeeEnum.ZERO_DOT_01, amount_in=0.1, max_slippage_percent=0.5, chain=models.UniswapSellExactlyRequestChain.BASE, sender="0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5", estimate_gas=True)
# Handle response
print(res)import { CompassApiSDK } from "@compass-labs/api-sdk";
const compassApiSDK = new CompassApiSDK({
apiKeyAuth: "<YOUR_API_KEY_HERE>",
});
async function run() {
const result = await compassApiSDK.uniswapV3.uniswapSwapSellExactly({
tokenIn: "USDC",
tokenOut: "USDT",
fee: "0.01",
amountIn: 0.1,
maxSlippagePercent: 0.5,
chain: "base",
sender: "0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5",
});
console.log(result);
}
run();curl --request POST \
--url https://api.compasslabs.ai/v1/uniswap/swap/sell_exactly \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"chain": "base",
"sender": "0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5",
"token_in": "USDC",
"token_out": "USDT",
"fee": "0.01",
"amount_in": 0.1,
"max_slippage_percent": 0.5
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
chain: 'base',
sender: '0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5',
token_in: 'USDC',
token_out: 'USDT',
fee: '0.01',
amount_in: 0.1,
max_slippage_percent: 0.5
})
};
fetch('https://api.compasslabs.ai/v1/uniswap/swap/sell_exactly', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.compasslabs.ai/v1/uniswap/swap/sell_exactly",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'chain' => 'base',
'sender' => '0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5',
'token_in' => 'USDC',
'token_out' => 'USDT',
'fee' => '0.01',
'amount_in' => 0.1,
'max_slippage_percent' => 0.5
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.compasslabs.ai/v1/uniswap/swap/sell_exactly"
payload := strings.NewReader("{\n \"chain\": \"base\",\n \"sender\": \"0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5\",\n \"token_in\": \"USDC\",\n \"token_out\": \"USDT\",\n \"fee\": \"0.01\",\n \"amount_in\": 0.1,\n \"max_slippage_percent\": 0.5\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.compasslabs.ai/v1/uniswap/swap/sell_exactly")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"chain\": \"base\",\n \"sender\": \"0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5\",\n \"token_in\": \"USDC\",\n \"token_out\": \"USDT\",\n \"fee\": \"0.01\",\n \"amount_in\": 0.1,\n \"max_slippage_percent\": 0.5\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.compasslabs.ai/v1/uniswap/swap/sell_exactly")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"chain\": \"base\",\n \"sender\": \"0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5\",\n \"token_in\": \"USDC\",\n \"token_out\": \"USDT\",\n \"fee\": \"0.01\",\n \"amount_in\": 0.1,\n \"max_slippage_percent\": 0.5\n}"
response = http.request(request)
puts response.read_body{
"transaction": {
"chainId": "0x2105",
"data": "0x1688f0b900000000000000000000000029fcb43b46531bca003ddc8fcb67ffe91900c762000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000675f4a3d",
"from": "0x4A83b4413CF41C3244027e1590E35a0F48403F0c",
"gas": "0x7a120",
"maxFeePerGas": "0x59682f00",
"maxPriorityFeePerGas": "0x3b9aca00",
"nonce": "0x5",
"to": "0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67",
"value": "0x0"
},
"amount_out_quote": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Sell exact amount
This endpoint allows users to trade a specific amount of one token into another token using the Uniswap protocol.
The transaction is executed on the specified blockchain network, and the user must provide the necessary transaction details, including the token to sell, the token to receive, and the amount to sell. If the token being sold is ETH and needs to be wrapped, the appropriate amount will be wrapped automatically.
Required Allowances
In order to make this transaction, token allowances need to be set for the following contracts.
UniswapV3Router
from compass_api_sdk import CompassAPI, models
with CompassAPI(
api_key_auth="<YOUR_API_KEY_HERE>",
) as compass_api:
res = compass_api.uniswap_v3.uniswap_swap_sell_exactly(token_in="USDC", token_out="USDT", fee=models.FeeEnum.ZERO_DOT_01, amount_in=0.1, max_slippage_percent=0.5, chain=models.UniswapSellExactlyRequestChain.BASE, sender="0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5", estimate_gas=True)
# Handle response
print(res)import { CompassApiSDK } from "@compass-labs/api-sdk";
const compassApiSDK = new CompassApiSDK({
apiKeyAuth: "<YOUR_API_KEY_HERE>",
});
async function run() {
const result = await compassApiSDK.uniswapV3.uniswapSwapSellExactly({
tokenIn: "USDC",
tokenOut: "USDT",
fee: "0.01",
amountIn: 0.1,
maxSlippagePercent: 0.5,
chain: "base",
sender: "0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5",
});
console.log(result);
}
run();curl --request POST \
--url https://api.compasslabs.ai/v1/uniswap/swap/sell_exactly \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"chain": "base",
"sender": "0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5",
"token_in": "USDC",
"token_out": "USDT",
"fee": "0.01",
"amount_in": 0.1,
"max_slippage_percent": 0.5
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
chain: 'base',
sender: '0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5',
token_in: 'USDC',
token_out: 'USDT',
fee: '0.01',
amount_in: 0.1,
max_slippage_percent: 0.5
})
};
fetch('https://api.compasslabs.ai/v1/uniswap/swap/sell_exactly', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.compasslabs.ai/v1/uniswap/swap/sell_exactly",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'chain' => 'base',
'sender' => '0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5',
'token_in' => 'USDC',
'token_out' => 'USDT',
'fee' => '0.01',
'amount_in' => 0.1,
'max_slippage_percent' => 0.5
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.compasslabs.ai/v1/uniswap/swap/sell_exactly"
payload := strings.NewReader("{\n \"chain\": \"base\",\n \"sender\": \"0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5\",\n \"token_in\": \"USDC\",\n \"token_out\": \"USDT\",\n \"fee\": \"0.01\",\n \"amount_in\": 0.1,\n \"max_slippage_percent\": 0.5\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.compasslabs.ai/v1/uniswap/swap/sell_exactly")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"chain\": \"base\",\n \"sender\": \"0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5\",\n \"token_in\": \"USDC\",\n \"token_out\": \"USDT\",\n \"fee\": \"0.01\",\n \"amount_in\": 0.1,\n \"max_slippage_percent\": 0.5\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.compasslabs.ai/v1/uniswap/swap/sell_exactly")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"chain\": \"base\",\n \"sender\": \"0xA7DeA16238DdF6ed8AaC73A348bbdE6da20C20B5\",\n \"token_in\": \"USDC\",\n \"token_out\": \"USDT\",\n \"fee\": \"0.01\",\n \"amount_in\": 0.1,\n \"max_slippage_percent\": 0.5\n}"
response = http.request(request)
puts response.read_body{
"transaction": {
"chainId": "0x2105",
"data": "0x1688f0b900000000000000000000000029fcb43b46531bca003ddc8fcb67ffe91900c762000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000675f4a3d",
"from": "0x4A83b4413CF41C3244027e1590E35a0F48403F0c",
"gas": "0x7a120",
"maxFeePerGas": "0x59682f00",
"maxPriorityFeePerGas": "0x3b9aca00",
"nonce": "0x5",
"to": "0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67",
"value": "0x0"
},
"amount_out_quote": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Body
Request model for selling exactly an amount of tokens.
The symbol or address of the token to sell..
"WETH"
The symbol or address of the token to buy..
"WETH"
The swap fee of the pool
0.01, 0.05, 0.3, 1.0 "0.3"
The amount of the token_in to sell
x > 01.5
The maximum slippage allowed in percent. e.g. 1 means 1 % slippage allowed.
0 <= x <= 100.5
arbitrum, base, ethereum "base"
The address of the transaction sender.
"0x29F20a192328eF1aD35e1564aBFf4Be9C5ce5f7B"
"UNISWAP_SELL_EXACTLY"Determines whether to estimate gas costs for transactions, also verifying that the transaction can be successfully executed.
Response
Successful Response
The unsigned transaction data. User must sign and broadcast to network.
- UnsignedTransaction
- UserOperationResponse
Show child attributes
Show child attributes
{
"chainId": "0x2105",
"data": "0x1688f0b900000000000000000000000029fcb43b46531bca003ddc8fcb67ffe91900c762000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000675f4a3d",
"from": "0x4A83b4413CF41C3244027e1590E35a0F48403F0c",
"gas": "0x7a120",
"maxFeePerGas": "0x59682f00",
"maxPriorityFeePerGas": "0x3b9aca00",
"nonce": "0x5",
"to": "0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67",
"value": "0x0"
}
The estimated amount out for the transaction. The actual output amount for this transaction is guaranteed be within the acceptable threshold, defined by the max_slippage_percent, relative to this quote.
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Was this page helpful?