woopwoop

Endpoint reference

Every v1 endpoint, with its parameters, body and response.

Base URL https://usewoop.xyz/api/v1. Send Authorization: Bearer woop_… with every request. The machine-readable schema (OpenAPI 3.1) is at /api/v1/openapi.json: load it into Postman, Insomnia or a client generator.

Every endpoint can also answer with an Error: see errors and limits.

MethodPathDoes
POST/uploadsStore an image
POST/launchesBuild a launch
GET/launchesYour launches
GET/pairsPairs open for launches
GET/tickers/{symbol}Check a ticker
POST/tradesBuild a buy or sell
POST/exitsQueue a sell
POST/exits/cancelCancel a queued sell
POST/creator/claimTake unlocked coins
POST/creator/lockLock for longer
POST/refundsTake a refund
POST/transactionsSend a signed transaction
GET/coinsList coins
GET/coins/{mint}One coin
GET/coins/{mint}/tradesIts trades
GET/coins/{mint}/holdersIts holders
GET/coins/{mint}/candlesIts candles
GET/coins/{mint}/curveIts woopcurve state
GET/coins/{mint}/queueIts Exit Queue
GET/coins/{mint}/positions/{wallet}A wallet's position
GET/coins/{mint}/payoutsIts payouts to holders
GET/coins/{mint}/eventsIts events
GET/coins/{mint}/signalsIts rug signals
GET/wallets/{wallet}/portfolioA wallet's portfolio
GET/meYour key

Launch

POST /uploads

Store an image. A coin image (cropped square) or a 3:1 banner, as WebP on woop's CDN. Send multipart file (and kind), or JSON.

Body: UploadJson

FieldTypeDescription
urlstringAn https image for woop to fetchoptional
datastringThe image as base64 (a data: URL works)optional
kindimage|bannerDefault imageoptional

Request

bash
curl -X POST "https://usewoop.xyz/api/v1/uploads" \
  -H "Authorization: Bearer $WOOP_API_KEY" \
  -F file=@moon-cat.png \
  -F kind=image
js
const form = new FormData();
form.append('file', file); // a File or Blob
form.append('kind', 'image');

const res = await fetch('https://usewoop.xyz/api/v1/uploads', {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
  body: form,
});
const { url } = await res.json();

Returns: Upload

json
{
  "url": "https://zync-pad.b-cdn.net/coins/img/a9788d7c9762b17650551eb2.webp",
  "kind": "image"
}

POST /launches

Build a launch. A new coin on the woopcurve. Name, ticker, image and pair are required. The creator signs the result and sends it to /transactions; the coin then shows on woop like any other.

Body: LaunchRequest

FieldTypeDescription
walletstringThe creator. Signs and pays for the launch, and is credited as its creator
namestring1–32 characters
symbolstringThe ticker: 2–10 letters or numbers
imagestringFrom POST /uploads, or any https image URL (woop stores it)
pairstringA pair's symbol or mint from GET /pairs
descriptionstringUp to 280 charactersoptional
bannerstringA 3:1 banner: from POST /uploads (kind banner) or an https URLoptional
linksLinksThe coin's website and socialsoptional
firstBuystringThe creator's buy in the fair opening, in the pair token (e.g. "0.5")optional
unlockDaysintegerDays the creator's coins unlock over after graduation (default 10)optional
cliffDaysintegerDays after graduation before they start unlocking (default 0)optional

Request

bash
curl -X POST "https://usewoop.xyz/api/v1/launches" \
  -H "Authorization: Bearer $WOOP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wallet":"8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6","name":"Moon Cat","symbol":"MCAT","image":"https://zync-pad.b-cdn.net/coins/img/a9788d7c9762b17650551eb2.webp","pair":"SOL","description":"The cat that went to the moon.","links":{"website":"https://mooncat.xyz","x":"https://x.com/mooncat"},"firstBuy":"0.5"}'
js
const res = await fetch('https://usewoop.xyz/api/v1/launches', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.WOOP_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "wallet": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
    "name": "Moon Cat",
    "symbol": "MCAT",
    "image": "https://zync-pad.b-cdn.net/coins/img/a9788d7c9762b17650551eb2.webp",
    "pair": "SOL",
    "description": "The cat that went to the moon.",
    "links": {
      "website": "https://mooncat.xyz",
      "x": "https://x.com/mooncat"
    },
    "firstBuy": "0.5"
  }),
});
if (!res.ok) throw new Error((await res.json()).error.message);
const launchResult = await res.json();
// next: sign launchResult.transaction with the wallet, then POST it to /api/v1/transactions

