Developers
Quickstart
Overview
Launching is a two-step flow. The API builds an unsignedtransaction; your wallet signs it (only the creator can), then you submit the signed transaction. Dreams verifies a real on-chain pool exists for the mint before it indexes the coin, so the catalog can't be spammed with fake launches.
Launch a coin
launch.ts
import { VersionedTransaction } from "@solana/web3.js"
// 1. Ask the Dreams API to build an unsigned launch transaction.
const form = new FormData()
form.set("name", "My Dream")
form.set("symbol", "DREAM")
form.set("description", "A home for a great idea.")
form.set("twitter", "https://x.com/dreamsdotcash")
form.set("devBuy", "0.5") // optional dev buy, in SOL
form.set("publicKey", wallet.publicKey.toBase58())
form.set("image", logoFile) // token logo (File/Blob)
const prep = await fetch("https://dreams.cash/api/launch", {
method: "POST",
body: form,
}).then((r) => r.json())
// 2. Sign with the creator wallet — only this wallet can sign the tx.
const tx = VersionedTransaction.deserialize(
Buffer.from(prep.transaction, "base64"),
)
const signed = await wallet.signTransaction(tx)
// 3. Submit. Dreams confirms the on-chain pool before indexing the coin.
const result = await fetch("https://dreams.cash/api/launch/submit", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
signedTx: Buffer.from(signed.serialize()).toString("base64"),
mint: prep.mint,
configAddress: prep.configAddress,
name: "My Dream",
symbol: "DREAM",
}),
}).then((r) => r.json())
console.log("Launched:", result.mint)Next steps
See the API reference for trading and reading coin data, or the Flywheel engine for how automated buybacks are executed.