[ blog · comparison ]11 min read

Polymarket vs Kalshi API: een vergelijkende gids voor ontwikkelaars (auth, CLOB, WebSocket, historische data)

Sarah ChoyGepubliceerd op 3 mei 202611 min leestijd
Polymarket vs Kalshi API: een vergelijkende gids voor ontwikkelaars (auth, CLOB, WebSocket, historische data)

Polymarket en Kalshi draaien hetzelfde primitief — ja/nee-contracten op een CLOB — via volledig verschillende API's. De ene eist EIP-712-handtekeningen en een Polygon-wallet; de andere is een REST-endpoint met optioneel FIX. Als je een voorspellingsagent, een arbitragebot of een smart-money-monitor bouwt, hier is de vergelijkende gids die al zou moeten bestaan.

TL;DR

  • Polymarket gebruikt EIP-712-ondertekende orders die naar zijn CLOB op Polygon worden gestuurd — wallet-onboarding en gaskosten zijn van toepassing.
  • Kalshi gebruikt standaard REST + WebSocket-auth (e-mail/wachtwoord → token), plus een optionele FIX-gateway voor institutionele gebruikers.
  • Beide stellen orderboek, transacties en historische data beschikbaar, maar het schema en de afwikkelingssemantiek verschillen genoeg dat 'unified' bibliotheken het meest gevraagde Show HN-onderwerp zijn in deze hoek van de crypto-/quant-tooling.
  • Cross-venue-arbitrage tussen gelijkwaardige contracten is het meest voorkomende bouwpatroon (10+ open-source bots op GitHub).
  • API Pick Prediction Markets Search verpakt beide markten in één POST-endpoint voor contractontdekking in natuurlijke taal — 50 credits per call, gerangschikte semantische resultaten.

Waarom dit artikel bestaat

Als je enige tijd hebt besteed aan het bouwen op voorspellingsmarkten, ken je het canonieke verzoek: 'ik wil Polymarket en Kalshi vanuit hetzelfde Python-script bevragen en een schone lijst met overeenkomende contracten terugkrijgen.' De HN-commentaardraad bij elke Show HN over voorspellingsmarkten convergeert onvermijdelijk hierop — er is een terugkerend patroon van "CCXT voor voorspellingsmarkten"-posts, wat aangeeft dat de vraag bestaat en dat de bestaande oplossingen het net niet helemaal raken.

De moeilijkheid is reëel. De twee markten lossen hetzelfde primitief op — binaire "ja/nee"-contracten op een central limit order book — maar stellen ze beschikbaar via dramatisch verschillende API's. Hier is een werkende ontwikkelaarsblik op beide, naast elkaar, met de code die je echt nodig hebt.

Twee markten, twee architecturen

Polymarket

  • Chain: Polygon (USDC.e-afwikkelingen)
  • Auth: EIP-712 typed-data-ondertekening met de private key van een wallet; geen traditioneel bearer-token
  • Orderplaatsing: ondertekende order verzonden naar de CLOB API; gas betaald door Polymarket via meta-transacties
  • Marktontdekking: Gamma API (REST + JSON) om actieve markten te doorbladeren, plus een aparte CLOB API voor het live orderboek
  • Realtime data: WebSocket-stream voor orderboekupdates en transacties
  • Historische data: REST-endpoints voor transacties; dagelijkse snapshots afzonderlijk te downloaden

Kalshi

  • Afwikkeling: USD via ACH en overboeking (Amerikaanse bank vereist)
  • Auth: e-mail + wachtwoord → bearer-token, OF API-key (institutioneel)
  • Orderplaatsing: standaard geauthenticeerde REST POST naar /portfolio/orders
  • Marktontdekking: REST-endpoints voor events, markten en series; schoon schema
  • Realtime data: WebSocket en FIX (institutioneel) voor fills, orderboek, ticker
  • Historische data: REST-endpoints voor transacties; marktafwikkelings- en settlementdata eenvoudig

