curl --request POST \
--url 'https://api.raze.bot/utils/sol/launch?apiKey=' \
--header 'Content-Type: application/json' \
--data '
{
"wallets": [
{
"address": "<string>",
"amount": 123
}
],
"token": {
"name": "<string>",
"symbol": "<string>",
"imageUrl": "<string>",
"description": "<string>",
"twitter": "<string>",
"telegram": "<string>",
"website": "<string>"
},
"pumpType": true,
"cashBack": true,
"bonkType": "<string>",
"configAddress": "<string>",
"initialLiquiditySOL": 123,
"initialTokenPercent": 123,
"tipWallet": "<string>",
"tipLamports": 123,
"feeTipLamports": 123,
"feeWallet": "<string>",
"feeBps": 123,
"jitoTipAmountSOL": 123,
"computeUnitPrice": 123,
"computeUnitLimit": 123,
"simulate": true
}
'import requests
url = "https://api.raze.bot/utils/sol/launch?apiKey="
payload = {
"wallets": [
{
"address": "<string>",
"amount": 123
}
],
"token": {
"name": "<string>",
"symbol": "<string>",
"imageUrl": "<string>",
"description": "<string>",
"twitter": "<string>",
"telegram": "<string>",
"website": "<string>"
},
"pumpType": True,
"cashBack": True,
"bonkType": "<string>",
"configAddress": "<string>",
"initialLiquiditySOL": 123,
"initialTokenPercent": 123,
"tipWallet": "<string>",
"tipLamports": 123,
"feeTipLamports": 123,
"feeWallet": "<string>",
"feeBps": 123,
"jitoTipAmountSOL": 123,
"computeUnitPrice": 123,
"computeUnitLimit": 123,
"simulate": True
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
wallets: [{address: '<string>', amount: 123}],
token: {
name: '<string>',
symbol: '<string>',
imageUrl: '<string>',
description: '<string>',
twitter: '<string>',
telegram: '<string>',
website: '<string>'
},
pumpType: true,
cashBack: true,
bonkType: '<string>',
configAddress: '<string>',
initialLiquiditySOL: 123,
initialTokenPercent: 123,
tipWallet: '<string>',
tipLamports: 123,
feeTipLamports: 123,
feeWallet: '<string>',
feeBps: 123,
jitoTipAmountSOL: 123,
computeUnitPrice: 123,
computeUnitLimit: 123,
simulate: true
})
};
fetch('https://api.raze.bot/utils/sol/launch?apiKey=', 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.raze.bot/utils/sol/launch?apiKey=",
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([
'wallets' => [
[
'address' => '<string>',
'amount' => 123
]
],
'token' => [
'name' => '<string>',
'symbol' => '<string>',
'imageUrl' => '<string>',
'description' => '<string>',
'twitter' => '<string>',
'telegram' => '<string>',
'website' => '<string>'
],
'pumpType' => true,
'cashBack' => true,
'bonkType' => '<string>',
'configAddress' => '<string>',
'initialLiquiditySOL' => 123,
'initialTokenPercent' => 123,
'tipWallet' => '<string>',
'tipLamports' => 123,
'feeTipLamports' => 123,
'feeWallet' => '<string>',
'feeBps' => 123,
'jitoTipAmountSOL' => 123,
'computeUnitPrice' => 123,
'computeUnitLimit' => 123,
'simulate' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.raze.bot/utils/sol/launch?apiKey="
payload := strings.NewReader("{\n \"wallets\": [\n {\n \"address\": \"<string>\",\n \"amount\": 123\n }\n ],\n \"token\": {\n \"name\": \"<string>\",\n \"symbol\": \"<string>\",\n \"imageUrl\": \"<string>\",\n \"description\": \"<string>\",\n \"twitter\": \"<string>\",\n \"telegram\": \"<string>\",\n \"website\": \"<string>\"\n },\n \"pumpType\": true,\n \"cashBack\": true,\n \"bonkType\": \"<string>\",\n \"configAddress\": \"<string>\",\n \"initialLiquiditySOL\": 123,\n \"initialTokenPercent\": 123,\n \"tipWallet\": \"<string>\",\n \"tipLamports\": 123,\n \"feeTipLamports\": 123,\n \"feeWallet\": \"<string>\",\n \"feeBps\": 123,\n \"jitoTipAmountSOL\": 123,\n \"computeUnitPrice\": 123,\n \"computeUnitLimit\": 123,\n \"simulate\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
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.raze.bot/utils/sol/launch?apiKey=")
.header("Content-Type", "application/json")
.body("{\n \"wallets\": [\n {\n \"address\": \"<string>\",\n \"amount\": 123\n }\n ],\n \"token\": {\n \"name\": \"<string>\",\n \"symbol\": \"<string>\",\n \"imageUrl\": \"<string>\",\n \"description\": \"<string>\",\n \"twitter\": \"<string>\",\n \"telegram\": \"<string>\",\n \"website\": \"<string>\"\n },\n \"pumpType\": true,\n \"cashBack\": true,\n \"bonkType\": \"<string>\",\n \"configAddress\": \"<string>\",\n \"initialLiquiditySOL\": 123,\n \"initialTokenPercent\": 123,\n \"tipWallet\": \"<string>\",\n \"tipLamports\": 123,\n \"feeTipLamports\": 123,\n \"feeWallet\": \"<string>\",\n \"feeBps\": 123,\n \"jitoTipAmountSOL\": 123,\n \"computeUnitPrice\": 123,\n \"computeUnitLimit\": 123,\n \"simulate\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.raze.bot/utils/sol/launch?apiKey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"wallets\": [\n {\n \"address\": \"<string>\",\n \"amount\": 123\n }\n ],\n \"token\": {\n \"name\": \"<string>\",\n \"symbol\": \"<string>\",\n \"imageUrl\": \"<string>\",\n \"description\": \"<string>\",\n \"twitter\": \"<string>\",\n \"telegram\": \"<string>\",\n \"website\": \"<string>\"\n },\n \"pumpType\": true,\n \"cashBack\": true,\n \"bonkType\": \"<string>\",\n \"configAddress\": \"<string>\",\n \"initialLiquiditySOL\": 123,\n \"initialTokenPercent\": 123,\n \"tipWallet\": \"<string>\",\n \"tipLamports\": 123,\n \"feeTipLamports\": 123,\n \"feeWallet\": \"<string>\",\n \"feeBps\": 123,\n \"jitoTipAmountSOL\": 123,\n \"computeUnitPrice\": 123,\n \"computeUnitLimit\": 123,\n \"simulate\": true\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"transactions": [
"<string>"
],
"batches": [
{
"signers": [
"<string>"
],
"itemIndices": [
123
],
"instructionCount": 123
}
],
"mint": "<string>",
"platform": "<string>",
"status": {},
"simulations": [
{}
],
"error": "<string>"
}Token launch (pumpfun / bonk / meteora_dbc / meteora_cpamm)
Replaces POST /api/sol/create from public.raze.sh. Body discriminates
on platform. Supports ?dryRun=true → returns a cost estimate without
paying Pinata or fetching the vanity mint.
Stub — every platform currently returns 501-style error.
curl --request POST \
--url 'https://api.raze.bot/utils/sol/launch?apiKey=' \
--header 'Content-Type: application/json' \
--data '
{
"wallets": [
{
"address": "<string>",
"amount": 123
}
],
"token": {
"name": "<string>",
"symbol": "<string>",
"imageUrl": "<string>",
"description": "<string>",
"twitter": "<string>",
"telegram": "<string>",
"website": "<string>"
},
"pumpType": true,
"cashBack": true,
"bonkType": "<string>",
"configAddress": "<string>",
"initialLiquiditySOL": 123,
"initialTokenPercent": 123,
"tipWallet": "<string>",
"tipLamports": 123,
"feeTipLamports": 123,
"feeWallet": "<string>",
"feeBps": 123,
"jitoTipAmountSOL": 123,
"computeUnitPrice": 123,
"computeUnitLimit": 123,
"simulate": true
}
'import requests
url = "https://api.raze.bot/utils/sol/launch?apiKey="
payload = {
"wallets": [
{
"address": "<string>",
"amount": 123
}
],
"token": {
"name": "<string>",
"symbol": "<string>",
"imageUrl": "<string>",
"description": "<string>",
"twitter": "<string>",
"telegram": "<string>",
"website": "<string>"
},
"pumpType": True,
"cashBack": True,
"bonkType": "<string>",
"configAddress": "<string>",
"initialLiquiditySOL": 123,
"initialTokenPercent": 123,
"tipWallet": "<string>",
"tipLamports": 123,
"feeTipLamports": 123,
"feeWallet": "<string>",
"feeBps": 123,
"jitoTipAmountSOL": 123,
"computeUnitPrice": 123,
"computeUnitLimit": 123,
"simulate": True
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
wallets: [{address: '<string>', amount: 123}],
token: {
name: '<string>',
symbol: '<string>',
imageUrl: '<string>',
description: '<string>',
twitter: '<string>',
telegram: '<string>',
website: '<string>'
},
pumpType: true,
cashBack: true,
bonkType: '<string>',
configAddress: '<string>',
initialLiquiditySOL: 123,
initialTokenPercent: 123,
tipWallet: '<string>',
tipLamports: 123,
feeTipLamports: 123,
feeWallet: '<string>',
feeBps: 123,
jitoTipAmountSOL: 123,
computeUnitPrice: 123,
computeUnitLimit: 123,
simulate: true
})
};
fetch('https://api.raze.bot/utils/sol/launch?apiKey=', 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.raze.bot/utils/sol/launch?apiKey=",
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([
'wallets' => [
[
'address' => '<string>',
'amount' => 123
]
],
'token' => [
'name' => '<string>',
'symbol' => '<string>',
'imageUrl' => '<string>',
'description' => '<string>',
'twitter' => '<string>',
'telegram' => '<string>',
'website' => '<string>'
],
'pumpType' => true,
'cashBack' => true,
'bonkType' => '<string>',
'configAddress' => '<string>',
'initialLiquiditySOL' => 123,
'initialTokenPercent' => 123,
'tipWallet' => '<string>',
'tipLamports' => 123,
'feeTipLamports' => 123,
'feeWallet' => '<string>',
'feeBps' => 123,
'jitoTipAmountSOL' => 123,
'computeUnitPrice' => 123,
'computeUnitLimit' => 123,
'simulate' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.raze.bot/utils/sol/launch?apiKey="
payload := strings.NewReader("{\n \"wallets\": [\n {\n \"address\": \"<string>\",\n \"amount\": 123\n }\n ],\n \"token\": {\n \"name\": \"<string>\",\n \"symbol\": \"<string>\",\n \"imageUrl\": \"<string>\",\n \"description\": \"<string>\",\n \"twitter\": \"<string>\",\n \"telegram\": \"<string>\",\n \"website\": \"<string>\"\n },\n \"pumpType\": true,\n \"cashBack\": true,\n \"bonkType\": \"<string>\",\n \"configAddress\": \"<string>\",\n \"initialLiquiditySOL\": 123,\n \"initialTokenPercent\": 123,\n \"tipWallet\": \"<string>\",\n \"tipLamports\": 123,\n \"feeTipLamports\": 123,\n \"feeWallet\": \"<string>\",\n \"feeBps\": 123,\n \"jitoTipAmountSOL\": 123,\n \"computeUnitPrice\": 123,\n \"computeUnitLimit\": 123,\n \"simulate\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
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.raze.bot/utils/sol/launch?apiKey=")
.header("Content-Type", "application/json")
.body("{\n \"wallets\": [\n {\n \"address\": \"<string>\",\n \"amount\": 123\n }\n ],\n \"token\": {\n \"name\": \"<string>\",\n \"symbol\": \"<string>\",\n \"imageUrl\": \"<string>\",\n \"description\": \"<string>\",\n \"twitter\": \"<string>\",\n \"telegram\": \"<string>\",\n \"website\": \"<string>\"\n },\n \"pumpType\": true,\n \"cashBack\": true,\n \"bonkType\": \"<string>\",\n \"configAddress\": \"<string>\",\n \"initialLiquiditySOL\": 123,\n \"initialTokenPercent\": 123,\n \"tipWallet\": \"<string>\",\n \"tipLamports\": 123,\n \"feeTipLamports\": 123,\n \"feeWallet\": \"<string>\",\n \"feeBps\": 123,\n \"jitoTipAmountSOL\": 123,\n \"computeUnitPrice\": 123,\n \"computeUnitLimit\": 123,\n \"simulate\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.raze.bot/utils/sol/launch?apiKey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"wallets\": [\n {\n \"address\": \"<string>\",\n \"amount\": 123\n }\n ],\n \"token\": {\n \"name\": \"<string>\",\n \"symbol\": \"<string>\",\n \"imageUrl\": \"<string>\",\n \"description\": \"<string>\",\n \"twitter\": \"<string>\",\n \"telegram\": \"<string>\",\n \"website\": \"<string>\"\n },\n \"pumpType\": true,\n \"cashBack\": true,\n \"bonkType\": \"<string>\",\n \"configAddress\": \"<string>\",\n \"initialLiquiditySOL\": 123,\n \"initialTokenPercent\": 123,\n \"tipWallet\": \"<string>\",\n \"tipLamports\": 123,\n \"feeTipLamports\": 123,\n \"feeWallet\": \"<string>\",\n \"feeBps\": 123,\n \"jitoTipAmountSOL\": 123,\n \"computeUnitPrice\": 123,\n \"computeUnitLimit\": 123,\n \"simulate\": true\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"transactions": [
"<string>"
],
"batches": [
{
"signers": [
"<string>"
],
"itemIndices": [
123
],
"instructionCount": 123
}
],
"mint": "<string>",
"platform": "<string>",
"status": {},
"simulations": [
{}
],
"error": "<string>"
}Authorizations
Query Parameters
Body
Token launch. pumpfun is implemented; bonk / meteora_dbc / meteora_cpamm return 501.
pumpfun, bonk, meteora_dbc, meteora_cpamm Show child attributes
Show child attributes
Show child attributes
Show child attributes
Custom tip recipient wallet (defaults to the Raze relay tip wallet).
Flat tip in lamports attached once to the create tx (payer pays). feeTipLamports is the legacy alias.
Legacy alias for tipLamports.
Custom fee recipient wallet. Only charged together with feeBps.
Percentage fee in basis points of each buyer's raw quote amount, paid by that buyer alongside its buy.
base64, base58 Response
Response envelope (currently always success: false)
Shared envelope for every /utils/sol/* write endpoint. Optional
fields are omitted from the JSON when unset.
Serialized partially-signed transactions in submission order.
For batch endpoints (transfer, burn): packing metadata.
batches[i] describes transactions[i].
Show child attributes
Show child attributes
Set by /utils/sol/launch — the mint of the launched token.
Set by /utils/sol/launch and /utils/sol/fees/claim.
Set by /utils/sol/fees/config for action=status reads.
Set when the request had simulate: true. One entry per built tx,
in the same order as transactions. Each entry is the RPC
simulateTransaction value object (logs / unitsConsumed / err).
