Prediction markets data - Polymarket, Kalshi markets, prices, positions, and trades

Prediction markets data - Polymarket, Kalshi markets, prices, positions, and trades

Audits

Pending

Install

openclaw skills install openclaw-aisa-prediction-market

Cross-Platform Prediction Market Data 📈

Prediction markets data access for autonomous agents. Powered by AIsa.

One API key. Full Polymarket and Kalshi intelligence.

What Can You Do?

Probability Checks

"What are the odds of [event] happening?"

Market Sentiment

"Research the current market sentiment on the upcoming election."

Trading Analysis

"Analyze historical prices and orderbooks for this market."

Portfolio Tracking

"Track portfolio positions and P&L for wallet address X."

Arbitrage Detection

"Find arbitrage opportunities across Polymarket and Kalshi."

Quick Start

export AISA_API_KEY="your-key"

How to Look Up IDs

Most endpoints require an ID that comes from the /markets response. Always query markets first, then pass the relevant ID to downstream endpoints.

  1. Polymarket token_id: Query /polymarket/markets, find side_a.id or side_b.id in the response, then pass it to /polymarket/market-price/{token_id}.
  2. Polymarket condition_id: Query /polymarket/markets, find condition_id in the response, then pass it to /polymarket/candlesticks/{condition_id}.
  3. Kalshi market_ticker: Query /kalshi/markets, find market_ticker in the response, then pass it to /kalshi/market-price/{market_ticker}.

End-to-End Examples

Get the current price of a Polymarket market

Prices require a token_id, which comes from the /markets response. Always query markets first.

Step 1: Find a market and extract the token_id:

# Search for open election markets and grab a token_id
python scripts/prediction_market_client.py polymarket markets --search "election" --status open --limit 5

The response includes a side_a.id and side_b.id for each market; these are the token IDs for the Yes and No sides respectively:

{
  "markets": [
    {
      "title": "Will Trump nationalize elections?",
      "market_slug": "will-trump-nationalize-elections",
      "condition_id": "0xe6522d64f35a6843ebdbccab2e3d4a1385350be6d40a3de766330e207b71a8ba",
      "side_a": {
        "id": "44482086252598348208660011972852804909957485351743405768768577675743702971026",
        "label": "Yes"
      },
      "side_b": {
        "id": "68987475491741167427045844503509447338405188188495224371188027929166363674438",
        "label": "No"
      }
    }
  ]
}

Step 2: Fetch the current price using the token_id:

# Use side_a.id (Yes) or side_b.id (No) from Step 1
python scripts/prediction_market_client.py polymarket price 44482086252598348208660011972852804909957485351743405768768577675743702971026

The price is a decimal between 0 and 1 representing the probability (e.g. 0.20 = 20% chance of Yes).


Get the current price of a Kalshi market

Step 1: Find a market and extract the market_ticker:

python scripts/prediction_market_client.py kalshi markets --search "fed rate" --status open --limit 5
{
  "markets": [
    {
      "title": "Will the federal funds rate be above 3.75% after the Mar 2026 meeting?",
      "market_ticker": "KXFED-26MAR-T3.75",
      "last_price": 6
    }
  ]
}

Step 2: Fetch the price using the market_ticker:

python scripts/prediction_market_client.py kalshi price KXFED-26MAR-T3.75

Core Capabilities

Polymarket

Markets

# Find markets on Polymarket
curl -X GET "https://api.aisa.one/apis/v1/polymarket/markets?search=election&status=open" \
  -H "Authorization: Bearer $AISA_API_KEY"

Market Price

# Step 1: query /polymarket/markets to get a token_id from side_a.id or side_b.id
# Step 2: pass that token_id here to get the current price
curl -X GET "https://api.aisa.one/apis/v1/polymarket/market-price/{token_id}" \
  -H "Authorization: Bearer $AISA_API_KEY"

Activity

# Fetch activity data for a specific user
curl -X GET "https://api.aisa.one/apis/v1/polymarket/activity?user={wallet_address}" \
  -H "Authorization: Bearer $AISA_API_KEY"

Trade History

# Fetch historical trade data
curl -X GET "https://api.aisa.one/apis/v1/polymarket/orders?market_slug={market_slug}" \
  -H "Authorization: Bearer $AISA_API_KEY"

Orderbook History

# Fetch historical orderbook snapshots for a specific asset
# token_id comes from side_a.id or side_b.id in /polymarket/markets response
curl -X GET "https://api.aisa.one/apis/v1/polymarket/orderbooks?token_id={token_id}" \
  -H "Authorization: Bearer $AISA_API_KEY"

Candlesticks

# Fetch historical candlestick data for a market
# condition_id comes from /polymarket/markets response
curl -X GET "https://api.aisa.one/apis/v1/polymarket/candlesticks/{condition_id}?interval=60" \
  -H "Authorization: Bearer $AISA_API_KEY"

Positions

# Fetch all Polymarket positions for a proxy wallet address
curl -X GET "https://api.aisa.one/apis/v1/polymarket/positions/wallet/{wallet_address}" \
  -H "Authorization: Bearer $AISA_API_KEY"

Wallet

# Fetch wallet information
curl -X GET "https://api.aisa.one/apis/v1/polymarket/wallet?eoa={wallet_address}" \
  -H "Authorization: Bearer $AISA_API_KEY"

Wallet Profit-and-Loss