Naast elkaar

Architecturen veranderen. Verifieer rate limits, kosten en KYC-vereisten met de documentatie van elke markt vóór integratie.
PolymarketKalshiAPI Pick
AuthEIP-712 ondertekende orders + Polygon-walletE-mail/wachtwoord → bearer; of API-keyx-api-key-header (alleen-lezen ontdekking)
AfwikkelingUSDC op PolygonUSD-bankoverboeking (alleen VS)n.v.t. (alleen zoeken)
Legaliteit in de VSGeofenced (niet VS)CFTC-gereguleerdn.v.t.
RealtimeWebSocketWebSocket + FIXn.v.t.
HistorischREST-transacties + snapshotsREST-transacties + afwikkelingZoeken retourneert links naar de bron
Beste fitCrypto-native, globale markten, smart-money-trackingVS-gereguleerd, verkiezingen & economieCross-venue-contractontdekking

Werkende code: hello-world op elk

Polymarket: actieve markten weergeven

import requests

# Gamma API — no auth required for browsing
r = requests.get(
    "https://gamma-api.polymarket.com/markets",
    params={"active": "true", "limit": 25, "order": "volume"},
)
markets = r.json()
for m in markets[:5]:
    print(m["question"], "→", m["outcomePrices"])

Polymarket: een ondertekende order plaatsen (schets)

# Full order placement requires py-order-utils + a Polygon wallet
# This is the structural sketch — not runnable without wallet setup
from py_order_utils.builders import OrderBuilder
from py_order_utils.signer import Signer

signer = Signer(private_key="0xYOUR_PRIVATE_KEY")
builder = OrderBuilder(
    exchange_address="0x...",
    chain_id=137,
    signer=signer,
)

order = builder.build_signed_order({
    "maker": signer.address(),
    "tokenId": "...",        # the yes/no token ID for the market
    "makerAmount": "1000000", # USDC.e in atomic units
    "takerAmount": "1500000",
    "side": "BUY",
    "feeRateBps": 0,
    "nonce": 0,
    "expiration": 0,         # 0 = no expiry
})

requests.post(
    "https://clob.polymarket.com/order",
    json={"order": order, "owner": signer.address(), "orderType": "GTC"},
)

Kalshi: inloggen en een limietorder plaatsen

import requests

# Step 1 — login
r = requests.post(
    "https://api.elections.kalshi.com/trade-api/v2/login",
    json={"email": "you@example.com", "password": "..."},
).json()
token = r["token"]
headers = {"Authorization": f"Bearer {token}"}

# Step 2 — list markets in an event
r = requests.get(
    "https://api.elections.kalshi.com/trade-api/v2/markets",
    params={"event_ticker": "POTUS-2028", "limit": 25},
    headers=headers,
).json()
print(r["markets"][:5])

# Step 3 — place a limit buy on the "Yes" side at 60 cents
r = requests.post(
    "https://api.elections.kalshi.com/trade-api/v2/portfolio/orders",
    headers=headers,
    json={
        "ticker": "POTUS-2028-DEM",
        "type": "limit",
        "action": "buy",
        "side": "yes",
        "count": 100,            # 100 contracts
        "yes_price": 60,         # 60 cents
        "client_order_id": "abc123",
    },
)
print(r.json())

API Pick: ontdekking in natuurlijke taal over beide

import requests

r = requests.post(
    "https://www.apipick.com/api/search/prediction-markets",
    headers={"x-api-key": "pk_yourkey"},
    json={"query": "Federal Reserve rate cuts before end of 2026"},
)
for hit in r.json()["results"][:5]:
    print(hit["title"], "@", hit["venue"], "→", hit["url"])

# Returns ranked matches across Polymarket + Kalshi.
# 50 credits per call (~$0.05), only on HTTP 200.

Drie productiepatronen die echt werken

1. De cross-venue-arbitragebot