Returns: LaunchResult

json
{
  "mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
  "transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA…",
  "lastValidBlockHeight": 312345678,
  "metadataUri": "https://zync-pad.b-cdn.net/coins/5eCpSHzTKsiafptauyG2vfDZhSdvMR4dz7jgvMX7Paop.json",
  "pair": {
    "symbol": "SOL",
    "mint": "So11111111111111111111111111111111111111112"
  },
  "image": "https://zync-pad.b-cdn.net/coins/img/a9788d7c9762b17650551eb2.webp",
  "banner": "https://zync-pad.b-cdn.net/coins/banner/0c1d2e3f4a5b6c7d8e9f0a1b.webp",
  "costSol": 0.015,
  "firstBuy": {
    "amount": "0.5",
    "coins": "in the fair opening"
  },
  "next": "Sign `transaction` with `wallet`, then POST it to /api/v1/transactions."
}

GET /launches

Your launches. Coins your key's wallet launched through the API.

Request

bash
curl "https://usewoop.xyz/api/v1/launches" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/launches', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const apiLaunchs = await res.json();

Returns: ApiLaunch[]

json
[
  {
    "mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
    "name": "Moon Cat",
    "symbol": "MCAT",
    "launchedAt": "2026-11-01T14:58:36.000Z",
    "url": "https://usewoop.xyz/coin/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp"
  }
]

GET /pairs

Pairs open for launches. The pairs a coin can launch on right now.

Request

bash
curl "https://usewoop.xyz/api/v1/pairs" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/pairs', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const pairs = await res.json();

Returns: Pair[]

json
[
  {
    "symbol": "SOL",
    "name": "Solana",
    "mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
    "category": "Crypto",
    "logo": "https://zync-pad.b-cdn.net/pairs/So11111111111111111111111111111111111111112.webp",
    "decimals": 9,
    "graduationRaise": 125.8
  }
]

GET /tickers/{symbol}

Check a ticker. Whether a ticker is free. A taken one costs 1 SOL, paid to that coin's holders.

ParameterInTypeDescription
symbolpathstring2–10 letters or numbersrequired

Request

bash
curl "https://usewoop.xyz/api/v1/tickers/MCAT" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/tickers/MCAT', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const ticker = await res.json();

Returns: Ticker

json
{
  "symbol": "MCAT",
  "available": false,
  "takenBy": {
    "mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
    "name": "Moon Cat"
  },
  "copyFeeSol": 1
}

Trade

POST /trades

Build a buy or sell. Instant (the Exit Queue first, then the curve or pool) or a Fair Block order (settles with the block at one price).

Body: TradeRequest

FieldTypeDescription
walletstringThe trader
mintstringThe coin
sidebuy|sellBuy or sell
amountstringBuys: pair token to spend, fees included. Sells: coins to sell
modeinstant|blockinstant (default) fills now; block joins the open Fair Blockoptional
slippageBpsintegerInstant trades: the most the price may move, in basis pointsoptional
payWithpair|solsol pays with SOL on a non-SOL pair, swapped in the same transaction (mainnet)optional
refstringA promoter wallet: it earns 0.25% of the tradeoptional

Request

bash
curl -X POST "https://usewoop.xyz/api/v1/trades" \
  -H "Authorization: Bearer $WOOP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wallet":"8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6","mint":"6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp","side":"buy","amount":"0.25","mode":"instant","slippageBps":300}'
js
const res = await fetch('https://usewoop.xyz/api/v1/trades', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.WOOP_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "wallet": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
    "mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
    "side": "buy",
    "amount": "0.25",
    "mode": "instant",
    "slippageBps": 300
  }),
});
if (!res.ok) throw new Error((await res.json()).error.message);
const tradeResult = await res.json();
// next: sign tradeResult.transaction with the wallet, then POST it to /api/v1/transactions

Returns: TradeResult

