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