JetForge/Docs/API Reference

Public REST API v1

Integrate JetForge bonding curve markets into your app, trading bot, or aggregator. Fetch live market data, get real-time quotes, and prepare unsigned Solana transactions. No API key or authentication required.

● LiveGitHub →
Base URL
https://jetforge.io/api/v1
Auth
None required
Rate limit
60 req / min per IP

Returns the API status, current Solana slot, on-chain program ID, and network (devnet / mainnet). Use this to verify connectivity before making trade calls.

Request
shell
curl https://jetforge.io/api/v1/health
Response
json
{
  "status": "ok",
  "version": "1.0.0",
  "network": "mainnet",
  "programId": "7rXDkm484DDp2YoPkLBBLtGMzuwrxysFGUgPUc4EpDmk",
  "slot": 312847651,
  "docs": "https://jetforge.io/docs/api"
}

List all active (non-graduated) JetForge markets with live on-chain bonding curve state — price, reserves, and graduation progress. Suitable for building market screeners or aggregator feeds.

Query Parameters
limitnumberoptionalNumber of markets to return. Default 50, max 200.
sortstringoptionalSort order: new (by creation time), trending (by volume), or graduating (closest to 85 SOL graduation).
Request
shell
curl "https://jetforge.io/api/v1/markets?limit=5&sort=trending"
Response
json
{
  "markets": [
    {
      "marketId": "EKpQ...cjm",
      "name": "WIF",
      "baseSymbol": "WIF",
      "quoteSymbol": "SOL",
      "baseMint": "EKpQ...cjm",
      "bondingCurveAddress": "7xQ1...pda",
      "creator": "9xDe...xyz",
      "decimals": 6,
      "price": 0.00000003,
      "priceSOL": 0.00000003,
      "virtualSolReserves": "30000000000",
      "virtualTokenReserves": "1073000191000000",
      "realSolReserves": "1294200000",
      "realTokenReserves": "42731050000000",
      "graduated": false,
      "progress": 1.5,
      "imageUrl": "https://...",
      "createdAt": "2026-05-24T10:00:00Z"
    }
  ],
  "count": 1,
  "network": "mainnet"
}

Get a real-time trade quote directly from the on-chain bonding curve state. Returns expected output, fee, price impact, and minimum output after slippage. No transaction is sent.

Query Parameters
mintstringrequiredToken mint address (base58).
sidestringrequiredTrade direction: buy or sell.
amountnumberrequiredFor buy: SOL amount in lamports (1 SOL = 1,000,000,000). For sell: token amount in base units (6 decimals).
slippageBpsnumberoptionalSlippage tolerance in basis points. Default 300 (3%).
Request
shell
# Buy quote: 0.1 SOL (100,000,000 lamports)
curl "https://jetforge.io/api/v1/quote?mint=EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm&side=buy&amount=100000000"

# Sell quote: 1,000 tokens (1,000,000,000 base units at 6 decimals)
curl "https://jetforge.io/api/v1/quote?mint=EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm&side=sell&amount=1000000000"
Response
json
{
  "quote": {
    "marketId": "EKpQ...cjm",
    "bondingCurveAddress": "7xQ1...pda",
    "side": "buy",
    "inputAmount": "100000000",
    "inputAmountHuman": "0.100000 SOL",
    "outputAmount": "3464437480000",
    "outputAmountHuman": "3,464,437.48 tokens",
    "price": 0.000000029,
    "priceImpactPct": 0.655,
    "estimatedFeeLamports": "1000000",
    "minimumOutput": "3354163955600",
    "slippageBps": 300,
    "curveState": {
      "virtualSolReserves": "30000000000",
      "virtualTokenReserves": "1073000191000000",
      "realSolReserves": "1294200000",
      "realTokenReserves": "42731050000000"
    }
  }
}

Build a fully-formed, unsigned Solana transaction for a buy or sell on the JetForge bonding curve. The server constructs the instruction, sets the fee payer and recent blockhash, then returns the transaction as base64. You sign it with your own wallet and broadcast it — JetForge never touches your private key.

