Skip to main content

Getting Started

This guide walks you through the steps to integrate with the Prediction Market API as an operator.

Prerequisites​

Before you begin, you need:

  1. Operator Account — A registered operator account with API credentials
  2. API Key — Your unique API key for authenticating requests

Contact a platform administrator to have your operator account created. You will receive an API Key for authenticating all API requests.

Base URL​

REST API:  http://{host}:8084
gRPC: {host}:50055
WebSocket: ws://{host}:8084/ws

Authentication​

All API calls require the X-Api-Key header:

curl -H "X-Api-Key: your-api-key" https://polymarket.sandbox.playbatman.com/api/v1/markets

See the Authentication page for details.

Integration Flow​

Step 1: Create a Category (Optional)​

Categories help organize your markets.

curl -X POST https://polymarket.sandbox.playbatman.com/api/v1/categories \
-H "X-Api-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"name": "Sports",
"slug": "sports",
"description": "Sports prediction markets"
}'

Step 2: Create a Market​

curl -X POST https://polymarket.sandbox.playbatman.com/api/v1/markets \
-H "X-Api-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"title": "Champions League Final Winner",
"description": "Which team will win the 2026 Champions League final?",
"categoryId": "{categoryId}",
"currency": "KES",
"tradingStartsAt": "2026-03-01T00:00:00Z",
"tradingEndsAt": "2026-06-01T00:00:00Z",
"outcomes": [
{ "name": "Team A" },
{ "name": "Team B" }
]
}'

The market is created in DRAFT status.

Step 3: Open the Market​

When ready, open the market for trading:

curl -X POST https://polymarket.sandbox.playbatman.com/api/v1/markets/{marketId}/open \
-H "X-Api-Key: your-api-key"

Step 4: Place Orders​

Submit orders on behalf of your players. You must validate on your side that the player has sufficient balance before placing a BUY order.

curl -X POST https://polymarket.sandbox.playbatman.com/api/v1/orders \
-H "X-Api-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"marketId": "{marketId}",
"outcomeId": "{outcomeId}",
"playerId": "player-456",
"side": "BUY",
"type": "LIMIT",
"shares": 100,
"price": 0.55,
"transactionId": "txn-abc-123"
}'

The response includes the order details and any immediate trades if the order was matched.

Step 5: Monitor Positions​

Track your operator's aggregate positions:

curl https://polymarket.sandbox.playbatman.com/api/v1/positions \
-H "X-Api-Key: your-api-key"

Step 6: Resolve and Settle​

Once the event outcome is known:

# Resolve the market
curl -X POST https://polymarket.sandbox.playbatman.com/api/v1/markets/{marketId}/resolve \
-H "X-Api-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"winningOutcomeId": "{outcomeId}",
"resolutionSource": "Official match result",
"resolutionNotes": "Team A won 3-1"
}'

# Trigger settlement
curl -X POST https://polymarket.sandbox.playbatman.com/api/v1/markets/{marketId}/settle \
-H "X-Api-Key: your-api-key"

# Query settlement payouts
curl https://polymarket.sandbox.playbatman.com/api/v1/settlements?marketId={marketId} \
-H "X-Api-Key: your-api-key"

Settlement records tell you how much each position pays out. Use this data to credit your players' wallets.

Market Lifecycle​

DRAFT → UPCOMING → OPEN → SUSPENDED → OPEN (resumed)
↓ ↓
CLOSED → RESOLVED → SETTLED
↓
CANCELLED
StatusDescription
DRAFTMarket created, not yet visible or tradeable
UPCOMINGMarket visible, trading not yet started
OPENMarket open for trading
SUSPENDEDTrading temporarily paused
CLOSEDTrading ended, awaiting resolution
RESOLVEDWinning outcome declared, awaiting settlement
SETTLEDAll positions settled, payouts recorded
CANCELLEDMarket cancelled, all orders cancelled

Response Format​

All REST API responses follow a consistent envelope:

// Success
{
"success": true,
"data": { ... }
}

// Error
{
"success": false,
"error": {
"code": "MARKET_NOT_FOUND",
"message": "Market with id xyz not found"
}
}

Next Steps​