Skip to main content

Laser Create

POST /v1/laser/create

Laser Create launches a Pump token from a SolanaLaser-managed wallet. The server generates the mint keypair, builds the Pump create_v2 transaction, signs it with the selected managed wallet, submits it through Sender, and returns the new mint address plus the creation signature.

The managed wallet is the token creator and transaction payer. If wallet is omitted, SolanaLaser uses the default managed wallet for the API key.

Metadata Hosting

SolanaLaser does not host images, metadata JSON, websites, Telegram links, X links, or any other launch assets. You must upload and pin your own image and metadata JSON, usually through IPFS, then pass the final metadata URI as uri.

The uri field is the only metadata asset SolanaLaser writes into the create transaction. That URI should point to a public JSON document. Wallets, explorers, Pump frontends, and indexing services read that JSON to display the token image, description, and socials.

Common production flow:

  1. Upload the token image to IPFS.
  2. Build metadata JSON that references the image URI.
  3. Upload the metadata JSON to IPFS.
  4. Pass the metadata JSON URI to POST /v1/laser/create.

The final uri can be ipfs://..., https://..., or http://..., but IPFS or an HTTPS gateway is the normal choice for launches.

Metadata JSON Shape

Your metadata JSON should be public and fetchable. A practical Pump-compatible shape is:

{
"name": "Laser Cat",
"symbol": "LASER",
"description": "A fast launch token created with SolanaLaser.",
"image": "https://ipfs.io/ipfs/YOUR_IMAGE_CID",
"showName": true,
"createdOn": "https://pump.fun",
"twitter": "https://x.com/your_project",
"telegram": "https://t.me/your_project",
"website": "https://yourproject.xyz"
}

Minimum practical fields:

{
"name": "Laser Cat",
"symbol": "LASER",
"description": "A fast launch token created with SolanaLaser.",
"image": "https://ipfs.io/ipfs/YOUR_IMAGE_CID"
}

name and symbol in the request should match the metadata JSON. The request values are used by the create instruction, while the JSON values are what many frontends and indexers display after they fetch the URI.

Request

const response = await fetch("https://api.solanalaser.xyz/v1/laser/create", {
method: "POST",
headers: {
"content-type": "application/json",
"x-api-key": "sl_your_key",
},
body: JSON.stringify({
name: "Laser Cat",
symbol: "LASER",
uri: "ipfs://YOUR_METADATA_CID",
initial_buy: "0.05",
slippage: 5,
confirm: true,
}),
});

const token = await response.json();

Request Fields

FieldTypeRequiredMeaning
namestringYesToken display name used in the Pump create instruction. Must not be empty.
symbolstringYesToken ticker used in the Pump create instruction. Must not be empty.
uristringYesPublic metadata JSON URI. Accepts ipfs://, https://, or http://. Aliases: metadataUrl, metadataUri.
walletstringNoManaged wallet public key to use as creator and payer. Defaults to the API key's default wallet.
mayhem_modebooleanNoPump create flag. Defaults to false. Alias: mayhemMode.
cashbackbooleanNoPump creator cashback flag. Defaults to false.
initial_buynumber or stringNoOptional developer buy in SOL, included atomically with creation. Aliases: initialBuy, buyAmountSol, devBuy, dev_buy.
slippagenumber or stringNoPercentage slippage for initial_buy. Default is 2, maximum is 50. Only valid when initial_buy is present. Aliases: initialBuySlippage, devBuySlippage, dev_buy_slippage.
confirmbooleanNoDefaults to true. If true, SolanaLaser waits for confirmation before responding.

How Fields Relate

name, symbol, and uri describe the token being created. name and symbol go directly into the Pump create instruction. uri points to the off-chain JSON that contains the image, description, and social links.

wallet controls who creates the token. The selected managed wallet signs the transaction, pays network fees, pays the Sender tip, pays token creation rent, and pays initial_buy if you include one.

initial_buy turns create into create plus developer buy. SolanaLaser first quotes how many tokens the SOL amount should receive from the fresh bonding curve, applies slippage, then builds one transaction that creates the token and buys the slippage-protected token amount.

slippage only applies to initial_buy. If you send slippage without initial_buy, the request is rejected because there is no trade leg to apply slippage to.

confirm controls response timing. With confirm: true, the response waits until RPC reports the signature status. With confirm: false, the API returns after submission.

Create Without Initial Buy

Use this when you only want to launch the token.

Request

const response = await fetch("https://api.solanalaser.xyz/v1/laser/create", {
method: "POST",
headers: {
"content-type": "application/json",
"x-api-key": "sl_your_key",
},
body: JSON.stringify({
name: "Laser Cat",
symbol: "LASER",
uri: "ipfs://YOUR_METADATA_CID",
}),
});