json
{
  "transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA…",
  "lastValidBlockHeight": 312345678,
  "side": "buy",
  "mode": "instant",
  "amountIn": "0.25",
  "expectedOut": "4580211.33",
  "minOut": "4442804.99",
  "priceImpactPct": 0.84,
  "fee": "0.00375",
  "exitQueue": {
    "coins": "1200000",
    "quote": "0.065",
    "dip": false,
    "discountPct": 0
  },
  "block": null,
  "swap": null,
  "next": "Sign `transaction` with `wallet`, then POST it to /api/v1/transactions."
}

Exit Queue

POST /exits

Queue a sell. Coins wait in the Exit Queue and fill into instant buys at the curve's price, never below the floor. The seller is paid automatically.

Body: ExitPlaceRequest

FieldTypeDescription
walletstringThe seller
mintstringThe coin
amountstringCoins to queue
floorPctnumberThe lowest price accepted against now, −50 to 900 (default −5: up to 5% below)optional

Request

bash
curl -X POST "https://usewoop.xyz/api/v1/exits" \
  -H "Authorization: Bearer $WOOP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wallet":"8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6","mint":"6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp","amount":"20000000","floorPct":-5}'
js
const res = await fetch('https://usewoop.xyz/api/v1/exits', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.WOOP_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "wallet": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
    "mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
    "amount": "20000000",
    "floorPct": -5
  }),
});
if (!res.ok) throw new Error((await res.json()).error.message);
const builtTransaction = await res.json();
// next: sign builtTransaction.transaction with the wallet, then POST it to /api/v1/transactions

Returns: BuiltTransaction

json
{
  "transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA…",
  "lastValidBlockHeight": 312345678,
  "next": "Sign `transaction` with `wallet`, then POST it to /api/v1/transactions."
}

POST /exits/cancel

Cancel a queued sell. Unsold coins and what the order sold for go back to the seller.

Body: ExitCancelRequest

FieldTypeDescription
walletstringThe seller
mintstringThe coin
slotintegerThe order's slot, from GET /coins/{mint}/queue

Request

bash
curl -X POST "https://usewoop.xyz/api/v1/exits/cancel" \
  -H "Authorization: Bearer $WOOP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wallet":"8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6","mint":"6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp","slot":0}'
js
const res = await fetch('https://usewoop.xyz/api/v1/exits/cancel', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.WOOP_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "wallet": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
    "mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
    "slot": 0
  }),
});
if (!res.ok) throw new Error((await res.json()).error.message);
const builtTransaction = await res.json();
// next: sign builtTransaction.transaction with the wallet, then POST it to /api/v1/transactions

Returns: BuiltTransaction

json
{
  "transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA…",
  "lastValidBlockHeight": 312345678,
  "next": "Sign `transaction` with `wallet`, then POST it to /api/v1/transactions."
}

Creator

POST /creator/claim

Take unlocked coins. After graduation the creator's coins unlock day by day; this sends what has unlocked so far to the creator.

Body: WalletCoin

FieldTypeDescription
walletstringThe wallet that signs
mintstringThe coin

Request

bash
curl -X POST "https://usewoop.xyz/api/v1/creator/claim" \
  -H "Authorization: Bearer $WOOP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wallet":"8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6","mint":"6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp"}'
js
const res = await fetch('https://usewoop.xyz/api/v1/creator/claim', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.WOOP_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "wallet": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
    "mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp"
  }),
});
if (!res.ok) throw new Error((await res.json()).error.message);
const builtTransaction = await res.json();
// next: sign builtTransaction.transaction with the wallet, then POST it to /api/v1/transactions

Returns: BuiltTransaction

json
{
  "transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA…",
  "lastValidBlockHeight": 312345678,
  "next": "Sign `transaction` with `wallet`, then POST it to /api/v1/transactions."
}

POST /creator/lock

Lock for longer. The creator extends their lock. It can only grow.

Body: CreatorLockRequest

FieldTypeDescription
walletstringThe coin's creator
mintstringThe coin
unlockDaysintegerDays to unlock over, 1–3650
cliffDaysintegerDays before unlocking starts, 0–3650 (default 0)optional

Request

bash
curl -X POST "https://usewoop.xyz/api/v1/creator/lock" \
  -H "Authorization: Bearer $WOOP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wallet":"8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6","mint":"6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp","unlockDays":30,"cliffDays":7}'
