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.
| Method | Path | Does |
|---|---|---|
POST | /uploads | Store an image |
POST | /launches | Build a launch |
GET | /launches | Your launches |
GET | /pairs | Pairs open for launches |
GET | /tickers/{symbol} | Check a ticker |
POST | /trades | Build a buy or sell |
POST | /exits | Queue a sell |
POST | /exits/cancel | Cancel a queued sell |
POST | /creator/claim | Take unlocked coins |
POST | /creator/lock | Lock for longer |
POST | /refunds | Take a refund |
POST | /transactions | Send a signed transaction |
GET | /coins | List coins |
GET | /coins/{mint} | One coin |
GET | /coins/{mint}/trades | Its trades |
GET | /coins/{mint}/holders | Its holders |
GET | /coins/{mint}/candles | Its candles |
GET | /coins/{mint}/curve | Its woopcurve state |
GET | /coins/{mint}/queue | Its Exit Queue |
GET | /coins/{mint}/positions/{wallet} | A wallet's position |
GET | /coins/{mint}/payouts | Its payouts to holders |
GET | /coins/{mint}/events | Its events |
GET | /coins/{mint}/signals | Its rug signals |
GET | /wallets/{wallet}/portfolio | A wallet's portfolio |
GET | /me | Your 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
| Field | Type | Description | |
|---|---|---|---|
url | string | An https image for woop to fetch | optional |
data | string | The image as base64 (a data: URL works) | optional |
kind | image|banner | Default image | optional |
Request
curl -X POST "https://usewoop.xyz/api/v1/uploads" \
-H "Authorization: Bearer $WOOP_API_KEY" \
-F file=@moon-cat.png \
-F kind=imageconst 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
{
"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
| Field | Type | Description | |
|---|---|---|---|
wallet | string | The creator. Signs and pays for the launch, and is credited as its creator | |
name | string | 1–32 characters | |
symbol | string | The ticker: 2–10 letters or numbers | |
image | string | From POST /uploads, or any https image URL (woop stores it) | |
pair | string | A pair's symbol or mint from GET /pairs | |
description | string | Up to 280 characters | optional |
banner | string | A 3:1 banner: from POST /uploads (kind banner) or an https URL | optional |
links | Links | The coin's website and socials | optional |
firstBuy | string | The creator's buy in the fair opening, in the pair token (e.g. "0.5") | optional |
unlockDays | integer | Days the creator's coins unlock over after graduation (default 10) | optional |
cliffDays | integer | Days after graduation before they start unlocking (default 0) | optional |
Request
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"}'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/transactionsReturns: LaunchResult
{
"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
curl "https://usewoop.xyz/api/v1/launches" \
-H "Authorization: Bearer $WOOP_API_KEY"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[]
[
{
"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
curl "https://usewoop.xyz/api/v1/pairs" \
-H "Authorization: Bearer $WOOP_API_KEY"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[]
[
{
"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.
| Parameter | In | Type | Description | |
|---|---|---|---|---|
symbol | path | string | 2–10 letters or numbers | required |
Request
curl "https://usewoop.xyz/api/v1/tickers/MCAT" \
-H "Authorization: Bearer $WOOP_API_KEY"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
{
"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
| Field | Type | Description | |
|---|---|---|---|
wallet | string | The trader | |
mint | string | The coin | |
side | buy|sell | Buy or sell | |
amount | string | Buys: pair token to spend, fees included. Sells: coins to sell | |
mode | instant|block | instant (default) fills now; block joins the open Fair Block | optional |
slippageBps | integer | Instant trades: the most the price may move, in basis points | optional |
payWith | pair|sol | sol pays with SOL on a non-SOL pair, swapped in the same transaction (mainnet) | optional |
ref | string | A promoter wallet: it earns 0.25% of the trade | optional |
Request
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}'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/transactionsReturns: TradeResult
{
"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
| Field | Type | Description | |
|---|---|---|---|
wallet | string | The seller | |
mint | string | The coin | |
amount | string | Coins to queue | |
floorPct | number | The lowest price accepted against now, −50 to 900 (default −5: up to 5% below) | optional |
Request
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}'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/transactionsReturns: BuiltTransaction
{
"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
| Field | Type | Description | |
|---|---|---|---|
wallet | string | The seller | |
mint | string | The coin | |
slot | integer | The order's slot, from GET /coins/{mint}/queue |
Request
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}'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/transactionsReturns: BuiltTransaction
{
"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
| Field | Type | Description | |
|---|---|---|---|
wallet | string | The wallet that signs | |
mint | string | The coin |
Request
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"}'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/transactionsReturns: BuiltTransaction
{
"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
| Field | Type | Description | |
|---|---|---|---|
wallet | string | The coin's creator | |
mint | string | The coin | |
unlockDays | integer | Days to unlock over, 1–3650 | |
cliffDays | integer | Days before unlocking starts, 0–3650 (default 0) | optional |
Request
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}'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/transactionsReturns: BuiltTransaction
{
"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
| Field | Type | Description | |
|---|---|---|---|
wallet | string | The wallet that signs | |
mint | string | The coin |
Request
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"}'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/transactionsReturns: BuiltTransaction
{
"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
| Field | Type | Description | |
|---|---|---|---|
transaction | string | Base64, signed | |
lastValidBlockHeight | integer | From the build response | optional |
Request
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}'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
{
"kind": "launch",
"signature": "5hqJ7pHZnPTXqbQZfSTSwTPL46q6hSf2ahJ1A5KHNg3DC2NCtcEgDqWZePRYTkcP5Du6GeWqz3NKNL1MdvHJcBfx",
"mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
"url": "https://usewoop.xyz/coin/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp"
}Coins
GET /coins
List coins. Coins on woop.
| Parameter | In | Type | Description | |
|---|---|---|---|---|
sort | query | active|new|graduated | active (default): last traded first; new: newest first; graduated | optional |
limit | query | integer | 1–100, default 20 | optional |
pair | query | string | Only coins on this pair (symbol or mint) | optional |
Request
curl "https://usewoop.xyz/api/v1/coins?sort=new&limit=20" \
-H "Authorization: Bearer $WOOP_API_KEY"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[]
[
{
"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.
| Parameter | In | Type | Description | |
|---|---|---|---|---|
mint | path | string | The coin's address | required |
Request
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp" \
-H "Authorization: Bearer $WOOP_API_KEY"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
{
"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.
| Parameter | In | Type | Description | |
|---|---|---|---|---|
mint | path | string | The coin's address | required |
limit | query | integer | 1–200, default 60 | optional |
Request
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/trades?limit=60" \
-H "Authorization: Bearer $WOOP_API_KEY"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[]
[
{
"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.
| Parameter | In | Type | Description | |
|---|---|---|---|---|
mint | path | string | The coin's address | required |
Request
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/holders" \
-H "Authorization: Bearer $WOOP_API_KEY"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[]
[
{
"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.
| Parameter | In | Type | Description | |
|---|---|---|---|---|
mint | path | string | The coin's address | required |
tf | query | integer | Seconds per candle: 1, 5, 15, 30, 60 (default), 300, 900, 1800, 3600 or 14400 | optional |
Request
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/candles?tf=60" \
-H "Authorization: Bearer $WOOP_API_KEY"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[]
[
{
"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.
| Parameter | In | Type | Description | |
|---|---|---|---|---|
mint | path | string | The coin's address | required |
wallet | query | string | A wallet: adds its side | optional |
Request
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/curve?wallet=8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6" \
-H "Authorization: Bearer $WOOP_API_KEY"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
{
"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.
| Parameter | In | Type | Description | |
|---|---|---|---|---|
mint | path | string | The coin's address | required |
wallet | query | string | A wallet: adds its side | optional |
Request
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/queue?wallet=8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6" \
-H "Authorization: Bearer $WOOP_API_KEY"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
{
"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.
| Parameter | In | Type | Description | |
|---|---|---|---|---|
mint | path | string | The coin's address | required |
wallet | path | string | The wallet | required |
Request
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/positions/8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6" \
-H "Authorization: Bearer $WOOP_API_KEY"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
{
"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.
| Parameter | In | Type | Description | |
|---|---|---|---|---|
mint | path | string | The coin's address | required |
Request
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/payouts" \
-H "Authorization: Bearer $WOOP_API_KEY"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[]
[
{
"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).
| Parameter | In | Type | Description | |
|---|---|---|---|---|
mint | path | string | The coin's address | required |
Request
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/events" \
-H "Authorization: Bearer $WOOP_API_KEY"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[]
[
{
"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.
| Parameter | In | Type | Description | |
|---|---|---|---|---|
mint | path | string | The coin's address | required |
Request
curl "https://usewoop.xyz/api/v1/coins/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp/signals" \
-H "Authorization: Bearer $WOOP_API_KEY"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
{
"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.
| Parameter | In | Type | Description | |
|---|---|---|---|---|
wallet | path | string | The wallet | required |
Request
curl "https://usewoop.xyz/api/v1/wallets/8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6/portfolio" \
-H "Authorization: Bearer $WOOP_API_KEY"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
{
"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
curl "https://usewoop.xyz/api/v1/me" \
-H "Authorization: Bearer $WOOP_API_KEY"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
{
"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"
}
]
}