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:
- Upload the token image to IPFS.
- Build metadata JSON that references the image URI.
- Upload the metadata JSON to IPFS.
- 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
| Field | Type | Required | Meaning |
|---|---|---|---|
name | string | Yes | Token display name used in the Pump create instruction. Must not be empty. |
symbol | string | Yes | Token ticker used in the Pump create instruction. Must not be empty. |
uri | string | Yes | Public metadata JSON URI. Accepts ipfs://, https://, or http://. Aliases: metadataUrl, metadataUri. |
wallet | string | No | Managed wallet public key to use as creator and payer. Defaults to the API key's default wallet. |
mayhem_mode | boolean | No | Pump create flag. Defaults to false. Alias: mayhemMode. |
cashback | boolean | No | Pump creator cashback flag. Defaults to false. |
initial_buy | number or string | No | Optional developer buy in SOL, included atomically with creation. Aliases: initialBuy, buyAmountSol, devBuy, dev_buy. |
slippage | number or string | No | Percentage slippage for initial_buy. Default is 2, maximum is 50. Only valid when initial_buy is present. Aliases: initialBuySlippage, devBuySlippage, dev_buy_slippage. |
confirm | boolean | No | Defaults 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
| Field | Meaning |
|---|---|
mint | Newly generated token mint address. |
creator | Managed wallet public key that created and paid for the token. |
metadata_uri | Final metadata URI used in the create instruction. |
signature | Solana transaction signature for the create transaction. |
confirmed | true when confirmation polling observed the transaction. |
confirmation_status | RPC confirmation status, or null when confirm: false. |
initial_buy | Present only when the request included initial_buy. |
initial_buy.amount | Original SOL amount as text. |
initial_buy.amount_lamports | SOL amount converted to lamports. |
initial_buy.slippage_bps | Slippage converted to basis points. 500 means 5%. |
initial_buy.expected_output | Minimum token atomic units requested by the slippage-protected initial buy. |
Validation Rules
nameandsymbolcannot be empty.uriis required and must be absoluteipfs://,https://, orhttp://.initial_buymust be a positive SOL amount as a number or string.initial_buycan use scientific notation when sent as a JSON number.initial_buymust resolve to lamports, so it cannot have more than 9 SOL decimal places.slippagemust be greater than0, at most50, and have at most 2 decimal places.slippageis only valid wheninitial_buyis provided.
Common Errors
| HTTP | Detail | Meaning |
|---|---|---|
400 | name and symbol are required | name or symbol was empty. |
400 | uri is required and must be externally hosted | uri was omitted or empty. |
400 | uri must be an absolute https, http, or ipfs URL | uri was not a valid public metadata URI. |
400 | initial_buy must be greater than zero | Initial buy resolved to zero lamports. |
400 | initial_buy must have at most 9 decimal places | SOL precision was smaller than 1 lamport. |
400 | slippage is only valid when initial_buy is provided | Slippage was sent without a developer buy. |
400 | token creation simulation failed | The transaction failed simulation and was not submitted. |
502 | RPC or Sender detail | Upstream 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_buyis 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_buywhen present. - If metadata changes later, update the JSON at your hosted URI. SolanaLaser cannot edit files you host elsewhere.