js
const res = await fetch('https://usewoop.xyz/api/v1/creator/lock', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.WOOP_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "wallet": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
    "mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
    "unlockDays": 30,
    "cliffDays": 7
  }),
});
if (!res.ok) throw new Error((await res.json()).error.message);
const builtTransaction = await res.json();
// next: sign builtTransaction.transaction with the wallet, then POST it to /api/v1/transactions

Returns: BuiltTransaction

json
{
  "transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA…",
  "lastValidBlockHeight": 312345678,
  "next": "Sign `transaction` with `wallet`, then POST it to /api/v1/transactions."
}

POST /refunds

Take a refund. A coin that didn't graduate in time refunds everyone the same share of what they put in. The keeper pays everyone automatically; this is the do-it-yourself way.

Body: WalletCoin

FieldTypeDescription
walletstringThe wallet that signs
mintstringThe coin

Request

bash
curl -X POST "https://usewoop.xyz/api/v1/refunds" \
  -H "Authorization: Bearer $WOOP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wallet":"8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6","mint":"6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp"}'
js
const res = await fetch('https://usewoop.xyz/api/v1/refunds', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.WOOP_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "wallet": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
    "mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp"
  }),
});
if (!res.ok) throw new Error((await res.json()).error.message);
const builtTransaction = await res.json();
// next: sign builtTransaction.transaction with the wallet, then POST it to /api/v1/transactions

Returns: BuiltTransaction

json
{
  "transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA…",
  "lastValidBlockHeight": 312345678,
  "next": "Sign `transaction` with `wallet`, then POST it to /api/v1/transactions."
}

Transactions

POST /transactions

Send a signed transaction. Send any signed transaction from a build endpoint. Waits until it confirms. A launch built here is credited to your key's wallet.

Body: SendRequest

FieldTypeDescription
transactionstringBase64, signed
lastValidBlockHeightintegerFrom the build responseoptional

Request

bash
curl -X POST "https://usewoop.xyz/api/v1/transactions" \
  -H "Authorization: Bearer $WOOP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"transaction":"AQAB…signed base64…","lastValidBlockHeight":312345678}'
js
const res = await fetch('https://usewoop.xyz/api/v1/transactions', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.WOOP_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "transaction": "AQAB…signed base64…",
    "lastValidBlockHeight": 312345678
  }),
});
if (!res.ok) throw new Error((await res.json()).error.message);
const sendResult = await res.json();

Returns: SendResult

json
{
  "kind": "launch",
  "signature": "5hqJ7pHZnPTXqbQZfSTSwTPL46q6hSf2ahJ1A5KHNg3DC2NCtcEgDqWZePRYTkcP5Du6GeWqz3NKNL1MdvHJcBfx",
  "mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
  "url": "https://usewoop.xyz/coin/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp"
}

Coins

GET /coins

List coins. Coins on woop.

ParameterInTypeDescription
sortqueryactive|new|graduatedactive (default): last traded first; new: newest first; graduatedoptional
limitqueryinteger1–100, default 20optional
pairquerystringOnly coins on this pair (symbol or mint)optional

Request

bash
curl "https://usewoop.xyz/api/v1/coins?sort=new&limit=20" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/coins?sort=new&limit=20', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const coinSummarys = await res.json();

Returns: CoinSummary[]

json
[
  {
    "mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
    "name": "Moon Cat",
    "symbol": "MCAT",
    "image": "https://zync-pad.b-cdn.net/coins/img/a9788d7c9762b17650551eb2.webp",
    "quoteMint": "So11111111111111111111111111111111111111112",
    "mcUsd": 9640.5,
    "priceQuote": 6.34e-8,
    "holders": 128,
    "graduated": true,
    "lastTradeAt": "2026-11-01T15:20:11.000Z",
    "createdAt": "2026-11-01T14:58:36.000Z"
  }
]

GET /coins/{mint}

One coin.

ParameterInTypeDescription
mintpathstringThe coin's addressrequired

Request

bash
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const coin = await res.json();

Returns: Coin

