Create a new token on SunPump's bonding curve.
wallet-cli sunpump launch --name <name> --symbol <symbol> --description <text>
[--image <path> | --image-base64 <base64>]
[--twitter-url <url>] [--telegram-url <url>] [--website-url <url>]
[--dry-run]
The new token is not owned by you. SunPump creates it server-side and chooses its creator — the token's owner — itself. That is not your active account, nor any account in this wallet. You pay no fee, you sign nothing, and the token is not yours to move: afterwards you trade it on the curve with sunpump buy and sunpump sell, exactly like anyone else's SunPump token.
Nothing is signed locally, so the command resolves no account and takes no --account and no password. There is no transaction of this CLI's making — the receipt's createTxHash is the service's, and whether it is on chain yet is a question for tx info.
The token starts in status CREATED, on the curve. It moves to SunSwap only once the curve fills; the command's name is the service's, and the receipt says what actually happened.
The service judges the name and the symbol, not this CLI. A name it will not take, or a symbol already in use, comes back as provider_error with the service's own message. Nothing is checked locally that the service would accept.
A launch is real and permanent. There is no undo and no testnet: the group is mainnet only. Use --dry-run first.
A launch that does not answer may still have happened. SunPump deploys the token before it replies, so once the request may have reached it, every failure short of SunPump saying no — no reply within --timeout, a 5xx, a dropped connection, a reply that does not parse or names no token — fails with launch_outcome_unknown rather than timeout or provider_error. The token may exist. Run sunpump token-search <symbol> and check for it before you launch again: a second launch is a second, permanent token.
--dry-run sends nothing to the create endpoint. It validates the options, reads the logo file, and prints the request that would be made. Because the creator is not known until the service picks one, the preview shows the fact instead of an address.
| Option | Description |
|---|---|
--name <name> |
Required. Token name |
--symbol <symbol> |
Required. Token symbol |
--description <text> |
Required. Token description |
--image <path> |
A logo image file, read and sent as base64. A missing file is file_not_found (exit 2) |
--image-base64 <base64> |
The logo as a base64 string. Excludes --image |
--twitter-url <url> |
Twitter URL; must start with http:// or https:// |
--telegram-url <url> |
Telegram URL; must start with http:// or https:// |
--website-url <url> |
Website URL; must start with http:// or https:// |
--dry-run |
Validate and preview without sending |
A logo is optional; without one the token is created without one, and the dry run says so. An option left out is omitted from the request, not sent empty.
Plus the global options. No --account, --wait or --wait-timeout: nothing is signed locally and no transaction comes back to wait for, so they are refused with invalid_option.
Creating a token with a logo and a website. Note the Creator: the address SunPump chose, not the local account:
wallet-cli sunpump launch --name "My Token" --symbol MYT --description "a demo token" \
--image logo.png --website-url https://example.com --network tron✅ SunPump token created
Name My Token
Symbol MYT
Address TXQiBB5nCC7cewZ13pX6dwoHWxPZ2wK2Yz
Creator TRYeDrXweRdBorzH9XE8KWMq3TinW4fmjd
Status CREATED
Created 2026-10-08 06:12 UTC
Create tx d06b9e3f5a2c8d17e4b0f6a9c3d5e82b1f7a4c0d9e6b3f2a8c5d1e7b4f0a9c36
Logo https://cdn.sunpump.meme/public/logo/MYT_TRYeDr_Qm7vK2pXn4Ls.png
Website https://example.com
Description a demo tokenwallet-cli sunpump launch --name "My Token" --symbol MYT --description "a demo token" \
--image logo.png --website-url https://example.com --network tron -o json{"schema":"wallet-cli.result.v1","success":true,"command":"sunpump.launch","data":{"kind":"sunpump-launch","token":{"address":"TXQiBB5nCC7cewZ13pX6dwoHWxPZ2wK2Yz","symbol":"MYT","name":"My Token","decimals":18,"totalSupply":"1000000000000000000000000000","status":"CREATED","owner":"TRYeDrXweRdBorzH9XE8KWMq3TinW4fmjd","market":{"marketCapUsd":"10982.080555299140726256","priceInTrx":"0.000032710280373832","priceChange24HrPercent":"0","volume24HrSun":"0","virtualLiquidity":"23501.65238834","trxPriceInUsd":"0.334866785815","priceUsd":"0.000010953586451892"},"curve":{"pumpPercentage":"0","currentSold":"0","tokenReserve":"800000000000000000000000000","trxReserve":"0"},"createdAt":"2026-10-08 06:12","createTxHash":"d06b9e3f5a2c8d17e4b0f6a9c3d5e82b1f7a4c0d9e6b3f2a8c5d1e7b4f0a9c36","description":"a demo token","links":{"logo":"https://cdn.sunpump.meme/public/logo/MYT_TRYeDr_Qm7vK2pXn4Ls.png","website":"https://example.com"}}},"meta":{"durationMs":3916,"warnings":[]},"chain":{"family":"tron","network":"tron:728126428","chainId":"728126428"}}The token can be read back with sunpump token-info, which shows the same creator.
kind is sunpump-launch.
- Dry run (
mode: "dry-run"):name,symbol,description, and where givenimage—{source: "file", path, bytes}or{source: "base64", chars}— andlinks(website,twitter,telegram). Exactly the fields the request would carry. - Created:
token, the same recordsunpump token-inforeturns.token.owneris the creator SunPump chose, not your account.createdAtis UTC;createTxHashis the service's transaction.
0 success · 1 execution failure (provider_error — the service refused the launch, in its reply or with an HTTP 4xx, including a name or symbol it would not take; launch_outcome_unknown — any other failure once the request may have reached the service, so the token may exist; provider_rate_limited) · 2 usage error (missing_option; invalid_option — --account, --wait, or both --image and --image-base64; file_not_found; invalid_value — a URL that does not start with http:// or https://, or an image file that cannot be read; unsupported_network_capability off mainnet; family_mismatch on an EVM network).
sunpump token-info · sunpump buy · sunpump sell · sunpump group