Het meest voorkomende patroon op GitHub: een handmatig samengestelde whitelist van "dit Polymarket-contract wikkelt af op dezelfde uitkomst als dit Kalshi-contract". De bot bewaakt beide boeken, berekent de impliciete kans en neemt een positie wanneer de spread een drempel overschrijdt. Voorbeelden: ImMike/polymarket-arbitrage en realfishsam/prediction-market-arbitrage-bot.

Het moeilijke deel is de whitelist. "Verlaagt de Fed met 25 bps op de decembervergadering" ziet er voor een mens hetzelfde uit, maar de afwikkelingsbronnen en exacte bewoording verschillen; een geautomatiseerde matcher zit er vaak genoeg naast dat echte bots door mensen samengestelde mappings gebruiken.

2. De smart-money-monitor

Whales op Polymarket zijn on-chain zichtbaar. Een monitor bewaakt Polygon op grote orderstromen in specifieke markten, brengt grote posities aan het licht en signaleert snelle prijsbewegingen voordat de koppen de nieuws-API's bereiken. Combineer met News Search om te bevestigen of een schijnbare beweging nieuwsgedreven is of pure speculatie.

3. De voorspellingsfeed voor een LLM-agent

Het binnenhalen van actuele Polymarket-/Kalshi-prijzen in de context van een LLM-agent laat het model op kansen gefundeerde antwoorden geven: "de huidige weddenschapsmarkten impliceren een kans van ~65% op X". Dit is de ontdekkings-use-case die API Pick dekt — gegeven een vraag in natuurlijke taal van de agent, retourneer gerangschikte contracten zodat de agent de prijs in zijn antwoord kan citeren.

Veelvoorkomende valkuilen (samengesteld uit HN-commentaren)

  • Polymarket EIP-712-ondertekening — de orderhandtekening is deterministisch, maar toolingfouten komen vaak voor. Gebruik py-order-utils in plaats van je eigen te bouwen. De meeste vroege botverliezen komen door handtekeningmismatches die de API stilzwijgend afwijst.
  • Rate limits van Kalshi — gedocumenteerd op 100 req/sec maar lager voor sommige endpoints tijdens drukke eventdagen (verkiezingsavonden, FOMC). Bouw retry-with-backoff in je client in.
  • Gas-pieken van Polymarket — Polygon-gas kan op grote-volumedagen omhoogschieten. Polymarket subsidieert de meeste orderplaatsing via meta-transacties, maar afwikkeling en opname betaalt de gebruiker zelf. Houd hier rekening mee in je P&L-berekeningen.
  • Afwikkelingsmismatches — schijnbare equivalenten wikkelen soms anders af. Lees altijd de afwikkelingsbron-clausules van beide contracten voordat je in paren handelt.
  • WebSocket-verbroken verbindingen — beide markten hebben routinematige WebSocket-haperingen. Herverbindingslogica met sequentienummer-replay is niet-onderhandelbaar voor elke productiebot.

Snel kiezen

Beste voor: VS-gereguleerd traden
Kalshi. CFTC-toezicht, USD-afwikkeling, geen crypto-onboarding. Het juiste antwoord voor elk product gericht op Amerikaanse gebruikers.
Beste voor: crypto-native, globaal, smart-money-tracking
Polymarket. Polygon-native betekent dat on-chain orderstroom waarneembaar is; bredere eventdekking, vooral in geopolitiek, crypto en entertainment.
Beste voor: cross-venue-arbitrage
Beide, gekoppeld. Bouw de bot eerst tegen één (meestal Kalshi vanwege de schonere auth); voeg Polymarket toe zodra je matchinglogica solide is.
Beste voor: contractontdekking in natuurlijke taal in een LLM-agent
API Pick Prediction Markets Search. Eén POST, retourneert gerangschikte matches over beide markten, 50 credits per call, alleen bij succes. Probeer het →

Waar dit naartoe gaat