json
{
  "mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
  "name": "Moon Cat",
  "symbol": "MCAT",
  "image": "https://zync-pad.b-cdn.net/coins/img/a9788d7c9762b17650551eb2.webp",
  "quoteMint": "So11111111111111111111111111111111111111112",
  "mcUsd": 9640.5,
  "priceQuote": 6.34e-8,
  "holders": 128,
  "graduated": true,
  "lastTradeAt": "2026-11-01T15:20:11.000Z",
  "createdAt": "2026-11-01T14:58:36.000Z",
  "curve": true,
  "banner": null,
  "creator": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
  "network": "mainnet",
  "quoteUsd": 152.1,
  "priceUsd": 0.0000096,
  "liquidityUsd": 3820.4,
  "paidToHoldersUsd": 41.27,
  "paidToHoldersQuote": 0.2713,
  "curvePct": 7.7,
  "top10Pct": 18.4,
  "devPct": 1.9,
  "volume24hUsd": 15230,
  "change24hPct": 34.2,
  "trades": 412,
  "fairSale": null
}

GET /coins/{mint}/trades

Its trades. Newest first. Fair Block orders, Exit Queue fills and fair launch shares are tagged in via.

ParameterInTypeDescription
mintpathstringThe coin's addressrequired
limitqueryinteger1–200, default 60optional

Request

bash
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/trades?limit=60" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/trades?limit=60', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const trades = await res.json();

Returns: Trade[]

json
[
  {
    "id": "5hqJ7pHZnPTXqbQZfSTSwTPL46q6hSf2ahJ1A5KHNg3DC2NCtcEgDqWZePRYTkcP5Du6GeWqz3NKNL1MdvHJcBfx:1000",
    "signature": "5hqJ7pHZnPTXqbQZfSTSwTPL46q6hSf2ahJ1A5KHNg3DC2NCtcEgDqWZePRYTkcP5Du6GeWqz3NKNL1MdvHJcBfx",
    "side": "buy",
    "trader": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
    "quote": 0.25,
    "amount": 4580211.33,
    "usd": 38.02,
    "mcUsd": 9640.5,
    "time": "2026-11-01T14:58:36.000Z",
    "via": "block"
  }
]

GET /coins/{mint}/holders

Its holders. The biggest 100, with what each bought, sold and earned.

ParameterInTypeDescription
mintpathstringThe coin's addressrequired

Request

bash
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/holders" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/holders', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const holders = await res.json();

Returns: Holder[]

json
[
  {
    "address": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
    "pct": 0.46,
    "since": "2026-11-01T14:58:36.000Z",
    "amount": 4580211.33,
    "earnedQuote": 0.0031,
    "earnedUsd": 0.47,
    "boughtAmount": 6000000,
    "soldAmount": 1420000,
    "boughtQuote": 0.2,
    "soldQuote": 0.1,
    "valueQuote": 0.2903,
    "pnlQuote": 0.1903,
    "boughtUsd": 30.42,
    "soldUsd": 15.21,
    "valueUsd": 44.15,
    "pnlUsd": 28.94
  }
]

GET /coins/{mint}/candles

Its candles. Market-cap candles in USD.

ParameterInTypeDescription
mintpathstringThe coin's addressrequired
tfqueryintegerSeconds per candle: 1, 5, 15, 30, 60 (default), 300, 900, 1800, 3600 or 14400optional

Request

bash
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/candles?tf=60" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/candles?tf=60', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const candles = await res.json();

Returns: Candle[]

json
[
  {
    "time": 3,
    "open": 9600,
    "high": 9800,
    "low": 9500,
    "close": 9640,
    "volume": 512.3
  }
]

GET /coins/{mint}/curve

Its woopcurve state. Progress, graduation, the open Fair Block, fees and the creator's lock. With wallet, that wallet's order, Exit Queue orders, instant-sell allowance and refund.

ParameterInTypeDescription
mintpathstringThe coin's addressrequired
walletquerystringA wallet: adds its sideoptional

Request

bash
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/curve?wallet=8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/curve?wallet=8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const curve = await res.json();

Returns: Curve

