j7tracker
Create Token

Deploy Token

JSON body with type create_token — platform in mode, common optional fields.

Use POST {regionBase}/submit with "type": "create_token". The platform is the string field mode (not typetype is always create_token here).

Latency: keep /ping warm on your region

Deploy latency improves when the HTTPS path to {regionBase} is already warm. From your client (including extension background), call GET {regionBase}/ping once at startup, then periodically (e.g. every 15–30 seconds) against the same base you use for /submit — the J7Tracker client does this on about a 20s cadence for the selected region. Details and regional URLs: Endpoints & Regions — keep-alive.

Required

FieldTypeDescription
typestringMust be create_token
session_idstringJWT (or send Authorization: Bearer instead)
api_keystringYour encrypted API key (see How to get an API key)
modestringPlatform: pump, bonk, bags, usd1, bnb, nadfun, clanker, stroid, …
externalbooleanMust be true for all external/API deploys (extensions, bots, scripts)

Solana platforms use the Solana key in api_key. bnb, nadfun, clanker, and stroid use the EVM key in api_key.

Common fields

FieldTypeDescription
namestringToken name (app may send a space if empty)
tickerstringSymbol
websitestringURL
twitterstringX/Twitter URL
buy_amountnumberCreator buy (SOL or chain-specific unit)
image_urlstringImage URL or data; some prefixes select alternate image/metadata handling
image_typestringe.g. letter, ascii, sol_ascii, url
sell_panel_enabledbooleanUX flag after deploy
private_descbooleanOmit default description in metadata when true
refstringReferral code; server may map username → ref from config
multi_deploynumber>1 enables multi-deploy (server clamps 1–10)
multi_deploy_buy_amountnumberPer-mint buy when multi-deploy (else falls back to buy_amount)
anon_walletsbooleanWith multi-deploy, anonymous wallet mode
vanity_mint_keypairstringBase58 keypair for custom mint
use_vanity_poolstring"pump" or "bonk" / "usd1" pool id for pooled vanity mint

Pump-style fee / agent flags

FieldTypeDescription
mayhem_modebooleanMayhem / Token2022 path when supported
cashback_modeboolean0% creator fees (cashback-style); same as no_creator_fees
agent_modebooleanAgent / buyback routing
buyback_bpsnumberBuyback basis points (e.g. 10000)
agent_buybackbooleanAuto buyback from creator fees (server forces agent + full buyback); same as auto_buyback_cfees
pump_fee_shareholdersarrayFee-share table (see Pump.fun)

Bundle / sniper / auto-sell

FieldTypeDescription
bundlebooleanWith bundle_wallets, same-block bundle buys
bundle_walletsstringComma-separated encrypted_key:amount_sol
sniper_walletsstringComma-separated encrypted_key:amount_sol:delay_ms
auto_sellbooleanEnable auto-sell path
auto_sell_walletsstringFormat parsed server-side for auto-sell

Details: Bundle & Sniper Wallets.

Bags / Bonk / BNB

Platform-specific fields: Other Platforms.

Full examples

All examples use Content-Type: text/plain;charset=UTF-8 with a JSON string body. This skips the CORS preflight OPTIONS request that application/json triggers, shaving one round-trip off deploy latency — critical for browser extensions.

JavaScript (browser extension / fetch)

const BASE = "https://nyc.j7tracker.io/deploy"; // or regional: eu / lax / sgp

const body = JSON.stringify({
  type: "create_token",
  external: true,
  session_id: "<jwt>",
  api_key: "<encrypted_solana_key>",
  mode: "pump",
  name: "My Token",
  ticker: "MTK",
  buy_amount: 1,
  image_url: "https://example.com/image.png",
});

const res = await fetch(`${BASE}/submit`, {
  method: "POST",
  headers: { "Content-Type": "text/plain;charset=UTF-8" },
  body,
});
const data = await res.json();

if (data.type === "token_create_success") {
  console.log("Mint:", data.mint_address);
} else {
  console.error("Error:", data.error);
}

With Authorization header instead of session_id (non-browser clients):

const res = await fetch(`${BASE}/submit`, {
  method: "POST",
  headers: {
    "Content-Type": "text/plain;charset=UTF-8",
    "Authorization": `Bearer ${jwt}`,
  },
  body: JSON.stringify({
    type: "create_token",
    external: true,
    api_key: "<encrypted_solana_key>",
    mode: "pump",
    name: "My Token",
    ticker: "MTK",
    buy_amount: 1,
  }),
});

Python

import requests

BASE = "https://nyc.j7tracker.io/deploy"

payload = {
    "type": "create_token",
    "external": True,
    "session_id": "<jwt>",
    "api_key": "<encrypted_solana_key>",
    "mode": "pump",
    "name": "My Token",
    "ticker": "MTK",
    "buy_amount": 1,
    "image_url": "https://example.com/image.png",
}

resp = requests.post(
    f"{BASE}/submit",
    headers={"Content-Type": "text/plain;charset=UTF-8"},
    data=json.dumps(payload),
    timeout=35,
)
data = resp.json()

if data.get("type") == "token_create_success":
    print(f"Mint: {data['mint_address']}")
else:
    print(f"Error: {data.get('error')}")

Rust

use reqwest::Client;
use serde_json::{json, Value};

let base = "https://nyc.j7tracker.io/deploy";
let client = Client::new();

let body = json!({
    "type": "create_token",
    "external": true,
    "session_id": "<jwt>",
    "api_key": "<encrypted_solana_key>",
    "mode": "pump",
    "name": "My Token",
    "ticker": "MTK",
    "buy_amount": 1,
    "image_url": "https://example.com/image.png",
});

let resp = client
    .post(format!("{base}/submit"))
    .header("Content-Type", "text/plain;charset=UTF-8")
    .body(body.to_string())
    .timeout(std::time::Duration::from_secs(35))
    .send()
    .await?;

let data: Value = resp.json().await?;
match data.get("type").and_then(|t| t.as_str()) {
    Some("token_create_success") => {
        println!("Mint: {}", data["mint_address"]);
    }
    _ => {
        eprintln!("Error: {}", data["error"]);
    }
}

Responses

Success

{
  "type": "token_create_success",
  "mint_address": "...",
  "mode": "pump",
  "username": "..."
}

Error

{
  "type": "token_create_error",
  "error": "description",
  "username": "..."
}

The HTTP layer may also return 401 (bad JWT), 400 (bad type), or 504 (wait timeout with optional last_status).


External deploy flag

REQUIRED: pass "external": true in every token deploy POST /submit request body. This flags the deploy as originating from an external integration (extension, bot, script) and is used for logging and stats. Deploys without this flag may be rejected in the future.

{
  "type": "create_token",
  "external": true,
  ...
}

On this page