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, …

Solana platforms use the Solana key in api_key. bnb, nadfun, and clanker 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",
  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",
    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",
    "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",
    "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).

On this page