Skip to main content
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

x-api-key
string
header
required

Body

application/json
buildCurveByMarketCapParam
object
required
antiSniping
boolean
required
  • 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
object
required
  • Fee configuration parameters
  • If not provided, the default fee will be 100 basis points (1%)
tokenName
string
required
Minimum string length: 1
tokenSymbol
string
required
Minimum string length: 1
tokenImageContentType
enum<string>
required
  • Token image content type
Available options:
image/jpeg,
image/png,
image/gif,
image/webp
creator
string
required
  • Creator wallet public key
isLpLocked
boolean
default:true
  • 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

transaction
string
required

Base64-encoded transaction ready for signing

mint
string
required

Generated token mint address

imagePresignedUrl
string<uri>
required
metadataPresignedUrl
string<uri>
required
imageUrl
string<uri>
required

Final image URL