Skip to main content

Create Token

Create tokens on Pump.fun directly through our API — in a single request. This is an extension of the Trade API: everything that works there works here too.

Endpoint

POST https://api.pumpapi.io

Parameters

ParameterRequiredDescription
nameYesToken name
symbolYesToken ticker symbol
imageURLNoToken image URL. Without it, Pump.fun won't display your token — only bots will be able to trade it. You can host images on prnt.sc, imgur.com, or imgbb.com, or simply copy an image URL from Google Images.
descriptionNoToken description
websiteNoProject website URL
telegramNoTelegram channel/group link
xNoX (Twitter) profile link
uriNoCustom metadata URI. If provided, imageURL, description, website, telegram, and x are ignored
mayhemModeNoDefault: false
cashbackToTradersEnabledNoDefault: false. If true, trading fees are earned by traders, not you
mintPrivateKeyNoCustom mint address key. By default we generate tokens with the pump ending — you don't need to set this
amountNoAmount of SOL to buy as dev on launch

Basic Example

import requests

url = "https://api.pumpapi.io"

data = {
"privateKey": "base58_private_key",
"action": "create",
"name": "PumpApi",
"symbol": "PAPI",
"description": "Fast API for Pump.fun, Raydium, Meteora",
"imageURL": "https://pumpapi.io/img/pumpapi_logo.webp",
"website": "https://pumpapi.io",
"telegram": "https://t.me/YOUR_TG",
"x": "https://x.com/realpumpapi",
"amount": "0.0001",
"denominatedInQuote": "true",
"priorityFee": "0.00002001",
}

response = requests.post(url, json=data)
print(response.json())

Multi-Wallet Launch with Actions

You can use Actions to apply advanced strategies — for example, buying from multiple wallets in a single transaction, or changing the txSigner to avoid some copy-traders.

{
"privateKey": "base58_fee_payer_key",
"actions": [
{
"privateKey": "dev_wallet_key",
"action": "create",
"name": "PumpApi",
"symbol": "PAPI",
"imageURL": "https://pumpapi.io/img/pumpapi_logo.webp",
"amount": 0.1
},
{
"privateKey": "wallet_b_key",
"action": "buy",
"mint": "token_address",
"amount": 0.05,
"denominatedInQuote": true,
"slippage": 99
},
{
"privateKey": "wallet_c_key",
"action": "buy",
"mint": "token_address",
"amount": 0.05,
"denominatedInQuote": true,
"slippage": 99
}
]
}

Local Transactions

Local (unsigned) transactions are supported too — just send publicKey instead of privateKey to receive an unsigned transaction, sign it on your side, and broadcast it yourself. See the Trade API page for local transaction code examples.



Custom Metadata URI

For experts

This step is entirely optional. By default, we host your token metadata on our server so you can create a token with a single request.

If you want to use the standard Pump.fun method, you can upload your icon and metadata to IPFS yourself, then pass the resulting URI as "uri" when creating the token. When uri is set, the imageURL, description, telegram, and x fields are ignored.

Show IPFS upload example
import requests

# Define token metadata
uri_data = {
"name": "PumpApi",
"symbol": "PAPI",
"description": "Fast API for Pump.fun, Raydium, Meteora",
"twitter": "https://x.com/realpumpapi",
"telegram": "https://t.me/YOUR_TG",
"website": "https://pumpapi.io",
"showName": "true"
}

# Load your image
# Windows:
# with open("C:\\Users\\Admin\\Pictures\\coin_logo.webp", "rb") as f:
# file_content = f.read()

# Linux / macOS:
with open("/path/to/coin_logo.webp", "rb") as f:
file_content = f.read()

coin_logo = {"file": ("coin_logo.webp", file_content, "image/webp")}

# Upload to IPFS via Pump.fun
response = requests.post("https://pump.fun/api/ipfs", data=uri_data, files=coin_logo)
uri = response.json()["metadataUri"]

# Use the URI when creating your token
data = {
"privateKey": "base58_private_key",
"action": "create",
"name": "PumpApi",
"symbol": "PAPI",
"uri": uri,
"amount": "0.0001",
"priorityFee": "0.00002001",
}

response = requests.post("https://api.pumpapi.io", json=data)
print(response.json())

Need help? Join our Telegram group.