Objects
Every object the API sends and takes, field by field.
Amounts are in whole units (SOL, not lamports; coins, not raw units) unless a field says otherwise. Times are ISO 8601 strings, or Unix seconds where the type is an integer. A type "or null" is always present but can be null; an optional field can be left out.
Requests
LaunchRequest
A new coin. The same form as woop's launch page.
type LaunchRequest = {
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
banner?: string; // A 3:1 banner: from POST /uploads (kind banner) or an https URL
links?: Links; // The coin's website and socials
firstBuy?: string; // The creator's buy in the fair opening, in the pair token (e.g. "0.5")
unlockDays?: number; // Days the creator's coins unlock over after graduation (default 10)
cliffDays?: number; // Days after graduation before they start unlocking (default 0)
};| 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 |
Example
{
"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"
}Links
Inside LaunchRequest. https only.
type Links = {
website?: string; // Website
x?: string; // X profile
telegram?: string; // Telegram
};| Field | Type | Description | |
|---|---|---|---|
website | string | Website | optional |
x | string | X profile | optional |
telegram | string | Telegram | optional |
TradeRequest
A buy or a sell.
type TradeRequest = {
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
slippageBps?: number; // Instant trades: the most the price may move, in basis points
payWith?: 'pair' | 'sol'; // sol pays with SOL on a non-SOL pair, swapped in the same transaction (mainnet)
ref?: string; // A promoter wallet: it earns 0.25% of the trade
};| 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 |
Example
{
"wallet": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
"mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
"side": "buy",
"amount": "0.25",
"mode": "instant",
"slippageBps": 300
}ExitPlaceRequest
A sell to queue.
type ExitPlaceRequest = {
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)
};| 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 |
Example
{
"wallet": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
"mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
"amount": "20000000",
"floorPct": -5
}ExitCancelRequest
An Exit Queue order to take down.
type ExitCancelRequest = {
wallet: string; // The seller
mint: string; // The coin
slot: number; // The order's slot, from GET /coins/{mint}/queue
};| Field | Type | Description | |
|---|---|---|---|
wallet | string | The seller | |
mint | string | The coin | |
slot | integer | The order's slot, from GET /coins/{mint}/queue |
Example
{
"wallet": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
"mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
"slot": 0
}WalletCoin
A wallet and a coin.
type WalletCoin = {
wallet: string; // The wallet that signs
mint: string; // The coin
};| Field | Type | Description | |
|---|---|---|---|
wallet | string | The wallet that signs | |
mint | string | The coin |
Example
{
"wallet": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
"mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp"
}CreatorLockRequest
A longer creator lock. A lock can only grow.
type CreatorLockRequest = {
wallet: string; // The coin's creator
mint: string; // The coin
unlockDays: number; // Days to unlock over, 1–3650
cliffDays?: number; // Days before unlocking starts, 0–3650 (default 0)
};| 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 |
Example
{
"wallet": "8hyPWptPNa47TCinJbopyjF2H92kkpt2xCvCwF1ivMh6",
"mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
"unlockDays": 30,
"cliffDays": 7
}SendRequest
A signed transaction from any build endpoint.
type SendRequest = {
transaction: string; // Base64, signed
lastValidBlockHeight?: number; // From the build response
};| Field | Type | Description | |
|---|---|---|---|
transaction | string | Base64, signed | |
lastValidBlockHeight | integer | From the build response | optional |
Example
{
"transaction": "AQAB…signed base64…",
"lastValidBlockHeight": 312345678
}UploadJson
The JSON body of an upload (or send multipart file and kind).
type UploadJson = {
url?: string; // An https image for woop to fetch
data?: string; // The image as base64 (a data: URL works)
kind?: 'image' | 'banner'; // Default image
};| 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 |
Example
{
"url": "https://example.com/moon-cat.png",
"kind": "image"
}Build and send
BuiltTransaction
Every endpoint that builds something returns this: sign transaction with the request's wallet, then send it.
type BuiltTransaction = {
transaction: string; // A base64 versioned transaction, unsigned by the wallet (a launch is already signed by its new mint)
lastValidBlockHeight: number; // It expires after this block height (about a minute)
next: string; // What to do with it
};| Field | Type | Description | |
|---|---|---|---|
transaction | string | A base64 versioned transaction, unsigned by the wallet (a launch is already signed by its new mint) | |
lastValidBlockHeight | integer | It expires after this block height (about a minute) | |
next | string | What to do with it |
Example
{
"transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA…",
"lastValidBlockHeight": 312345678,
"next": "Sign `transaction` with `wallet`, then POST it to /api/v1/transactions."
}LaunchResult
A launch ready to sign.
type LaunchResult = {
mint: string; // The new coin's address
transaction: string; // Base64, already signed by the new mint: the creator signs it too
lastValidBlockHeight: number; // It expires after this
metadataUri: string; // The coin's metadata on woop's CDN
pair: PairRef; // The pair it launches on
image: string; // The stored image
banner: string | null; // The stored banner
costSol: number; // Network fees and rent the launch costs the creator; a first buy is on top
firstBuy: FirstBuy | null; // The first buy, if any
next: string; // What to do with it
};| Field | Type | Description | |
|---|---|---|---|
mint | string | The new coin's address | |
transaction | string | Base64, already signed by the new mint: the creator signs it too | |
lastValidBlockHeight | integer | It expires after this | |
metadataUri | string | The coin's metadata on woop's CDN | |
pair | PairRef | The pair it launches on | |
image | string | The stored image | |
banner | string or null | The stored banner | |
costSol | number | Network fees and rent the launch costs the creator; a first buy is on top | |
firstBuy | FirstBuy or null | The first buy, if any | |
next | string | What to do with it |
Example
{
"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."
}PairRef
A pair, briefly.
type PairRef = {
symbol: string; // Ticker
mint: string; // Token address
};| Field | Type | Description | |
|---|---|---|---|
symbol | string | Ticker | |
mint | string | Token address |
Example
{
"symbol": "SOL",
"mint": "So11111111111111111111111111111111111111112"
}FirstBuy
Inside LaunchResult.
type FirstBuy = {
amount: string; // Pair token in
coins: string; // Coins out ("in the fair opening": they settle with everyone's at one price)
};| Field | Type | Description | |
|---|---|---|---|
amount | string | Pair token in | |
coins | string | Coins out ("in the fair opening": they settle with everyone's at one price) |
TradeResult
A trade ready to sign, and what it should do.
type TradeResult = {
transaction: string; // Base64: the trader signs it
lastValidBlockHeight: number; // It expires after this
side: 'buy' | 'sell'; // Buy or sell
mode: 'instant' | 'block'; // How it fills
amountIn: string; // What goes in
expectedOut: string; // What should come out
minOut: string; // The least it accepts (instant)
priceImpactPct: number; // How far it moves the price
fee: string; // The fee, in the pair token
exitQueue: QueueFill | null; // Instant buys: the part filled from the Exit Queue
block: BlockInfo | null; // Fair Block orders: the block
swap: SwapInfo | null; // Paying with SOL on another pair: the swap leg
next: string; // What to do with it
};| Field | Type | Description | |
|---|---|---|---|
transaction | string | Base64: the trader signs it | |
lastValidBlockHeight | integer | It expires after this | |
side | buy|sell | Buy or sell | |
mode | instant|block | How it fills | |
amountIn | string | What goes in | |
expectedOut | string | What should come out | |
minOut | string | The least it accepts (instant) | |
priceImpactPct | number | How far it moves the price | |
fee | string | The fee, in the pair token | |
exitQueue | QueueFill or null | Instant buys: the part filled from the Exit Queue | |
block | BlockInfo or null | Fair Block orders: the block | |
swap | SwapInfo or null | Paying with SOL on another pair: the swap leg | |
next | string | What to do with it |
Example
{
"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."
}QueueFill
Inside TradeResult.
type QueueFill = {
coins: string; // Coins from the queue
quote: string; // Pair token spent on them
dip: boolean; // A holder deal applied
discountPct: number; // Its discount
};| Field | Type | Description | |
|---|---|---|---|
coins | string | Coins from the queue | |
quote | string | Pair token spent on them | |
dip | boolean | A holder deal applied | |
discountPct | number | Its discount |
BlockInfo
Inside TradeResult.
type BlockInfo = {
window: number; // Seconds the block collects orders before it settles
};| Field | Type | Description | |
|---|---|---|---|
window | number | Seconds the block collects orders before it settles |
SwapInfo
Inside TradeResult.
type SwapInfo = {
pair: string; // The pair-token leg
leftover: string; // What stays in the wallet in the pair token
impactPct: number; // The swap's own price impact
via: string; // The route
};| Field | Type | Description | |
|---|---|---|---|
pair | string | The pair-token leg | |
leftover | string | What stays in the wallet in the pair token | |
impactPct | number | The swap's own price impact | |
via | string | The route |
SendResult
A transaction that landed.
type SendResult = {
kind: 'launch' | 'trade'; // launch for launches; trade for everything else
signature: string; // The transaction signature
mint?: string; // Launches: the new coin
url?: string; // Launches: its page on woop
};| Field | Type | Description | |
|---|---|---|---|
kind | launch|trade | launch for launches; trade for everything else | |
signature | string | The transaction signature | |
mint | string | Launches: the new coin | optional |
url | string | Launches: its page on woop | optional |
Example
{
"kind": "launch",
"signature": "5hqJ7pHZnPTXqbQZfSTSwTPL46q6hSf2ahJ1A5KHNg3DC2NCtcEgDqWZePRYTkcP5Du6GeWqz3NKNL1MdvHJcBfx",
"mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
"url": "https://usewoop.xyz/coin/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp"
}Upload
A stored image.
type Upload = {
url: string; // Use it as a launch's image or banner
kind: 'image' | 'banner'; // Square coin image (512 × 512) or 3:1 banner (1500 × 500)
};| Field | Type | Description | |
|---|---|---|---|
url | string | Use it as a launch's image or banner | |
kind | image|banner | Square coin image (512 × 512) or 3:1 banner (1500 × 500) |
Example
{
"url": "https://zync-pad.b-cdn.net/coins/img/a9788d7c9762b17650551eb2.webp",
"kind": "image"
}Coins
CoinSummary
A coin in a list.
type CoinSummary = {
mint: string; // Its address
name: string; // Name
symbol: string; // Ticker
image: string | null; // Image URL
quoteMint: string; // Its pair's mint
mcUsd: number | null; // Market cap, USD
priceQuote: number | null; // Price in the pair token
holders: number; // Wallets holding it
graduated: boolean; // In its WAMM pool
lastTradeAt: string | null; // ISO time of its last trade
createdAt: string; // ISO launch time
};| Field | Type | Description | |
|---|---|---|---|
mint | string | Its address | |
name | string | Name | |
symbol | string | Ticker | |
image | string or null | Image URL | |
quoteMint | string | Its pair's mint | |
mcUsd | number or null | Market cap, USD | |
priceQuote | number or null | Price in the pair token | |
holders | integer | Wallets holding it | |
graduated | boolean | In its WAMM pool | |
lastTradeAt | string or null | ISO time of its last trade | |
createdAt | string | ISO launch time |
Example
{
"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"
}Coin
One coin: everything in CoinSummary, plus:
type Coin = CoinSummary & {
curve?: boolean; // On the woopcurve (then its WAMM pool)
banner?: string | null; // 3:1 banner URL
creator: string; // Its creator's wallet
network: string; // mainnet or devnet
quoteUsd: number | null; // The pair's USD price
priceUsd: number | null; // Price, USD
liquidityUsd: number | null; // Liquidity, USD
paidToHoldersUsd: number | null; // Paid to holders so far, USD
paidToHoldersQuote: number; // Paid to holders so far, pair token
curvePct: number | null; // How far along the curve, 0–100
top10Pct: number | null; // Share the 10 biggest wallets hold
devPct: number | null; // Share the creator's wallet holds
volume24hUsd: number | null; // 24h volume, USD
change24hPct: number | null; // 24h move, %
trades: number; // Trades so far
fairSale?: string | null; // The fair launch that opened it, if any
};| Field | Type | Description | |
|---|---|---|---|
| … | CoinSummary | Every CoinSummary field | |
curve | boolean | On the woopcurve (then its WAMM pool) | optional |
banner | string or null | 3:1 banner URL | optional |
creator | string | Its creator's wallet | |
network | string | mainnet or devnet | |
quoteUsd | number or null | The pair's USD price | |
priceUsd | number or null | Price, USD | |
liquidityUsd | number or null | Liquidity, USD | |
paidToHoldersUsd | number or null | Paid to holders so far, USD | |
paidToHoldersQuote | number | Paid to holders so far, pair token | |
curvePct | number or null | How far along the curve, 0–100 | |
top10Pct | number or null | Share the 10 biggest wallets hold | |
devPct | number or null | Share the creator's wallet holds | |
volume24hUsd | number or null | 24h volume, USD | |
change24hPct | number or null | 24h move, % | |
trades | integer | Trades so far | |
fairSale | string or null | The fair launch that opened it, if any | optional |
Example
{
"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
}Trade
A trade on the tape.
type Trade = {
id: string; // Unique id
signature: string; // Its transaction
side: 'buy' | 'sell'; // Buy or sell
trader: string; // The wallet
quote: number; // Pair token in or out
amount: number; // Coins
usd: number | null; // In USD
mcUsd: number | null; // Market cap at the trade, USD
time: string; // ISO time
via?: 'queue' | 'deal' | 'block' | 'fair'; // Filled from the Exit Queue, a holder deal, a Fair Block order or the fair launch
};| Field | Type | Description | |
|---|---|---|---|
id | string | Unique id | |
signature | string | Its transaction | |
side | buy|sell | Buy or sell | |
trader | string | The wallet | |
quote | number | Pair token in or out | |
amount | number | Coins | |
usd | number or null | In USD | |
mcUsd | number or null | Market cap at the trade, USD | |
time | string | ISO time | |
via | queue|deal|block|fair | Filled from the Exit Queue, a holder deal, a Fair Block order or the fair launch | optional |
Example
{
"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"
}Holder
A holder and how they did.
type Holder = {
address: string; // Wallet
pct: number; // Share of supply
since: string; // ISO time its holding began
amount: number; // Coins held
earnedQuote: number; // Paid to it for holding, pair token
earnedUsd: number | null; // The same in USD
boughtAmount: number; // Coins bought
soldAmount: number; // Coins sold
boughtQuote: number; // Pair token spent
soldQuote: number; // Pair token received
valueQuote: number; // Holding at the price now
pnlQuote: number; // Profit or loss: value + sold − bought
boughtUsd: number | null; // USD
soldUsd: number | null; // USD
valueUsd: number | null; // USD
pnlUsd: number | null; // USD
tag?: 'dev'; // The creator
};| Field | Type | Description | |
|---|---|---|---|
address | string | Wallet | |
pct | number | Share of supply | |
since | string | ISO time its holding began | |
amount | number | Coins held | |
earnedQuote | number | Paid to it for holding, pair token | |
earnedUsd | number or null | The same in USD | |
boughtAmount | number | Coins bought | |
soldAmount | number | Coins sold | |
boughtQuote | number | Pair token spent | |
soldQuote | number | Pair token received | |
valueQuote | number | Holding at the price now | |
pnlQuote | number | Profit or loss: value + sold − bought | |
boughtUsd | number or null | USD | |
soldUsd | number or null | USD | |
valueUsd | number or null | USD | |
pnlUsd | number or null | USD | |
tag | dev | The creator | optional |
Example
{
"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
}Candle
A market-cap candle, USD.
type Candle = {
time: number; // Unix seconds, the candle's start
open: number; // Open
high: number; // High
low: number; // Low
close: number; // Close
volume: number; // Volume, USD
};| Field | Type | Description | |
|---|---|---|---|
time | integer | Unix seconds, the candle's start | |
open | number | Open | |
high | number | High | |
low | number | Low | |
close | number | Close | |
volume | number | Volume, USD |
Example
{
"time": 3,
"open": 9600,
"high": 9800,
"low": 9500,
"close": 9640,
"volume": 512.3
}Position
One wallet in one coin.
type Position = {
wallet: string; // Wallet
amount: number; // Coins held
pct: number; // Share of supply
quoteSymbolMint: string; // The pair's mint
valueQuote: number; // Holding at the price now
valueUsd: number | null; // USD
paidQuote: number; // Spent on buys
receivedQuote: number; // Got from sells
pnlQuote: number; // Profit or loss: value + received − paid
pnlUsd: number | null; // USD
trades: number; // Its trades
boughtAmount: number; // Coins bought
soldAmount: number; // Coins sold
since: string | null; // When its holding began
quoteUsd: number | null; // The pair's USD price
};| Field | Type | Description | |
|---|---|---|---|
wallet | string | Wallet | |
amount | number | Coins held | |
pct | number | Share of supply | |
quoteSymbolMint | string | The pair's mint | |
valueQuote | number | Holding at the price now | |
valueUsd | number or null | USD | |
paidQuote | number | Spent on buys | |
receivedQuote | number | Got from sells | |
pnlQuote | number | Profit or loss: value + received − paid | |
pnlUsd | number or null | USD | |
trades | integer | Its trades | |
boughtAmount | number | Coins bought | |
soldAmount | number | Coins sold | |
since | string or null | When its holding began | |
quoteUsd | number or null | The pair's USD price |
Example
{
"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
}Payout
An hourly payout to holders.
type Payout = {
epoch: number; // Its number
rewardMint: string; // What it paid in (the pair token)
amount: number; // Paid in total
amountUsd: number | null; // USD
holders: number; // Holders paid
postedAt: string; // ISO
};| Field | Type | Description | |
|---|---|---|---|
epoch | integer | Its number | |
rewardMint | string | What it paid in (the pair token) | |
amount | number | Paid in total | |
amountUsd | number or null | USD | |
holders | integer | Holders paid | |
postedAt | string | ISO |
Example
{
"epoch": 37,
"rewardMint": "So11111111111111111111111111111111111111112",
"amount": 0.0271,
"amountUsd": 4.12,
"holders": 128,
"postedAt": "2026-11-01T15:00:00.000Z"
}Event
Something that happened on the coin besides a plain trade.
type Event = {
time: number; // Unix seconds
kind: 'payout' | 'promoter' | 'fairblock' | 'exit' | 'creator'; // Holder payout, promoter fee, Fair Block settled, Exit Queue fill or creator fees
usd: number | null; // How much, USD
n?: number; // Fair Blocks: orders in it
};| Field | Type | Description | |
|---|---|---|---|
time | integer | Unix seconds | |
kind | payout|promoter|fairblock|exit|creator | Holder payout, promoter fee, Fair Block settled, Exit Queue fill or creator fees | |
usd | number or null | How much, USD | |
n | integer | Fair Blocks: orders in it | optional |
Example
{
"time": 3,
"kind": "fairblock",
"usd": 94.9,
"n": 14
}Signals
Rug signals from on-chain history.
type Signals = {
devFunder: string | null; // The wallet that first funded the creator
devFundedByExchange: boolean; // Funded from an exchange
linked: WalletGroup; // Holders funded by the creator, or who funded them
snipers: WalletGroup; // Wallets that bought in the first 10 seconds
bundled: WalletGroup; // Wallets that bought in the same block as the first trade
lock: SignalLock | null; // A creator lock set at launch (older coins)
checked: number; // Holders checked
holders: number; // Holders
};| Field | Type | Description | |
|---|---|---|---|
devFunder | string or null | The wallet that first funded the creator | |
devFundedByExchange | boolean | Funded from an exchange | |
linked | WalletGroup | Holders funded by the creator, or who funded them | |
snipers | WalletGroup | Wallets that bought in the first 10 seconds | |
bundled | WalletGroup | Wallets that bought in the same block as the first trade | |
lock | SignalLock or null | A creator lock set at launch (older coins) | |
checked | integer | Holders checked | |
holders | integer | Holders |
Example
{
"devFunder": "3Qx9vLm2TnB8rJ5cWzXy7kP4sF1gH6dA9eN0bRtUoVi",
"devFundedByExchange": true,
"linked": {
"wallets": [],
"pct": 0
},
"snipers": {
"wallets": [],
"pct": 0
},
"bundled": {
"wallets": [],
"pct": 0
},
"lock": null,
"checked": 40,
"holders": 128
}WalletGroup
Inside Signals.
type WalletGroup = {
wallets: string[]; // The wallets
pct: number; // Share of supply they hold
};| Field | Type | Description | |
|---|---|---|---|
wallets | string[] | The wallets | |
pct | number | Share of supply they hold |
SignalLock
Inside Signals.
type SignalLock = {
pct: number; // Share of supply
cliffDays: number; // Days before it unlocks
unlockDays: number; // Days it unlocks over
};| Field | Type | Description | |
|---|---|---|---|
pct | number | Share of supply | |
cliffDays | number | Days before it unlocks | |
unlockDays | number | Days it unlocks over |
The woopcurve
Curve
A woopcurve coin's state.
type Curve = {
status: 'opening' | 'trading' | 'block-pending' | 'complete' | 'graduated' | 'refund'; // Where it is
quoteDecimals: number; // The pair's decimals
raised: number; // Pair token in the curve
target: number; // What graduation takes
soldPct: number; // Share of the curve's 760M coins sold
mcap: Mcaps; // Market caps, pair token
graduatedAt: string | null; // When it moved into its WAMM pool
pool: Pool | null; // Its WAMM pool
openingEndsAt: string | null; // When the fair opening ends
blockClosesAt: string | null; // When the open Fair Block settles
refundAt: string | null; // When refunds start if it hasn't graduated
advance: Advance; // The creator's 1 SOL launch advance
creator: CreatorLock; // The creator's locked coins
creatorFeesOwed: number; // Creator fees waiting for the next payout
fees: Fees; // Its fees
mine?: CurveMine; // With ?wallet=: that wallet's side
};| Field | Type | Description | |
|---|---|---|---|
status | opening|trading|block-pending|complete|graduated|refund | Where it is | |
quoteDecimals | integer | The pair's decimals | |
raised | number | Pair token in the curve | |
target | number | What graduation takes | |
soldPct | number | Share of the curve's 760M coins sold | |
mcap | Mcaps | Market caps, pair token | |
graduatedAt | string or null | When it moved into its WAMM pool | |
pool | Pool or null | Its WAMM pool | |
openingEndsAt | string or null | When the fair opening ends | |
blockClosesAt | string or null | When the open Fair Block settles | |
refundAt | string or null | When refunds start if it hasn't graduated | |
advance | Advance | The creator's 1 SOL launch advance | |
creator | CreatorLock | The creator's locked coins | |
creatorFeesOwed | number | Creator fees waiting for the next payout | |
fees | Fees | Its fees | |
mine | CurveMine | With ?wallet=: that wallet's side | optional |
Example
{
"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
}
}Mcaps
Inside Curve.
type Mcaps = {
start: number; // At launch
now: number; // Now
graduation: number; // Where it graduates
};| Field | Type | Description | |
|---|---|---|---|
start | number | At launch | |
now | number | Now | |
graduation | number | Where it graduates |
Pool
Inside Curve.
type Pool = {
quote: number; // Pair token
coins: number; // Coins
burned: number; // Coins burned at graduation
};| Field | Type | Description | |
|---|---|---|---|
quote | number | Pair token | |
coins | number | Coins | |
burned | number | Coins burned at graduation |
Advance
Inside Curve.
type Advance = {
amount: number; // The advance
repaid: number; // Repaid from creator fees
owed: number; // Still owed
};| Field | Type | Description | |
|---|---|---|---|
amount | number | The advance | |
repaid | number | Repaid from creator fees | |
owed | number | Still owed |
CreatorLock
Inside Curve.
type CreatorLock = {
locked: number; // Coins locked
vest: number; // Coins unlocking
claimed: number; // Coins taken
claimable: number; // Coins the creator can take now
unlockDays: number; // Days they unlock over
cliffDays: number; // Days before unlocking starts
graduatedAt: string | null; // When the unlock clock started
};| Field | Type | Description | |
|---|---|---|---|
locked | number | Coins locked | |
vest | number | Coins unlocking | |
claimed | number | Coins taken | |
claimable | number | Coins the creator can take now | |
unlockDays | integer | Days they unlock over | |
cliffDays | integer | Days before unlocking starts | |
graduatedAt | string or null | When the unlock clock started |
Fees
Inside Curve. Percent of the trade.
type Fees = {
trade: number; // Curve trades and Fair Blocks
instant: number; // Instant sells
exit: number; // Exit Queue, each side
pool: number; // WAMM pool trades
tierHalf: boolean; // Holders of 100k $WOOP pay half
split: FeeSplit; // Each fee split between holders, the creator and woop
};| Field | Type | Description | |
|---|---|---|---|
trade | number | Curve trades and Fair Blocks | |
instant | number | Instant sells | |
exit | number | Exit Queue, each side | |
pool | number | WAMM pool trades | |
tierHalf | boolean | Holders of 100k $WOOP pay half | |
split | FeeSplit | Each fee split between holders, the creator and woop |
FeeSplit
Inside Fees: [holders, creator, woop], percent of the trade.
type FeeSplit = {
trade: number[];
instant: number[];
exit: number[];
pool: number[];
};| Field | Type | Description | |
|---|---|---|---|
trade | number[] | ||
instant | number[] | ||
exit | number[] | ||
pool | number[] |
CurveMine
Inside Curve.
type CurveMine = {
order: MyOrder | null; // Its Fair Block order
exits: MyExit[]; // Its Exit Queue orders
instantMax: number; // The most it can instant-sell now
instantNextAt: string | null; // When its next instant sell is allowed
refund: MyRefund | null; // Its refund, in refund mode
};| Field | Type | Description | |
|---|---|---|---|
order | MyOrder or null | Its Fair Block order | |
exits | MyExit[] | Its Exit Queue orders | |
instantMax | number | The most it can instant-sell now | |
instantNextAt | string or null | When its next instant sell is allowed | |
refund | MyRefund or null | Its refund, in refund mode |
MyOrder
Inside CurveMine.
type MyOrder = {
buy: boolean; // A buy
amount: number; // Its amount
settled: boolean; // Its block settled
};| Field | Type | Description | |
|---|---|---|---|
buy | boolean | A buy | |
amount | number | Its amount | |
settled | boolean | Its block settled |
MyExit
Inside CurveMine.
type MyExit = {
slot: number; // For cancelling
left: number; // Coins left
owed: number; // Proceeds waiting
floorPct: number; // Its floor against now
};| Field | Type | Description | |
|---|---|---|---|
slot | integer | For cancelling | |
left | number | Coins left | |
owed | number | Proceeds waiting | |
floorPct | number | Its floor against now |
MyRefund
Inside CurveMine.
type MyRefund = {
estimate: number; // About what it gets back
paid: boolean; // Already paid
};| Field | Type | Description | |
|---|---|---|---|
estimate | number | About what it gets back | |
paid | boolean | Already paid |
Exit Queue
Queue
A coin's Exit Queue.
type Queue = {
spot: number; // Price now, pair token per coin
quoteDecimals: number; // The pair's decimals
orders: QueueOrder[]; // Orders waiting now
totalQueued: number; // Coins waiting
graduated: boolean; // Fills at the pool's price
feePct: number; // Fee per side
tierFeePct: number; // Fee per side for $WOOP holders
tier: boolean; // With ?wallet=: it pays the lower fee
history: QueueHistory[]; // Every order the queue has had, newest first
};| Field | Type | Description | |
|---|---|---|---|
spot | number | Price now, pair token per coin | |
quoteDecimals | integer | The pair's decimals | |
orders | QueueOrder[] | Orders waiting now | |
totalQueued | number | Coins waiting | |
graduated | boolean | Fills at the pool's price | |
feePct | number | Fee per side | |
tierFeePct | number | Fee per side for $WOOP holders | |
tier | boolean | With ?wallet=: it pays the lower fee | |
history | QueueHistory[] | Every order the queue has had, newest first |
Example
{
"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
}
]
}QueueOrder
Inside Queue.
type QueueOrder = {
slot: number; // For cancelling
id: string; // Id
seller: string; // Wallet
remaining: number; // Coins left
floor: number; // Lowest price, pair token per coin
floorPct: number; // Floor against now, %
proceeds: number; // Sold for so far, waiting to be paid
mine: boolean; // With ?wallet=: its own
};| Field | Type | Description | |
|---|---|---|---|
slot | integer | For cancelling | |
id | string | Id | |
seller | string | Wallet | |
remaining | number | Coins left | |
floor | number | Lowest price, pair token per coin | |
floorPct | number | Floor against now, % | |
proceeds | number | Sold for so far, waiting to be paid | |
mine | boolean | With ?wallet=: its own |
QueueHistory
Inside Queue.
type QueueHistory = {
id: string; // Id
seller: string; // Wallet
mine: boolean; // With ?wallet=: its own
amount: number; // Coins queued
filled: number; // Coins sold
received: number; // Pair token the seller got
floor: number; // Lowest price, pair token per coin
status: 'waiting' | 'filled' | 'partly' | 'cancelled'; // Where it ended (or is)
placedAt: string | null; // ISO
closedAt: string | null; // ISO, when cancelled
slot: number | null; // Waiting orders: for cancelling
};| Field | Type | Description | |
|---|---|---|---|
id | string | Id | |
seller | string | Wallet | |
mine | boolean | With ?wallet=: its own | |
amount | number | Coins queued | |
filled | number | Coins sold | |
received | number | Pair token the seller got | |
floor | number | Lowest price, pair token per coin | |
status | waiting|filled|partly|cancelled | Where it ended (or is) | |
placedAt | string or null | ISO | |
closedAt | string or null | ISO, when cancelled | |
slot | integer or null | Waiting orders: for cancelling |
Pairs, tickers, wallets, you
Pair
A token a coin can launch against. Holders are paid in it.
type Pair = {
symbol: string; // Its ticker, e.g. SOL
name: string; // Its name
mint: string; // Its token address
category: string; // Crypto, Dollars, Commodities, Memes…
logo: string | null; // Logo URL
decimals: number; // Its decimals
graduationRaise: number; // How much of it a coin on this pair raises to graduate
};| Field | Type | Description | |
|---|---|---|---|
symbol | string | Its ticker, e.g. SOL | |
name | string | Its name | |
mint | string | Its token address | |
category | string | Crypto, Dollars, Commodities, Memes… | |
logo | string or null | Logo URL | |
decimals | integer | Its decimals | |
graduationRaise | number | How much of it a coin on this pair raises to graduate |
Example
{
"symbol": "SOL",
"name": "Solana",
"mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
"category": "Crypto",
"logo": "https://zync-pad.b-cdn.net/pairs/So11111111111111111111111111111111111111112.webp",
"decimals": 9,
"graduationRaise": 125.8
}Ticker
Whether a ticker is free.
type Ticker = {
symbol: string; // The ticker, upper case
available: boolean; // Free to use at no extra cost
takenBy?: TickerOwner; // The coin that has it
copyFeeSol?: number; // What using it anyway costs, paid to that coin's holders
};| Field | Type | Description | |
|---|---|---|---|
symbol | string | The ticker, upper case | |
available | boolean | Free to use at no extra cost | |
takenBy | TickerOwner | The coin that has it | optional |
copyFeeSol | number | What using it anyway costs, paid to that coin's holders | optional |
Example
{
"symbol": "MCAT",
"available": false,
"takenBy": {
"mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
"name": "Moon Cat"
},
"copyFeeSol": 1
}TickerOwner
Inside Ticker.
type TickerOwner = {
mint: string; // The coin with the ticker
name: string; // Its name
};| Field | Type | Description | |
|---|---|---|---|
mint | string | The coin with the ticker | |
name | string | Its name |
Portfolio
A wallet's woop coins.
type Portfolio = {
holdings: Holding[]; // Coins it holds or earned from, biggest first
totals: PortfolioTotals; // Totals
};| Field | Type | Description | |
|---|---|---|---|
holdings | Holding[] | Coins it holds or earned from, biggest first | |
totals | PortfolioTotals | Totals |
Example
{
"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
}
}Holding
Inside Portfolio.
type Holding = {
coin: Coin; // The coin
amount: number; // Coins held
pct: number; // Share of supply
valueUsd: number | null; // USD
since: string | null; // Holding since
earnedQuote: number; // Paid for holding, pair token
earnedUsd: number | null; // USD
claimable: Claimable[]; // Rewards it can still claim (most are paid automatically)
claimableUsd: number | null; // USD
};| Field | Type | Description | |
|---|---|---|---|
coin | Coin | The coin | |
amount | number | Coins held | |
pct | number | Share of supply | |
valueUsd | number or null | USD | |
since | string or null | Holding since | |
earnedQuote | number | Paid for holding, pair token | |
earnedUsd | number or null | USD | |
claimable | Claimable[] | Rewards it can still claim (most are paid automatically) | |
claimableUsd | number or null | USD |
Claimable
Inside Holding.
type Claimable = {
rewardMint: string; // Paid in
amount: number; // Amount
amountUsd: number | null; // USD
};| Field | Type | Description | |
|---|---|---|---|
rewardMint | string | Paid in | |
amount | number | Amount | |
amountUsd | number or null | USD |
PortfolioTotals
Inside Portfolio.
type PortfolioTotals = {
valueUsd: number | null; // Holdings, USD
earnedUsd: number | null; // Earned, USD
claimableUsd: number | null; // Claimable, USD
claimableCount: number; // Coins with something to claim
coins: number; // Coins held
};| Field | Type | Description | |
|---|---|---|---|
valueUsd | number or null | Holdings, USD | |
earnedUsd | number or null | Earned, USD | |
claimableUsd | number or null | Claimable, USD | |
claimableCount | integer | Coins with something to claim | |
coins | integer | Coins held |
Me
Your key and what it launched.
type Me = {
wallet: string; // The key's wallet
key: KeyUsage; // The key
launches: ApiLaunch[]; // Coins launched through the API
};| Field | Type | Description | |
|---|---|---|---|
wallet | string | The key's wallet | |
key | KeyUsage | The key | |
launches | ApiLaunch[] | Coins launched through the API |
Example
{
"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"
}
]
}KeyUsage
Inside Me.
type KeyUsage = {
prefix: string; // Its first characters
createdAt: string; // ISO
lastUsedAt: string | null; // ISO
requests: number; // Requests made with it
};| Field | Type | Description | |
|---|---|---|---|
prefix | string | Its first characters | |
createdAt | string | ISO | |
lastUsedAt | string or null | ISO | |
requests | integer | Requests made with it |
ApiLaunch
A coin launched through the API.
type ApiLaunch = {
mint: string; // Its address
name: string | null; // Name
symbol: string | null; // Ticker
launchedAt: string; // ISO
url: string; // Its page on woop
};| Field | Type | Description | |
|---|---|---|---|
mint | string | Its address | |
name | string or null | Name | |
symbol | string or null | Ticker | |
launchedAt | string | ISO | |
url | string | Its page on woop |
Example
{
"mint": "6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp",
"name": "Moon Cat",
"symbol": "MCAT",
"launchedAt": "2026-11-01T14:58:36.000Z",
"url": "https://usewoop.xyz/coin/6D162EwSMepWrTJNxAyfHM3RBBG5pgSQy9mLvrZBS9Pp"
}Errors
Error
Every failed request.
type Error = {
error: ErrorBody; // What went wrong
};| Field | Type | Description | |
|---|---|---|---|
error | ErrorBody | What went wrong |
Example
{
"error": {
"code": "pair_not_open",
"message": "`DOGE` isn’t a pair you can launch on. GET /api/v1/pairs lists them."
}
}ErrorBody
Inside Error.
type ErrorBody = {
code: string; // Stable code to branch on: see Errors and limits
message: string; // A plain sentence you can show to a user
};| Field | Type | Description | |
|---|---|---|---|
code | string | Stable code to branch on: see Errors and limits | |
message | string | A plain sentence you can show to a user |