json
{
  "status": "trading",
  "quoteDecimals": 9,
  "raised": 9.68,
  "target": 125.8,
  "soldPct": 7.1,
  "mcap": {
    "start": 33,
    "now": 63.4,
    "graduation": 328.8
  },
  "graduatedAt": null,
  "pool": null,
  "openingEndsAt": null,
  "blockClosesAt": null,
  "refundAt": "2026-11-01T14:58:36.000Z",
  "advance": {
    "amount": 4580211.33,
    "repaid": 0.06,
    "owed": 0.94
  },
  "creator": {
    "locked": 18791167.7,
    "vest": 0,
    "claimed": 0,
    "claimable": 0,
    "unlockDays": 10,
    "cliffDays": 0,
    "graduatedAt": null
  },
  "creatorFeesOwed": 0.0042,
  "fees": {
    "trade": 1.5,
    "instant": 10,
    "exit": 1,
    "pool": 1.5,
    "tierHalf": true,
    "split": {
      "trade": [
        0.6,
        0.5,
        0.4
      ],
      "instant": [
        0.5,
        0.25,
        0.25
      ],
      "exit": [
        0.5,
        0.25,
        0.25
      ],
      "pool": [
        0.6,
        0.5,
        0.4
      ]
    }
  },
  "mine": {
    "order": null,
    "exits": [
      {
        "slot": 0,
        "left": 4000000,
        "owed": 0.94,
        "floorPct": -5
      }
    ],
    "instantMax": 916042.2,
    "instantNextAt": null,
    "refund": null
  }
}

GET /coins/{mint}/queue

Its Exit Queue. Orders waiting now and every order before them.

ParameterInTypeDescription
mintpathstringThe coin's addressrequired
walletquerystringA wallet: adds its sideoptional

Request

bash
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/queue?wallet=8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/queue?wallet=8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const queue = await res.json();

Returns: Queue

json
{
  "spot": 6.34e-8,
  "quoteDecimals": 9,
  "orders": [
    {
      "slot": 0,
      "id": "5hqJ7pHZnPTXqbQZfSTSwTPL46q6hSf2ahJ1A5KHNg3DC2NCtcEgDqWZePRYTkcP5Du6GeWqz3NKNL1MdvHJcBfx:1000",
      "seller": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
      "remaining": 12000000,
      "floor": 6.02e-8,
      "floorPct": -5,
      "proceeds": 0.31,
      "mine": true
    }
  ],
  "totalQueued": 12000000,
  "graduated": true,
  "feePct": 1,
  "tierFeePct": 0.5,
  "tier": true,
  "history": [
    {
      "id": "5hqJ7pHZnPTXqbQZfSTSwTPL46q6hSf2ahJ1A5KHNg3DC2NCtcEgDqWZePRYTkcP5Du6GeWqz3NKNL1MdvHJcBfx:1000",
      "seller": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
      "mine": true,
      "amount": 8000000,
      "filled": 8000000,
      "received": 0.49,
      "floor": 6.02e-8,
      "status": "filled",
      "placedAt": "2026-11-01T15:02:10.000Z",
      "closedAt": null,
      "slot": null
    }
  ]
}

GET /coins/{mint}/positions/{wallet}

A wallet's position. What the wallet holds, paid and got, and its profit or loss.

ParameterInTypeDescription
mintpathstringThe coin's addressrequired
walletpathstringThe walletrequired

Request

bash
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/positions/8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/positions/8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const position = await res.json();

Returns: Position

json
{
  "wallet": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
  "amount": 4580211.33,
  "pct": 0.46,
  "quoteSymbolMint": "So11111111111111111111111111111111111111112",
  "valueQuote": 0.2903,
  "valueUsd": 44.15,
  "paidQuote": 0.2,
  "receivedQuote": 0.1,
  "pnlQuote": 0.1903,
  "pnlUsd": 28.94,
  "trades": 412,
  "boughtAmount": 6000000,
  "soldAmount": 1420000,
  "since": "2026-11-01T14:58:36.000Z",
  "quoteUsd": 152.1
}

GET /coins/{mint}/payouts

Its payouts to holders. Holders are paid every hour, automatically, in the pair token.

ParameterInTypeDescription
mintpathstringThe coin's addressrequired

Request

bash
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/payouts" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/payouts', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const payouts = await res.json();

Returns: Payout[]

json
[
  {
    "epoch": 37,
    "rewardMint": "So11111111111111111111111111111111111111112",
    "amount": 0.0271,
    "amountUsd": 4.12,
    "holders": 128,
    "postedAt": "2026-11-01T15:00:00.000Z"
  }
]