Request Body (JSON)
mintstringrequiredToken mint address.
sidestringrequired"buy" or "sell".
amountstringrequiredLamports for buy, token base units for sell. Pass as string to avoid precision loss.
walletPublicKeystringrequiredCaller's wallet public key (base58). Used as fee payer.
slippageBpsnumberoptionalSlippage tolerance in basis points. Default 300.
Request
shell
curl -X POST https://jetforge.io/api/v1/trade/prepare \
  -H "Content-Type: application/json" \
  -d '{
    "mint": "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm",
    "side": "buy",
    "amount": "100000000",
    "walletPublicKey": "YOUR_WALLET_PUBLIC_KEY",
    "slippageBps": 300
  }'
Response
json
{
  "transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADe...base64==",
  "message": "Sign and broadcast this transaction to buy on JetForge",
  "quote": {
    "marketId": "EKpQ...cjm",
    "side": "buy",
    "inputAmount": "100000000",
    "outputAmount": "3464437480000",
    "fee": "1000000",
    "minimumOutput": "3354163955600",
    "slippageBps": 300,
    "blockhash": "8ZyJ...",
    "lastValidBlockHeight": 312847751
  },
  "instructions": {
    "description": "Sign with your wallet and sendRawTransaction",
    "code": [
      "const tx = Transaction.from(Buffer.from(response.transaction, 'base64'));",
      "const signed = await wallet.signTransaction(tx);",
      "const sig = await connection.sendRawTransaction(signed.serialize());",
      "await connection.confirmTransaction(sig, 'confirmed');"
    ]
  }
}

Get the SOL balance and all SPL token positions for any Solana wallet. Optionally filter to specific mints. Useful for building portfolio views or checking a bot wallet's holdings before trading.

Query Parameters
mintsstringoptionalComma-separated list of mint addresses to filter. Omit to return all token accounts.
Request
shell
# All positions
curl "https://jetforge.io/api/v1/wallet/YOUR_WALLET_ADDRESS"

# Filter to specific tokens
curl "https://jetforge.io/api/v1/wallet/YOUR_WALLET_ADDRESS?mints=EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm"
Response
json
{
  "wallet": "9xDe...xyz",
  "solBalance": "2450000000",
  "solBalanceSOL": 2.45,
  "tokenCount": 2,
  "tokens": [
    {
      "mint": "EKpQ...cjm",
      "balance": "3464437480000",
      "balanceUi": 3464437.48,
      "decimals": 6,
      "ataAddress": "4rT2...ata"
    }
  ]
}

SDK Example

Full buy flow in TypeScript — get a quote, prepare the unsigned transaction, sign with your wallet, and broadcast.

typescript
import { Connection, Transaction } from "@solana/web3.js";
import { useWallet } from "@solana/wallet-adapter-react";

const BASE = "https://jetforge.io/api/v1";
const connection = new Connection("https://api.mainnet-beta.solana.com");

// 1. Get a buy quote
const quote = await fetch(
  `${BASE}/quote?mint=${MINT}&side=buy&amount=100000000`
).then(r => r.json());

console.log("You will receive:", quote.quote.outputAmountHuman);
console.log("Price impact:", quote.quote.priceImpactPct + "%");

// 2. Build the unsigned transaction
const { transaction: txBase64 } = await fetch(`${BASE}/trade/prepare`, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    mint: MINT,
    side: "buy",
    amount: "100000000",
    walletPublicKey: wallet.publicKey.toBase58(),
    slippageBps: 300,
  }),
}).then(r => r.json());

// 3. Sign and broadcast (using Solana wallet adapter)
const { signTransaction } = useWallet();
const tx = Transaction.from(Buffer.from(txBase64, "base64"));
const signed = await signTransaction(tx);
const sig = await connection.sendRawTransaction(signed.serialize());
await connection.confirmTransaction(sig, "confirmed");
console.log("TX:", sig);

Error Responses

400
Bad Request
Missing or invalid parameters.
404
Not Found
Mint not found on JetForge.
500
Server Error
RPC or internal error. Retry with backoff.
json
{ "error": "Human-readable error message" }
On-Chain Details
Program ID
7rXDkm484DDp2YoPkLBBLtGMzuwrxysFGUgPUc4EpDmk
Treasury
13DWuEycYuJvGpo2EwPMgaiBDfRKmpoxdXjJ5GKe9RPW
Fee
1% per trade — split: 40% creator / 40% treasury / 20% buyback
Graduation
85 SOL real reserves → auto-migrate to Raydium
Token supply
1,000,000,000 tokens, 6 decimals
AMM
Constant-product bonding curve (k = virtualSol × virtualTokens)
SupportTelegramGitHubAboutJetForge Public API v1 — 2026