# Fetch realized profit and loss (PnL) for a specific wallet address
curl -X GET "https://api.aisa.one/apis/v1/polymarket/wallet/pnl/{wallet_address}?granularity=day" \
  -H "Authorization: Bearer $AISA_API_KEY"

Kalshi

Markets

# Find markets on Kalshi
curl -X GET "https://api.aisa.one/apis/v1/kalshi/markets?search=fed%20rate" \
  -H "Authorization: Bearer $AISA_API_KEY"

Market Price

# Fetch the current market price for a Kalshi market
# market_ticker comes from /kalshi/markets response
curl -X GET "https://api.aisa.one/apis/v1/kalshi/market-price/{market_ticker}" \
  -H "Authorization: Bearer $AISA_API_KEY"

Trade History

# Fetch historical trade data for Kalshi markets
# ticker (market_ticker) comes from /kalshi/markets response
curl -X GET "https://api.aisa.one/apis/v1/kalshi/trades?ticker={ticker}" \
  -H "Authorization: Bearer $AISA_API_KEY"

Orderbook History

# Fetch historical orderbook snapshots for a specific Kalshi market
# ticker (market_ticker) comes from /kalshi/markets response
curl -X GET "https://api.aisa.one/apis/v1/kalshi/orderbooks?ticker={ticker}" \
  -H "Authorization: Bearer $AISA_API_KEY"

Cross-Platform

Sports Markets

# Find equivalent markets across platforms for sports events
curl -X GET "https://api.aisa.one/apis/v1/matching-markets/sports" \
  -H "Authorization: Bearer $AISA_API_KEY"

Sports Markets by Date

# Find equivalent markets across platforms for a sport on a given date
# sport options: nfl, mlb, cfb, nba, nhl, cbb, pga, tennis
# date format: YYYY-MM-DD
curl -X GET "https://api.aisa.one/apis/v1/matching-markets/sports/nba?date=2025-08-16" \
  -H "Authorization: Bearer $AISA_API_KEY"

Sport abbreviations:

AbbreviationSport
nflFootball
mlbBaseball
cfbCollege Football
nbaBasketball
nhlHockey
cbbCollege Basketball
pgaGolf
tennisTennis

API Endpoints Reference

Polymarket Endpoints (GET)

EndpointDescriptionKey Params
/polymarket/marketsFind marketssearch, status, market_slug, limit
/polymarket/market-price/{token_id}Get market pricetoken_id, at_time
/polymarket/activityGet user activityuser, start_time, end_time
/polymarket/ordersGet trade historymarket_slug, token_id, user
/polymarket/orderbooksGet orderbook historytoken_id, start_time, end_time
/polymarket/candlesticks/{condition_id}Get candlestick datacondition_id, start_time, end_time, interval
/polymarket/positions/wallet/{wallet_address}Get wallet positionswallet_address, limit
/polymarket/walletGet wallet infoeoa or proxy, with_metrics
/polymarket/wallet/pnl/{wallet_address}Get wallet PnLwallet_address, granularity

Kalshi Endpoints (GET)

EndpointDescriptionKey Params
/kalshi/marketsFind marketssearch, status, market_ticker
/kalshi/market-price/{market_ticker}Get market pricemarket_ticker, at_time
/kalshi/tradesGet trade historyticker, start_time, end_time
/kalshi/orderbooksGet orderbook historyticker, start_time, end_time

Cross-Platform Endpoints (GET)

EndpointDescriptionKey Params
/matching-markets/sportsFind matching sports marketspolymarket_market_slug or kalshi_event_ticker
/matching-markets/sports/{sport}Find sports markets by datesport (nfl|mlb|cfb|nba|nhl|cbb|pga|tennis), date (YYYY-MM-DD)

Response Schemas

Markets Response

Returns markets array:

  • title (string) - Market question (e.g., "Will Trump nationalize elections?")
  • market_slug (string) - URL-friendly identifier
  • condition_id (string) - Blockchain condition ID
  • start_time / end_time (integer) - Unix timestamps
  • completed_time (integer|null) - Null if still open
  • tags (array) - Category tags (e.g., ["politics", "us election"])
  • volume_1_week / volume_1_month / volume_1_year / volume_total (number) - Trading volume in USD
  • side_a / side_b (object) - id and label (typically "Yes"/"No")
  • winning_side (object|null) - Null if unresolved
  • image (string) - Market thumbnail URL

Activity Response

Returns activities array:

  • title (string) - Market title
  • market_slug (string) - Market identifier
  • side (string) - Trade side: BUY, SELL, or MERGE
  • shares (integer) - Raw share amount
  • shares_normalized (number) - Human-readable share amount
  • price (number) - Trade price (0-1, represents probability)
  • timestamp (integer) - Unix timestamp of the trade
  • user (string) - Wallet address of the trader
  • tx_hash (string) - Blockchain transaction hash

Understanding Odds

  • Prices are shown as decimals (0.65 = 65% probability)
  • "Yes" price = probability market thinks event will happen
  • Higher volume = more confidence/liquidity
  • Prices change based on trading activity

Pricing

APICost
Prediction market read query$0.01

Every response includes usage.cost and usage.credits_remaining.

Get Started

  1. Sign up at aisa.one
  2. Get your API key
  3. Add credits (pay-as-you-go)
  4. Set environment variable: export AISA_API_KEY="your-key"

Full API Reference

See API Reference for complete endpoint documentation.