from compass_api_sdk import CompassAPI, models
with CompassAPI(
api_key_auth="<YOUR_API_KEY_HERE>",
) as compass_api:
res = compass_api.pendle.pendle_liquidity(market_address="0x46d62a8dede1bf2d0de04f2ed863245cbba5e538", action=models.PendleManageLiquidityRequestAction.SUPPLY, token="ETH", amount_in=0.0001, max_slippage_percent=1.0, chain=models.PendleManageLiquidityRequestChain.ARBITRUM, sender="0x931C470a20B4B8428C80F5f63e193EE97C86094F", 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.pendle.pendleLiquidity({
marketAddress: "0x46d62a8dede1bf2d0de04f2ed863245cbba5e538",
action: "SUPPLY",
token: "ETH",
amountIn: 0.0001,
maxSlippagePercent: 1,
chain: "arbitrum",
sender: "0x931C470a20B4B8428C80F5f63e193EE97C86094F",
});
console.log(result);
}
run();curl --request POST \
--url https://api.compasslabs.ai/v1/pendle/liquidity \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"chain": "arbitrum",
"sender": "0x931C470a20B4B8428C80F5f63e193EE97C86094F",
"market_address": "0x46d62a8dede1bf2d0de04f2ed863245cbba5e538",
"action": "SUPPLY",
"token": "ETH",
"amount_in": 0.0001,
"max_slippage_percent": 1
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
chain: 'arbitrum',
sender: '0x931C470a20B4B8428C80F5f63e193EE97C86094F',
market_address: '0x46d62a8dede1bf2d0de04f2ed863245cbba5e538',
action: 'SUPPLY',
token: 'ETH',
amount_in: 0.0001,
max_slippage_percent: 1
})
};
fetch('https://api.compasslabs.ai/v1/pendle/liquidity', 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/pendle/liquidity",
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' => 'arbitrum',
'sender' => '0x931C470a20B4B8428C80F5f63e193EE97C86094F',
'market_address' => '0x46d62a8dede1bf2d0de04f2ed863245cbba5e538',
'action' => 'SUPPLY',
'token' => 'ETH',
'amount_in' => 0.0001,
'max_slippage_percent' => 1
]),
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/pendle/liquidity"
payload := strings.NewReader("{\n \"chain\": \"arbitrum\",\n \"sender\": \"0x931C470a20B4B8428C80F5f63e193EE97C86094F\",\n \"market_address\": \"0x46d62a8dede1bf2d0de04f2ed863245cbba5e538\",\n \"action\": \"SUPPLY\",\n \"token\": \"ETH\",\n \"amount_in\": 0.0001,\n \"max_slippage_percent\": 1\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/pendle/liquidity")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"chain\": \"arbitrum\",\n \"sender\": \"0x931C470a20B4B8428C80F5f63e193EE97C86094F\",\n \"market_address\": \"0x46d62a8dede1bf2d0de04f2ed863245cbba5e538\",\n \"action\": \"SUPPLY\",\n \"token\": \"ETH\",\n \"amount_in\": 0.0001,\n \"max_slippage_percent\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.compasslabs.ai/v1/pendle/liquidity")
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\": \"arbitrum\",\n \"sender\": \"0x931C470a20B4B8428C80F5f63e193EE97C86094F\",\n \"market_address\": \"0x46d62a8dede1bf2d0de04f2ed863245cbba5e538\",\n \"action\": \"SUPPLY\",\n \"token\": \"ETH\",\n \"amount_in\": 0.0001,\n \"max_slippage_percent\": 1\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>"
}
]
}Manage Liquidity (LP)
Manage liquidity in a Pendle Market.
Liquidity is supplied to or withdrawn from the market with a token of the user’s choice.
Representation of the liquidity provided is in the form of market’s Liquidity Provider Token (LP) received by the user.
A sufficient allowance for the Pendle Router on the appropriate token contract must be set
beforehand. For action set to SUPPLY, this is the token contract. For action set to WTIHDRAW, this is the market contract (LP).
Required Allowances
In order to make this transaction, token allowances need to be set for the following contracts.
PendleRouter
from compass_api_sdk import CompassAPI, models
with CompassAPI(
api_key_auth="<YOUR_API_KEY_HERE>",
) as compass_api:
res = compass_api.pendle.pendle_liquidity(market_address="0x46d62a8dede1bf2d0de04f2ed863245cbba5e538", action=models.PendleManageLiquidityRequestAction.SUPPLY, token="ETH", amount_in=0.0001, max_slippage_percent=1.0, chain=models.PendleManageLiquidityRequestChain.ARBITRUM, sender="0x931C470a20B4B8428C80F5f63e193EE97C86094F", 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.pendle.pendleLiquidity({
marketAddress: "0x46d62a8dede1bf2d0de04f2ed863245cbba5e538",
action: "SUPPLY",
token: "ETH",
amountIn: 0.0001,
maxSlippagePercent: 1,
chain: "arbitrum",
sender: "0x931C470a20B4B8428C80F5f63e193EE97C86094F",
});
console.log(result);
}
run();curl --request POST \
--url https://api.compasslabs.ai/v1/pendle/liquidity \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"chain": "arbitrum",
"sender": "0x931C470a20B4B8428C80F5f63e193EE97C86094F",
"market_address": "0x46d62a8dede1bf2d0de04f2ed863245cbba5e538",
"action": "SUPPLY",
"token": "ETH",
"amount_in": 0.0001,
"max_slippage_percent": 1
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
chain: 'arbitrum',
sender: '0x931C470a20B4B8428C80F5f63e193EE97C86094F',
market_address: '0x46d62a8dede1bf2d0de04f2ed863245cbba5e538',
action: 'SUPPLY',
token: 'ETH',
amount_in: 0.0001,
max_slippage_percent: 1
})
};
fetch('https://api.compasslabs.ai/v1/pendle/liquidity', 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/pendle/liquidity",
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' => 'arbitrum',
'sender' => '0x931C470a20B4B8428C80F5f63e193EE97C86094F',
'market_address' => '0x46d62a8dede1bf2d0de04f2ed863245cbba5e538',
'action' => 'SUPPLY',
'token' => 'ETH',
'amount_in' => 0.0001,
'max_slippage_percent' => 1
]),
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/pendle/liquidity"
payload := strings.NewReader("{\n \"chain\": \"arbitrum\",\n \"sender\": \"0x931C470a20B4B8428C80F5f63e193EE97C86094F\",\n \"market_address\": \"0x46d62a8dede1bf2d0de04f2ed863245cbba5e538\",\n \"action\": \"SUPPLY\",\n \"token\": \"ETH\",\n \"amount_in\": 0.0001,\n \"max_slippage_percent\": 1\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/pendle/liquidity")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"chain\": \"arbitrum\",\n \"sender\": \"0x931C470a20B4B8428C80F5f63e193EE97C86094F\",\n \"market_address\": \"0x46d62a8dede1bf2d0de04f2ed863245cbba5e538\",\n \"action\": \"SUPPLY\",\n \"token\": \"ETH\",\n \"amount_in\": 0.0001,\n \"max_slippage_percent\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.compasslabs.ai/v1/pendle/liquidity")
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\": \"arbitrum\",\n \"sender\": \"0x931C470a20B4B8428C80F5f63e193EE97C86094F\",\n \"market_address\": \"0x46d62a8dede1bf2d0de04f2ed863245cbba5e538\",\n \"action\": \"SUPPLY\",\n \"token\": \"ETH\",\n \"amount_in\": 0.0001,\n \"max_slippage_percent\": 1\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
The address identifying which Pendle Market you would like to add liquidity to.
"0x08a152834de126d2ef83d612ff36e4523fd0017f"
Specifies the direction of the liquidity operation for the Pendle market. Valid values are SUPPLY (to add liquidity) or WITHDRAW (to remove liquidity).
SUPPLY, WITHDRAW "SUPPLY"
"WITHDRAW"
The symbol or address of the token to manage liquidity with. For action set to SUPPLY, this is the token to add as liquidity. For action set to WITHDRAW, this is the token to remove from liquidity.
"USDC"
"0xaf88d065e77c8cC2239327C5EDb3A432268e5831"
For action set to SUPPLY, this is the amount in of token to add as liquidity in exchange for Liquidity Provider (LP) tokens. For action set to WITHDRAW, this is the amount in of LP tokens to redeem for token.
x > 01.5
The maximum slippage allowed in percent. e.g. 1 means 1% slippage allowed.
0 <= x <= 100.5
arbitrum, base, ethereum "arbitrum"
The address of the transaction sender.
"0x29F20a192328eF1aD35e1564aBFf4Be9C5ce5f7B"
"PENDLE_MANAGE_LIQUIDITY"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?