Build on top of WCINU.BET. Full REST API access to markets, odds, leaderboards, betting, and transparency data.
All endpoints are rate-limited per IP address. General limit: 60 requests/min.
Prediction endpoints: 10 requests/min.
Activity feed: 30 requests/min.
Admin endpoints: 10 requests/min.
Health check: unlimited.
Returns 429 when exceeded.
Use our SDK for easy integration: <script src="/js/wcinu-sdk.js"></script>
Or install via npm: npm install @wcinu/sdk
List all prediction markets with computed odds. Supports filtering by status and category.
| Param | Type | Description |
|---|---|---|
status | query | Filter by status: open, closed, settled |
category | query | Filter: match, group, tournament, awards, knockout, meta, fun, special |
limit | query | Max results (default: all, max: 1000) |
offset | query | Pagination offset (default: 0) |
{
"markets": [
{
"id": "match_fra_bra",
"title": "France vs Brazil",
"status": "open",
"totalPool": 12.5,
"options": [
{ "name": "France", "pool": 5.2 },
{ "name": "Draw", "pool": 3.1 },
{ "name": "Brazil", "pool": 4.2 }
],
"odds": [
{ "name": "France", "probability": 0.416, "decimal": 2.40 },
{ "name": "Draw", "probability": 0.248, "decimal": 4.03 },
{ "name": "Brazil", "probability": 0.336, "decimal": 2.98 }
],
"closesAt": 1750000000,
"realBetCount": 47
}
],
"total": 85
}Get a single market by ID with full odds and pool data.
| Param | Type | Description |
|---|---|---|
id | path | Market ID (e.g. match_fra_bra) |
Odds history for charting. Returns timestamped snapshots of option pools.
| Param | Type | Description |
|---|---|---|
id | path | Market ID |
since | query | Unix timestamp (ms). only return snapshots after this time |
Top 10 bettors on a specific market, with tier info and pick breakdown.
Get comments for a market (newest first).
| Param | Type | Description |
|---|---|---|
limit | query | Max comments (default: 50) |
Top comments sorted by likes.
AI-powered analysis and confidence score for a market. Powered by Claude AI.
Today's featured market with full odds.
Dynamic SVG share card for social media previews (Open Graph). Returns image/svg+xml.
Global platform statistics: total markets, volume, predictions, and biggest prediction.
{
"totalMarkets": 85,
"openMarkets": 62,
"settledMarkets": 15,
"totalPool": 234.56,
"totalBets": 1847,
"totalVolume": 512.30,
"biggestBet": 25.0
}Top bettors ranked by profit/volume.
| Param | Type | Description |
|---|---|---|
limit | query | Number of entries (default: 20, max: 200) |
Top 10 users by total prediction volume, with tier, win rate, and recent predictions.
Top 20 referrers by earnings.
Top predictors ranked by composite accuracy score.
| Param | Type | Description |
|---|---|---|
limit | query | Number of entries (default: 10) |
Top prediction streaks.
| Param | Type | Description |
|---|---|---|
limit | query | Number of entries (default: 10) |
Top bracket prediction scores.
Bracket pool statistics (entries, prize pool).
Team rankings by collective performance.
Current active season with stats and top 10 leaderboard.
Leaderboard for a specific season.
Recent prediction activity feed (most recent first). Ideal for live tickers.
| Param | Type | Description |
|---|---|---|
limit | query | Max entries (default: 50, max: 1000) |
offset | query | Pagination offset |
{
"activity": [
{
"username": "degen42",
"amount": 2.5,
"optionName": "France",
"marketTitle": "France vs Brazil",
"marketId": "match_fra_bra",
"timestamp": 1750000000,
"ago": "3m ago"
}
],
"total": 1847
}Today's live match scores from football-data.org.
Upcoming matches (next 3 days).
Public audit log of all market settlements.
| Param | Type | Description |
|---|---|---|
limit | query | Max entries (default: 100) |
Settlement details for a specific market.
Look up (or auto-create) a user by Solana wallet address. Returns stats, tier, and referral info.
Aggregated user profile: predictions, tier, referral, team, season rank, streak, and prediction stats.
User's active (open) prediction positions with current odds and potential payout.
User's settled prediction history with PnL.
Aggregate stats: win rate, PnL, volume, tier info, referral data.
User's achievement progress and unlocked badges.
User's watchlist with full market data.
User's prediction insurance policies.
User's cash out history.
User's team membership and team stats.
User's prediction accuracy breakdown by category.
Download user's prediction history as CSV file.
User's current and best win streak.
Place a prediction from the website using a Phantom wallet. Requires a verified on-chain SOL transfer to the treasury.
| Field | Type | Description |
|---|---|---|
walletAddress | string | Solana wallet address (signer) |
marketId | string | Market ID to predict on |
optionIdx | number | Index of the chosen option (0-based) |
amount | number | Prediction amount in SOL (min: 0.01, max: 100) |
txSignature | string | On-chain transaction signature (verified server-side) |
onChain | boolean | Optional. If true, verifies against arena vault PDA instead of treasury. |
{
"success": true,
"betId": "bet_a1b2c3d4",
"market": "France vs Brazil",
"option": "France",
"amount": 2.5,
"userId": "web_4sK9xP2m"
}Place a prediction from the Telegram Mini App. Authenticates via Telegram WebApp initData (HMAC-SHA256). SOL is sent from the user's bot-managed wallet.
| Field | Type | Description |
|---|---|---|
initData | string | Telegram WebApp initData string (validated via HMAC) |
marketId | string | Market ID |
optionIdx | number | Option index (0-based) |
amount | number | Prediction amount in SOL (min: 0.01, max: 100) |
Cash out an active prediction early. 5% fee on cash out value. SOL sent from treasury to wallet.
| Field | Type | Description |
|---|---|---|
betId | string | Prediction ID (e.g. bet_a1b2c3d4) |
walletAddress | string | Must match the prediction owner's wallet |
Get the current cash out value for a prediction (preview before executing).
Add or remove a market from user's watchlist.
| Field | Type | Description |
|---|---|---|
marketId | string | Market ID |
action | string | add or remove |
Post a comment on a market.
| Field | Type | Description |
|---|---|---|
walletAddress | string | Solana wallet address |
text | string | Comment text |
Toggle like on a comment.
| Field | Type | Description |
|---|---|---|
walletAddress | string | Solana wallet address |
Full transparency data: wallet addresses, distribution history, burn history, and revenue totals.
{
"wallets": {
"creator": "4sK9...",
"bundles": [],
"stakingRewards": "7xPm...",
"teamOps": "9qRv...",
"burnCollector": "2fNw..."
},
"distributions": [...],
"burns": [...],
"totalDistributed": 45.67,
"totalBurned": 1250000,
"revenue": {
"totalFees": 45.67,
"totalBurned": 1250000,
"burnCount": 312
}
}Revenue summary: total fees collected and tokens burned.
On-chain staking pool stats (reads directly from Solana).
Platform-wide insurance statistics.
Platform-wide cash out statistics.
On-chain arena program status: enabled flag, program ID, config, and all on-chain market states with vault balances.
{
"enabled": true,
"primary": false,
"programId": "WCArena1111...",
"config": {
"marketCount": 12,
"totalVolume": "45.2300 SOL",
"paused": false
},
"markets": [
{
"marketId": 0,
"totalPool": "5.2000 SOL",
"status": "open",
"bettors": 23,
"feesCollected": "0.1560 SOL",
"vaultAddress": "7xPm...",
"vaultBalance": "5.2000 SOL"
}
]
}Solana RPC proxy (avoids CORS). Only whitelisted read-only methods: getBalance, getAccountInfo, getTransaction, getLatestBlockhash, getTokenAccountsByOwner, etc.
List active community market proposals.
| Param | Type | Description |
|---|---|---|
status | query | Filter: voting, approved, rejected, expired (default: voting) |
limit | query | Max entries (default: 20) |
Single proposal details with vote counts.
Vote on a community market proposal.
| Field | Type | Description |
|---|---|---|
walletAddress | string | Solana wallet address |
direction | string | up or down |
List all achievement definitions (badges, requirements, rewards).
Public platform config: treasury wallet address, take rate, deposit timeout.
{
"treasuryWallet": "4sK9xP2m...",
"takeRateBps": 300,
"depositTimeoutMs": 900000
}Tier definitions with holding requirements, fee percentages, and reward boosts.
Structured docs data: how it works, fee split, tiers, referral, and staking rules (used by the docs page).
Save simulator parlay picks (returns shareable short ID). Expires after 24h.
| Field | Type | Description |
|---|---|---|
picks | array | Array of pick objects |
KOL dashboard stats. The code itself acts as authentication (format: WCINU-XXXXX).
| Param | Type | Description |
|---|---|---|
code | path | KOL code (e.g. WCINU-AB123) |
Health check. Returns uptime, market/bet counts, memory usage, and last bet timestamp. No rate limit.
{
"status": "ok",
"uptime": 86400,
"markets": 85,
"bets": 1847,
"memory": {
"rss": "142 MB",
"heapUsed": "89 MB",
"heapTotal": "120 MB"
},
"lastBetAt": "2026-05-01T14:30:00.000Z",
"node": "v20.11.0"
}Extended health stats from the health monitor (includes error counts, response times, etc.).
Authentication: Admin endpoints require HMAC authentication via X-Admin-Key header or adminKey in the request body.
Format: timestamp:hmac where hmac = HMAC-SHA256(secret, timestamp). 5-minute replay window.
All markets (all statuses) with prediction counts. Header: X-Admin-Key or Authorization: Bearer <key>.
Close a market (stop accepting predictions).
| Field | Type | Description |
|---|---|---|
adminKey | string | HMAC auth key |
marketId | string | Market to close |
Settle a market: declare the winning option and pay out winners. Also settles affected parlays.
| Field | Type | Description |
|---|---|---|
adminKey | string | HMAC auth key |
marketId | string | Market to settle |
winningIdx | number | Index of the winning option |
Reopen a closed or settled market.
| Field | Type | Description |
|---|---|---|
adminKey | string | HMAC auth key |
marketId | string | Market to reopen |
Bulk create markets (seeding). Rate limited to 1 call/minute.
| Field | Type | Description |
|---|---|---|
adminKey | string | HMAC auth key |
markets | array | Array of market objects with id, title, options, closesAt |
force | boolean | If true, update closesAt on existing markets |
Seed a market with initial liquidity (virtual pools).
| Field | Type | Description |
|---|---|---|
adminKey | string | HMAC auth key (header or body) |
amounts | array | SOL amounts per option |
totalSeedSol | number | Alternative: total to distribute evenly |
Reopen all closed markets at once (emergency recovery).
Nuclear option: refund all predictions, reset all pools and counters. Sends SOL refunds from treasury.
Social & Comments
Comment and like endpoints are listed under Predictions (POST) and Markets (GET).
GET /api/teams/:id Public
Single team details and stats.