REST API Endpoints
Complete reference for all REST API endpoints.
Markets
Get Current Market
Returns the active trading market.
GET /markets/current
Response:
{
"success": true,
"data": {
"id": "market_1234567",
"marketId": "1234567",
"pythFeed": "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
"settlementMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"tStart": 1704067200,
"tEnd": 1704068100,
"startPrice": "68543210000",
"startPriceConf": "12345000",
"startPriceExpo": -8,
"endPrice": null,
"outcome": null,
"totalYesShares": "150000000000",
"totalNoShares": "120000000000",
"totalCollateral": "270000000000",
"totalVolume": "500000000000",
"state": "TRADING",
"bestBid": 5800,
"bestAsk": 6000,
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:05:00Z"
}
}
Get Market by ID
GET /markets/:marketId
Parameters:
| Name | Type | Description |
|---|---|---|
marketId | string | Market epoch ID |
Response: Same as current market.
List Markets
GET /markets
Query Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
state | string | - | Filter by state |
pythFeed | string | - | Filter by oracle |
from | number | - | Start timestamp |
to | number | - | End timestamp |
limit | number | 20 | Items per page |
cursor | string | - | Pagination cursor |
Example:
GET /markets?state=RESOLVED&limit=10
Response:
{
"success": true,
"data": [
{
"id": "market_1234566",
"marketId": "1234566",
"state": "RESOLVED",
"outcome": "UP",
...
},
...
],
"pagination": {
"hasMore": true,
"nextCursor": "eyJpZCI6MTIzNDU2NX0"
}
}
Get Market Statistics
GET /markets/:marketId/stats
Response:
{
"success": true,
"data": {
"marketId": "1234567",
"totalTrades": 342,
"totalVolume": "500000000000",
"uniqueTraders": 87,
"avgTradeSize": "1461988304",
"priceHistory": [
{ "timestamp": 1704067200, "midPrice": 5500 },
{ "timestamp": 1704067260, "midPrice": 5600 },
...
]
}
}
Order Book
Get Order Book
GET /orderbook/:marketId
Query Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
depth | number | 10 | Number of price levels |
Response:
{
"success": true,
"data": {
"marketId": "1234567",
"bestBid": 5800,
"bestAsk": 6000,
"spread": 200,
"bids": [
{ "price": 5800, "quantity": "10000000000", "orders": 3 },
{ "price": 5700, "quantity": "25000000000", "orders": 5 },
...
],
"asks": [
{ "price": 6000, "quantity": "5000000000", "orders": 2 },
{ "price": 6100, "quantity": "12000000000", "orders": 3 },
...
],
"timestamp": 1704067500
}
}
Get Order Book Orders
GET /orderbook/:marketId/orders
Query Parameters:
| Name | Type | Description |
|---|---|---|
side | string | bid or ask |
owner | string | Filter by owner address |
Response:
{
"success": true,
"data": {
"orders": [
{
"orderId": "123456789",
"owner": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
"side": "BuyYes",
"priceBps": 5800,
"quantity": "5000000000",
"originalQuantity": "10000000000",
"timestamp": 1704067300,
"isActive": true
},
...
]
}
}
Positions
Get Position
GET /positions/:marketId/:owner
Parameters:
| Name | Type | Description |
|---|---|---|
marketId | string | Market epoch ID |
owner | string | Wallet address |
Response:
{
"success": true,
"data": {
"market": "1234567",
"owner": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
"yesShares": "100000000000",
"noShares": "50000000000",
"lockedYesShares": "20000000000",
"lockedNoShares": "0",
"collateralDeposited": "90000000000",
"collateralLocked": "12000000000",
"settled": false,
"payout": "0",
"totalBought": "150000000000",
"totalSold": "0",
"totalFeesPaid": "450000000",
"totalRebatesEarned": "50000000",
"orderCount": 2,
"createdAt": "2024-01-01T00:02:00Z",
"updatedAt": "2024-01-01T00:05:00Z"
}
}
List User Positions
GET /positions/:owner
Query Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
state | string | - | Filter by market state |
settled | boolean | - | Filter by settlement |
limit | number | 20 | Items per page |
Response:
{
"success": true,
"data": [
{
"market": "1234567",
"marketState": "TRADING",
"yesShares": "100000000000",
"noShares": "50000000000",
...
},
...
],
"pagination": {
"hasMore": false
}
}
Get Position Summary
GET /positions/:owner/summary
Response:
{
"success": true,
"data": {
"owner": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
"totalPositions": 15,
"activePositions": 2,
"settledPositions": 13,
"totalPayout": "1250000000000",
"totalDeposited": "1000000000000",
"netProfit": "250000000000",
"winRate": 0.692,
"avgPositionSize": "83333333333"
}
}
Trades
List Market Trades
GET /trades/:marketId
Query Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
from | number | - | Start timestamp |
to | number | - | End timestamp |
side | string | - | Filter by side |
limit | number | 50 | Items per page |
Response:
{
"success": true,
"data": [
{
"id": "trade_abc123",
"marketId": "1234567",
"takerOrderId": "123456789",
"makerOrderId": "123456788",
"taker": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
"maker": "8yLYtg3CW87d97TXJSDpbD5jBkheTqA83TZRuJosgBsV",
"side": "BuyYes",
"priceBps": 5800,
"quantity": "5000000000",
"takerFee": "17400000",
"makerRebate": "5800000",
"timestamp": 1704067500,
"signature": "5wHu..."
},
...
]
}
List User Trades
GET /trades/user/:owner
Query Parameters:
| Name | Type | Description |
|---|---|---|
marketId | string | Filter by market |
role | string | taker or maker |
limit | number | Items per page |
Oracle
Get Oracle Price
GET /oracle/:pythFeed
Response:
{
"success": true,
"data": {
"feed": "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
"price": "68543210000",
"confidence": "12345000",
"exponent": -8,
"publishTime": 1704067500,
"priceFormatted": "68543.21",
"confidenceFormatted": "12.345"
}
}
Get Oracle History
GET /oracle/:pythFeed/history
Query Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
from | number | - | Start timestamp |
to | number | - | End timestamp |
interval | string | 1m | 1m, 5m, 15m, 1h |
Response:
{
"success": true,
"data": {
"feed": "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
"candles": [
{
"timestamp": 1704067200,
"open": "68500000000",
"high": "68600000000",
"low": "68400000000",
"close": "68550000000"
},
...
]
}
}
Protocol
Get Protocol Config
GET /protocol/config
Response:
{
"success": true,
"data": {
"programId": "SeesawProgramId...",
"authority": "AuthorityPubkey...",
"treasury": "TreasuryPubkey...",
"defaultSettlementMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"takerFeeBps": 30,
"makerRebateBps": 10,
"crankRewardLamports": "1000000",
"tickSizeBps": 100,
"marketsCreated": 12567,
"totalVolume": "15000000000000000"
}
}
Get Protocol Stats
GET /protocol/stats
Query Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
period | string | 24h | 1h, 24h, 7d, 30d |
Response:
{
"success": true,
"data": {
"period": "24h",
"marketsCreated": 96,
"marketsResolved": 96,
"totalVolume": "50000000000000",
"totalTrades": 15423,
"uniqueTraders": 892,
"avgMarketVolume": "520833333333",
"upOutcomes": 52,
"downOutcomes": 44
}
}
Health
Health Check
GET /health
Response:
{
"success": true,
"data": {
"status": "healthy",
"version": "1.0.0",
"indexerLag": 2,
"lastBlockIndexed": 250000000,
"uptime": 86400
}
}
Next Steps
- See WebSockets for real-time updates
- Review SDK Guide for client integration