Voorspellingsmarkten krijgen op dit moment een ongewone hoeveelheid mainstream-aandacht: grotere volumes rond Amerikaanse verkiezingen, FOMC-events, sport en AI-takeoff-vragen; bredere integraties met nieuwssites die impliciete kansen tonen; en een golf van ontwikkelaarstooling (Show HN's, GitHub-repo's) die convergeert op hetzelfde thema — 'iemand zou CCXT voor voorspellingsmarkten moeten schrijven.'

Wij denken niet dat een CCXT-achtige bibliotheek voor geünificeerde uitvoering de juiste vorm is. De verschillen in auth, afwikkeling en regulatoir regime zijn te diep om netjes te abstraheren zonder tegen de gebruiker te liegen. Maar het ontdekkingsprobleem — gegeven een vraag in natuurlijke taal, de contracten vinden die al bestaan — is wél oplosbaar met semantisch zoeken, en dat is wat API Pick Prediction Markets Search doet. Vind het contract; plaats de order bij de markt.

Veelgestelde vragen

Welke markt heeft de meeste contracten?

Op het moment van schrijven vermelden beide tienduizenden actieve markten. Polymarket neigt naar crypto-native en globaal (politiek, sport, crypto, actualiteiten); Kalshi is CFTC-gereguleerd en op de VS gericht (verkiezingen, economie, weer, sport). De volumeverdeling varieert per categorie — voor Amerikaanse verkiezingen is Kalshi doorgaans dieper; voor wereldwijde politiek en crypto-native vragen is dat Polymarket.

Waarom blijven er open-source 'unified' bibliotheken op Show HN opduiken?

Omdat de vraag bestaat en niemand het goed heeft opgelost. Show HN-posts zoals 'Open-source library to unify Polymarket and Kalshi APIs' en 'dr-manhattan — CCXT for Prediction Markets' zijn terugkerende patronen. De uitdaging is het matchen van gelijkwaardige contracten (zelfde uitkomst, andere bewoording) en het verzoenen van de afwikkelingssemantiek. Bibliotheken krijgen de auth-wrapper meestal voor elkaar, maar blijven steken voor het contractmatchen.

Hoe doe ik basale cross-venue-arbitrage?

Conceptueel: vind twee contracten die op dezelfde uitkomst afwikkelen op verschillende markten, controleer de impliciete kansen, neem de hogergeprijsde 'No'-kant en de lagergeprijsde 'Yes'-kant, en houd tot de afwikkeling vast. In de praktijk zit de wrijving in de uitvoering: gaskosten van Polymarket, USD-funding van Kalshi, gedeeltelijke fills en het matchingprobleem hierboven. De meeste live arbitragebots op GitHub draaien op een handmatig samengestelde whitelist van contractparen in plaats van ze automatisch te ontdekken.

Is Polymarket legaal in de VS?

Polymarket is momenteel niet geautoriseerd voor Amerikaanse gebruikers; de toegang is geofenced. Kalshi is CFTC-gereguleerd en legaal in de VS. Als je een product voor Amerikaanse gebruikers bouwt, is Kalshi de enige optie. Als je wereldwijd bouwt, biedt Polymarket bredere marktdekking.

Waar past API Pick in deze stack?

API Pick Prediction Markets Search lost het 'ontdekkings'-probleem op: gegeven een vraag in natuurlijke taal (bijv. 'Fed verlaagt de rente vóór het einde van het jaar'), retourneert het gerangschikte semantische matches over Polymarket- en Kalshi-contracten in één POST-call. We vervangen de order-uitvoerings-API's niet — voor het plaatsen van orders ga je nog steeds rechtstreeks naar elke markt. Wij maken het vinden van de juiste markt eenvoudig.

API's gebruikt in dit artikel

Sarah Choy
Geschreven door
Sarah Choy
CEO, API Pick

Sarah Choy is de CEO van API Pick. Ze schrijft over het bouwen van productieklare API's voor AI-agents en LLM-workflows.