GET /coins/{mint}/events

Its events. Holder payouts, promoter fees, Fair Blocks, Exit Queue fills and creator fees, oldest first (the chart's markers).

ParameterInTypeDescription
mintpathstringThe coin's addressrequired

Request

bash
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/events" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/events', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const events = await res.json();

Returns: Event[]

json
[
  {
    "time": 3,
    "kind": "fairblock",
    "usd": 94.9,
    "n": 14
  }
]

GET /coins/{mint}/signals

Its rug signals. Dev-linked wallets, snipers, bundled buys and who funded the creator.

ParameterInTypeDescription
mintpathstringThe coin's addressrequired

Request

bash
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/signals" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/signals', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const signals = await res.json();

Returns: Signals

json
{
  "devFunder": "3Qx9vLm2TnB8rJ5cWzXy7kP4sF1gH6dA9eN0bRtUoVi",
  "devFundedByExchange": true,
  "linked": {
    "wallets": [],
    "pct": 0
  },
  "snipers": {
    "wallets": [],
    "pct": 0
  },
  "bundled": {
    "wallets": [],
    "pct": 0
  },
  "lock": null,
  "checked": 40,
  "holders": 128
}

Wallets

GET /wallets/{wallet}/portfolio

A wallet's portfolio. Every woop coin the wallet holds or earned from, with totals.

ParameterInTypeDescription
walletpathstringThe walletrequired

Request

bash
curl "https://usewoop.xyz/api/v1/wallets/8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6/portfolio" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/wallets/8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6/portfolio', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const portfolio = await res.json();

Returns: Portfolio

json
{
  "holdings": [
    {
      "coin": {
        "mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
        "name": "Moon Cat",
        "symbol": "MCAT",
        "image": "https://zync-pad.b-cdn.net/coins/img/a9788d7c9762b17650551eb2.webp",
        "quoteMint": "So11111111111111111111111111111111111111112",
        "mcUsd": 9640.5,
        "priceQuote": 6.34e-8,
        "holders": 128,
        "graduated": true,
        "lastTradeAt": "2026-11-01T15:20:11.000Z",
        "createdAt": "2026-11-01T14:58:36.000Z",
        "curve": true,
        "banner": null,
        "creator": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
        "network": "mainnet",
        "quoteUsd": 152.1,
        "priceUsd": 0.0000096,
        "liquidityUsd": 3820.4,
        "paidToHoldersUsd": 41.27,
        "paidToHoldersQuote": 0.2713,
        "curvePct": 7.7,
        "top10Pct": 18.4,
        "devPct": 1.9,
        "volume24hUsd": 15230,
        "change24hPct": 34.2,
        "trades": 412,
        "fairSale": null
      },
      "amount": 4580211.33,
      "pct": 0.46,
      "valueUsd": 44.15,
      "since": "2026-11-01T14:58:36.000Z",
      "earnedQuote": 0.0031,
      "earnedUsd": 0.47,
      "claimable": [],
      "claimableUsd": 0
    }
  ],
  "totals": {
    "valueUsd": 44.15,
    "earnedUsd": 0.47,
    "claimableUsd": 0,
    "claimableCount": 0,
    "coins": 3
  }
}

Account

GET /me

Your key. Your key's wallet, its usage and the coins it launched.

Request

bash
curl "https://usewoop.xyz/api/v1/me" \
  -H "Authorization: Bearer $WOOP_API_KEY"
js
const res = await fetch('https://usewoop.xyz/api/v1/me', {
  headers: { Authorization: `Bearer ${process.env.WOOP_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const me = await res.json();

Returns: Me

json
{
  "wallet": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
  "key": {
    "prefix": "woop_AKPH67r",
    "createdAt": "2026-11-01T14:58:36.000Z",
    "lastUsedAt": "2026-11-01T14:58:36.000Z",
    "requests": 1840
  },
  "launches": [
    {
      "mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
      "name": "Moon Cat",
      "symbol": "MCAT",
      "launchedAt": "2026-11-01T14:58:36.000Z",
      "url": "https://usewoop.xyz/coin/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp"
    }
  ]
}