j7tracker
Trade Token

Sell Token

type sell_token — sell by percent of balance via basis_points.

Use POST {regionBase}/submit with "type": "sell_token". Selling is by percentage of wallet balance (basis_points), not a raw token amount.

Required

FieldTypeDescription
typestringMust be sell_token
session_idstringJWT (or Authorization: Bearer)
api_keystringYour encrypted Solana API key (see How to get an API key)
mint_addressstringToken mint
basis_pointsinteger1–10000 = 0.01%–100% of balance to sell (e.g. 2500 = 25%)

Optional

The signer is always the wallet decrypted from api_key. The handler does not read a separate wallet_address (or similar) from the body for sells.

FieldTypeDescription
modestringPlatform routing: pump (default), bonk, ray, usd1, bags, …
creator_walletstringCreator pubkey when it must differ from the signer (defaults to signer if omitted; see below)
mayhem_modebooleanMayhem path when relevant
config_keystringBags fee-config key from deploy
refstringReferral code
priority_fee_solnumberPriority fee in SOL
bribe_fee_solnumberJito-style tip in SOL

Full examples

All examples use Content-Type: text/plain;charset=UTF-8 with a JSON string body to skip the CORS preflight OPTIONS request, saving one round-trip.

username in the body is overwritten from the JWT on /submit.

JavaScript (browser extension / fetch)

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

const body = JSON.stringify({
  type: "sell_token",
  session_id: "<jwt>",
  api_key: "<encrypted_solana_key>",
  mint_address: "MintAddressHere",
  basis_points: 10000, // 100% sell
  mode: "pump",
});

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 === "sell_success") {
  console.log("Sold:", data.signature);
} else {
  console.error("Error:", data.error);
}

Partial sell (25%):

const body = JSON.stringify({
  type: "sell_token",
  session_id: "<jwt>",
  api_key: "<encrypted_solana_key>",
  mint_address: "MintAddressHere",
  basis_points: 2500,
  mode: "pump",
});

Python

import json
import requests

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

payload = {
    "type": "sell_token",
    "session_id": "<jwt>",
    "api_key": "<encrypted_solana_key>",
    "mint_address": "MintAddressHere",
    "basis_points": 10000,
    "mode": "pump",
}

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") == "sell_success":
    print(f"Sold: {data['signature']}")
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": "sell_token",
    "session_id": "<jwt>",
    "api_key": "<encrypted_solana_key>",
    "mint_address": "MintAddressHere",
    "basis_points": 10000,
    "mode": "pump",
});

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("sell_success") => {
        println!("Sold: {}", data["signature"]);
    }
    _ => {
        eprintln!("Error: {}", data["error"]);
    }
}

Responses

Success

{
  "type": "sell_success",
  "signature": "transaction_signature",
  "mint_address": "...",
  "basis_points": 10000,
  "wallet_address": "...",
  "mode": "pump",
  "username": "..."
}

Error

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

The request may take up to 30 seconds before sell_success or sell_error, otherwise 504 with optional last_status.

Buy (SOL amount)

POST /submit does not support buy-by-SOL. This API only documents create_token and sell_token on /submit.

On this page