dbc-pool-create-tx
curl --request POST \
--url https://api.jup.ag/studio/v1/dbc-pool/create-tx \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"buildCurveByMarketCapParam": {
"quoteMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"initialMarketCap": 16000,
"migrationMarketCap": 69000,
"tokenQuoteDecimal": 6,
"lockedVestingParam": {
"totalLockedVestingAmount": 0,
"cliffUnlockAmount": 0,
"numberOfVestingPeriod": 0,
"totalVestingDuration": 0,
"cliffDurationFromMigrationTime": 0
}
},
"antiSniping": true,
"fee": {
"feeBps": 100
},
"isLpLocked": true,
"tokenName": "My Token",
"tokenSymbol": "MTK",
"tokenImageContentType": "image/png",
"creator": "BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV"
}
'import requests
url = "https://api.jup.ag/studio/v1/dbc-pool/create-tx"
payload = {
"buildCurveByMarketCapParam": {
"quoteMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"initialMarketCap": 16000,
"migrationMarketCap": 69000,
"tokenQuoteDecimal": 6,
"lockedVestingParam": {
"totalLockedVestingAmount": 0,
"cliffUnlockAmount": 0,
"numberOfVestingPeriod": 0,
"totalVestingDuration": 0,
"cliffDurationFromMigrationTime": 0
}
},
"antiSniping": True,
"fee": { "feeBps": 100 },
"isLpLocked": True,
"tokenName": "My Token",
"tokenSymbol": "MTK",
"tokenImageContentType": "image/png",
"creator": "BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
buildCurveByMarketCapParam: {
quoteMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
initialMarketCap: 16000,
migrationMarketCap: 69000,
tokenQuoteDecimal: 6,
lockedVestingParam: {
totalLockedVestingAmount: 0,
cliffUnlockAmount: 0,
numberOfVestingPeriod: 0,
totalVestingDuration: 0,
cliffDurationFromMigrationTime: 0
}
},
antiSniping: true,
fee: {feeBps: 100},
isLpLocked: true,
tokenName: 'My Token',
tokenSymbol: 'MTK',
tokenImageContentType: 'image/png',
creator: 'BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV'
})
};
fetch('https://api.jup.ag/studio/v1/dbc-pool/create-tx', 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.jup.ag/studio/v1/dbc-pool/create-tx",
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([
'buildCurveByMarketCapParam' => [
'quoteMint' => 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
'initialMarketCap' => 16000,
'migrationMarketCap' => 69000,
'tokenQuoteDecimal' => 6,
'lockedVestingParam' => [
'totalLockedVestingAmount' => 0,
'cliffUnlockAmount' => 0,
'numberOfVestingPeriod' => 0,
'totalVestingDuration' => 0,
'cliffDurationFromMigrationTime' => 0
]
],
'antiSniping' => true,
'fee' => [
'feeBps' => 100
],
'isLpLocked' => true,
'tokenName' => 'My Token',
'tokenSymbol' => 'MTK',
'tokenImageContentType' => 'image/png',
'creator' => 'BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV'
]),
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.jup.ag/studio/v1/dbc-pool/create-tx"
payload := strings.NewReader("{\n \"buildCurveByMarketCapParam\": {\n \"quoteMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n \"initialMarketCap\": 16000,\n \"migrationMarketCap\": 69000,\n \"tokenQuoteDecimal\": 6,\n \"lockedVestingParam\": {\n \"totalLockedVestingAmount\": 0,\n \"cliffUnlockAmount\": 0,\n \"numberOfVestingPeriod\": 0,\n \"totalVestingDuration\": 0,\n \"cliffDurationFromMigrationTime\": 0\n }\n },\n \"antiSniping\": true,\n \"fee\": {\n \"feeBps\": 100\n },\n \"isLpLocked\": true,\n \"tokenName\": \"My Token\",\n \"tokenSymbol\": \"MTK\",\n \"tokenImageContentType\": \"image/png\",\n \"creator\": \"BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV\"\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.jup.ag/studio/v1/dbc-pool/create-tx")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"buildCurveByMarketCapParam\": {\n \"quoteMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n \"initialMarketCap\": 16000,\n \"migrationMarketCap\": 69000,\n \"tokenQuoteDecimal\": 6,\n \"lockedVestingParam\": {\n \"totalLockedVestingAmount\": 0,\n \"cliffUnlockAmount\": 0,\n \"numberOfVestingPeriod\": 0,\n \"totalVestingDuration\": 0,\n \"cliffDurationFromMigrationTime\": 0\n }\n },\n \"antiSniping\": true,\n \"fee\": {\n \"feeBps\": 100\n },\n \"isLpLocked\": true,\n \"tokenName\": \"My Token\",\n \"tokenSymbol\": \"MTK\",\n \"tokenImageContentType\": \"image/png\",\n \"creator\": \"BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jup.ag/studio/v1/dbc-pool/create-tx")
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 \"buildCurveByMarketCapParam\": {\n \"quoteMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n \"initialMarketCap\": 16000,\n \"migrationMarketCap\": 69000,\n \"tokenQuoteDecimal\": 6,\n \"lockedVestingParam\": {\n \"totalLockedVestingAmount\": 0,\n \"cliffUnlockAmount\": 0,\n \"numberOfVestingPeriod\": 0,\n \"totalVestingDuration\": 0,\n \"cliffDurationFromMigrationTime\": 0\n }\n },\n \"antiSniping\": true,\n \"fee\": {\n \"feeBps\": 100\n },\n \"isLpLocked\": true,\n \"tokenName\": \"My Token\",\n \"tokenSymbol\": \"MTK\",\n \"tokenImageContentType\": \"image/png\",\n \"creator\": \"BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV\"\n}"
response = http.request(request)
puts response.read_body{
"transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAEN...",
"mint": "TokenMintAddressExample111111111111111111111",
"imagePresignedUrl": "https://storage.example.com/upload/image?token=abc123",
"metadataPresignedUrl": "https://storage.example.com/upload/metadata?token=def456",
"imageUrl": "https://storage.example.com/tokens/TokenMintAddressExample111111111111111111111/image.png"
}{
"errors": {},
"error": "<string>"
}{
"error": "<string>",
"details": "<string>"
}Studio
DBC Pool Create TX
Request for a base64-encoded unsigned transaction to create a Dynamic Bonding Curve pool with token metadata
POST
/
dbc-pool
/
create-tx
dbc-pool-create-tx
curl --request POST \
--url https://api.jup.ag/studio/v1/dbc-pool/create-tx \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"buildCurveByMarketCapParam": {
"quoteMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"initialMarketCap": 16000,
"migrationMarketCap": 69000,
"tokenQuoteDecimal": 6,
"lockedVestingParam": {
"totalLockedVestingAmount": 0,
"cliffUnlockAmount": 0,
"numberOfVestingPeriod": 0,
"totalVestingDuration": 0,
"cliffDurationFromMigrationTime": 0
}
},
"antiSniping": true,
"fee": {
"feeBps": 100
},
"isLpLocked": true,
"tokenName": "My Token",
"tokenSymbol": "MTK",
"tokenImageContentType": "image/png",
"creator": "BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV"
}
'import requests
url = "https://api.jup.ag/studio/v1/dbc-pool/create-tx"
payload = {
"buildCurveByMarketCapParam": {
"quoteMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"initialMarketCap": 16000,
"migrationMarketCap": 69000,
"tokenQuoteDecimal": 6,
"lockedVestingParam": {
"totalLockedVestingAmount": 0,
"cliffUnlockAmount": 0,
"numberOfVestingPeriod": 0,
"totalVestingDuration": 0,
"cliffDurationFromMigrationTime": 0
}
},
"antiSniping": True,
"fee": { "feeBps": 100 },
"isLpLocked": True,
"tokenName": "My Token",
"tokenSymbol": "MTK",
"tokenImageContentType": "image/png",
"creator": "BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
buildCurveByMarketCapParam: {
quoteMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
initialMarketCap: 16000,
migrationMarketCap: 69000,
tokenQuoteDecimal: 6,
lockedVestingParam: {
totalLockedVestingAmount: 0,
cliffUnlockAmount: 0,
numberOfVestingPeriod: 0,
totalVestingDuration: 0,
cliffDurationFromMigrationTime: 0
}
},
antiSniping: true,
fee: {feeBps: 100},
isLpLocked: true,
tokenName: 'My Token',
tokenSymbol: 'MTK',
tokenImageContentType: 'image/png',
creator: 'BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV'
})
};
fetch('https://api.jup.ag/studio/v1/dbc-pool/create-tx', 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.jup.ag/studio/v1/dbc-pool/create-tx",
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([
'buildCurveByMarketCapParam' => [
'quoteMint' => 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
'initialMarketCap' => 16000,
'migrationMarketCap' => 69000,
'tokenQuoteDecimal' => 6,
'lockedVestingParam' => [
'totalLockedVestingAmount' => 0,
'cliffUnlockAmount' => 0,
'numberOfVestingPeriod' => 0,
'totalVestingDuration' => 0,
'cliffDurationFromMigrationTime' => 0
]
],
'antiSniping' => true,
'fee' => [
'feeBps' => 100
],
'isLpLocked' => true,
'tokenName' => 'My Token',
'tokenSymbol' => 'MTK',
'tokenImageContentType' => 'image/png',
'creator' => 'BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV'
]),
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.jup.ag/studio/v1/dbc-pool/create-tx"
payload := strings.NewReader("{\n \"buildCurveByMarketCapParam\": {\n \"quoteMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n \"initialMarketCap\": 16000,\n \"migrationMarketCap\": 69000,\n \"tokenQuoteDecimal\": 6,\n \"lockedVestingParam\": {\n \"totalLockedVestingAmount\": 0,\n \"cliffUnlockAmount\": 0,\n \"numberOfVestingPeriod\": 0,\n \"totalVestingDuration\": 0,\n \"cliffDurationFromMigrationTime\": 0\n }\n },\n \"antiSniping\": true,\n \"fee\": {\n \"feeBps\": 100\n },\n \"isLpLocked\": true,\n \"tokenName\": \"My Token\",\n \"tokenSymbol\": \"MTK\",\n \"tokenImageContentType\": \"image/png\",\n \"creator\": \"BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV\"\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.jup.ag/studio/v1/dbc-pool/create-tx")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"buildCurveByMarketCapParam\": {\n \"quoteMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n \"initialMarketCap\": 16000,\n \"migrationMarketCap\": 69000,\n \"tokenQuoteDecimal\": 6,\n \"lockedVestingParam\": {\n \"totalLockedVestingAmount\": 0,\n \"cliffUnlockAmount\": 0,\n \"numberOfVestingPeriod\": 0,\n \"totalVestingDuration\": 0,\n \"cliffDurationFromMigrationTime\": 0\n }\n },\n \"antiSniping\": true,\n \"fee\": {\n \"feeBps\": 100\n },\n \"isLpLocked\": true,\n \"tokenName\": \"My Token\",\n \"tokenSymbol\": \"MTK\",\n \"tokenImageContentType\": \"image/png\",\n \"creator\": \"BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jup.ag/studio/v1/dbc-pool/create-tx")
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 \"buildCurveByMarketCapParam\": {\n \"quoteMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n \"initialMarketCap\": 16000,\n \"migrationMarketCap\": 69000,\n \"tokenQuoteDecimal\": 6,\n \"lockedVestingParam\": {\n \"totalLockedVestingAmount\": 0,\n \"cliffUnlockAmount\": 0,\n \"numberOfVestingPeriod\": 0,\n \"totalVestingDuration\": 0,\n \"cliffDurationFromMigrationTime\": 0\n }\n },\n \"antiSniping\": true,\n \"fee\": {\n \"feeBps\": 100\n },\n \"isLpLocked\": true,\n \"tokenName\": \"My Token\",\n \"tokenSymbol\": \"MTK\",\n \"tokenImageContentType\": \"image/png\",\n \"creator\": \"BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV\"\n}"
response = http.request(request)
puts response.read_body{
"transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAEN...",
"mint": "TokenMintAddressExample111111111111111111111",
"imagePresignedUrl": "https://storage.example.com/upload/image?token=abc123",
"metadataPresignedUrl": "https://storage.example.com/upload/metadata?token=def456",
"imageUrl": "https://storage.example.com/tokens/TokenMintAddressExample111111111111111111111/image.png"
}{
"errors": {},
"error": "<string>"
}{
"error": "<string>",
"details": "<string>"
}Authorizations
Get API key via https://developers.jup.ag/portal
Body
application/json
Show child attributes
Show child attributes
- Enable anti-sniping protection
- Apply an additional swap fee immediately after launch to discourage bots
- Starts at 99% and decreases 1% linearly over a randomized period
- Fee configuration parameters
- If not provided, the default fee will be 100 basis points (1%)
Show child attributes
Show child attributes
Minimum string length:
1Minimum string length:
1- Token image content type
Available options:
image/jpeg, image/png, image/gif, image/webp - Creator wallet public key
- Whether LP tokens should be locked
- If enabled, 50% of graduated LP unlocks after 1 year
- Useful for creators to strategize in the long term
Response
Successful response
Base64-encoded transaction ready for signing
Generated token mint address
- Presigned URL for image upload via
PUTrequest - This is for you to make a PUT request to upload your token image to the on-chain uri metadata
- Refer to the Token Metadata section for better understanding
- Presigned URL for metadata upload via
PUTrequest - This is for you to make a PUT request to upload your token metadata to the on-chain uri metadata
- Refer to the Token Metadata section for better understanding
Final image URL
Was this page helpful?
⌘I
