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.

Running on $DREAM