const token = await response.json();

Response: 200

{
"mint": "NEW_TOKEN_MINT",
"creator": "MANAGED_WALLET_PUBLIC_KEY",
"metadata_uri": "ipfs://YOUR_METADATA_CID",
"signature": "TRANSACTION_SIGNATURE",
"confirmed": true,
"confirmation_status": "confirmed"
}

Create With Initial Developer Buy

Use this when the creator should buy immediately in the same transaction as the token creation.

Request

const response = await fetch("https://api.solanalaser.xyz/v1/laser/create", {
method: "POST",
headers: {
"content-type": "application/json",
"x-api-key": "sl_your_key",
},
body: JSON.stringify({
name: "Laser Cat",
symbol: "LASER",
uri: "https://ipfs.io/ipfs/YOUR_METADATA_CID",
initial_buy: "0.05",
slippage: "5",
}),
});

const token = await response.json();

Response: 200

{
"mint": "NEW_TOKEN_MINT",
"creator": "MANAGED_WALLET_PUBLIC_KEY",
"metadata_uri": "https://ipfs.io/ipfs/YOUR_METADATA_CID",
"signature": "TRANSACTION_SIGNATURE",
"confirmed": true,
"confirmation_status": "confirmed",
"initial_buy": {
"amount": "0.05",
"amount_lamports": 50000000,
"slippage_bps": 500,
"expected_output": "TOKEN_UNITS_MIN_OUT"
}
}

Create From a Specific Managed Wallet

Use wallet when your API key owns multiple wallets and you do not want to use the default wallet.

Request

const response = await fetch("https://api.solanalaser.xyz/v1/laser/create", {
method: "POST",
headers: {
"content-type": "application/json",
"x-api-key": "sl_your_key",
},
body: JSON.stringify({
wallet: "MANAGED_WALLET_PUBLIC_KEY",
name: "Laser Cat",
symbol: "LASER",
uri: "ipfs://YOUR_METADATA_CID",
initial_buy: 0.02,
slippage: 3,
}),
});

const token = await response.json();

Response: 200

{
"mint": "NEW_TOKEN_MINT",
"creator": "MANAGED_WALLET_PUBLIC_KEY",
"metadata_uri": "ipfs://YOUR_METADATA_CID",
"signature": "TRANSACTION_SIGNATURE",
"confirmed": true,
"confirmation_status": "confirmed",
"initial_buy": {
"amount": "0.02",
"amount_lamports": 20000000,
"slippage_bps": 300,
"expected_output": "TOKEN_UNITS_MIN_OUT"
}
}

Response Fields

FieldMeaning
mintNewly generated token mint address.
creatorManaged wallet public key that created and paid for the token.
metadata_uriFinal metadata URI used in the create instruction.
signatureSolana transaction signature for the create transaction.
confirmedtrue when confirmation polling observed the transaction.
confirmation_statusRPC confirmation status, or null when confirm: false.
initial_buyPresent only when the request included initial_buy.
initial_buy.amountOriginal SOL amount as text.
initial_buy.amount_lamportsSOL amount converted to lamports.
initial_buy.slippage_bpsSlippage converted to basis points. 500 means 5%.
initial_buy.expected_outputMinimum token atomic units requested by the slippage-protected initial buy.

Validation Rules

  • name and symbol cannot be empty.
  • uri is required and must be absolute ipfs://, https://, or http://.
  • initial_buy must be a positive SOL amount as a number or string.
  • initial_buy can use scientific notation when sent as a JSON number.
  • initial_buy must resolve to lamports, so it cannot have more than 9 SOL decimal places.
  • slippage must be greater than 0, at most 50, and have at most 2 decimal places.
  • slippage is only valid when initial_buy is provided.

Common Errors

HTTPDetailMeaning
400name and symbol are requiredname or symbol was empty.
400uri is required and must be externally hosteduri was omitted or empty.
400uri must be an absolute https, http, or ipfs URLuri was not a valid public metadata URI.
400initial_buy must be greater than zeroInitial buy resolved to zero lamports.
400initial_buy must have at most 9 decimal placesSOL precision was smaller than 1 lamport.
400slippage is only valid when initial_buy is providedSlippage was sent without a developer buy.
400token creation simulation failedThe transaction failed simulation and was not submitted.
502RPC or Sender detailUpstream RPC, confirmation, or submission failed.

Notes

  • The API does not return the mint private key. SolanaLaser generates and signs with the mint keypair during creation.
  • Creation with initial_buy is one transaction. It either creates and buys together, or the transaction fails.
  • The selected managed wallet must cover token creation costs, network fees, priority fees, Sender tip, and initial_buy when present.
  • If metadata changes later, update the JSON at your hosted URI. SolanaLaser cannot edit files you host elsewhere.