Polymarket vs Kalshi API: Geliştiriciler İçin Yan Yana Rehber (Auth, CLOB, WebSocket, Geçmiş Veri)

Polymarket ve Kalshi aynı ilkeli yapıyı çalıştırır — bir CLOB üzerinde evet/hayır kontratları — ama tamamen farklı API'ler üzerinden. Biri EIP-712 imzaları ve bir Polygon cüzdanı ister; diğeri isteğe bağlı FIX'i olan bir REST endpoint'tir. Bir tahmin ajanı, bir arbitraj botu ya da bir akıllı para izleyicisi inşa ediyorsanız, işte çoktan var olması gereken yan yana rehber.
Özet
- •Polymarket, Polygon üzerindeki CLOB'una gönderilen EIP-712 ile imzalanmış emirler kullanır — cüzdan onboarding'i ve gas ücretleri geçerlidir.
- •Kalshi standart REST + WebSocket auth (e-posta/parola → token) kullanır, ayrıca kurumsal kullanıcılar için isteğe bağlı bir FIX gateway sunar.
- •İkisi de emir defteri, işlemler ve geçmiş veri sunar, ama şema ve çözümleme semantiği yeterince farklıdır; öyle ki kripto/kant araç dünyasının bu köşesinde 'birleştirilmiş' kütüphaneler en çok talep edilen Show HN konusudur.
- •Eşdeğer kontratlar arasında mekânlar arası arbitraj en yaygın inşa kalıbıdır (GitHub'da 10+ açık kaynaklı bot).
- •API Pick Prediction Markets Search, doğal dilde kontrat keşfi için her iki mekânı tek bir POST endpoint'inde sarmalar — çağrı başına 50 kredi, sıralanmış anlamsal sonuçlar.
Bu makale neden var
Tahmin piyasaları üzerinde inşa etmek için biraz vakit harcadıysanız, o klasik talebi bilirsiniz: 'Polymarket ve Kalshi'yi aynı Python betiğinden sorgulamak ve eşleşen kontratların temiz bir listesini geri almak istiyorum.' Her tahmin piyasası Show HN'inin HN yorum başlığı kaçınılmaz olarak buna yakınsar — tekrarlayan bir "tahmin piyasaları için CCXT" gönderi kalıbı vardır; bu da talebin var olduğunu ve mevcut çözümlerin hedefi tam tutturamadığını gösterir.
Zorluk gerçek. İki mekân aynı ilkeli yapıyı çözer — bir merkezi limit emir defteri üzerinde ikili "evet/hayır" kontratları — ama bunları çarpıcı biçimde farklı API'ler üzerinden sunar. İşte ikisinin de işleyen bir geliştirici bakışı, yan yana, gerçekten ihtiyacınız olan kodla.
İki mekân, iki mimari
Polymarket
- Zincir: Polygon (USDC.e tasfiyeleri)
- Auth: bir cüzdan özel anahtarıyla EIP-712 tipli-veri imzalama; geleneksel bir bearer token yok
- Emir verme: CLOB API'ye gönderilen imzalı emir; gas, meta-işlemler aracılığıyla Polymarket tarafından ödenir
- Piyasa keşfi: aktif piyasalara göz atmak için Gamma API (REST + JSON), ayrıca canlı emir defteri için ayrı bir CLOB API
- Gerçek zamanlı veri: emir defteri güncellemeleri ve işlemler için WebSocket akışı
- Geçmiş veri: işlemler için REST endpoint'leri; günlük anlık görüntüler ayrıca indirilebilir
Kalshi
- Tasfiye: ACH ve havale yoluyla USD (ABD bankası gerekli)
- Auth: e-posta + parola → bearer token, YA DA API key (kurumsal)
- Emir verme:
/portfolio/ordersadresine standart kimlik doğrulamalı REST POST - Piyasa keşfi: olaylar, piyasalar ve seriler için REST endpoint'leri; temiz şema
- Gerçek zamanlı veri: dolumlar, emir defteri, ticker için WebSocket ve FIX (kurumsal)
- Geçmiş veri: işlemler için REST endpoint'leri; piyasa çözümleme ve tasfiye verisi anlaşılır
Yan yana
| Polymarket | Kalshi | API Pick | |
|---|---|---|---|
| Auth | EIP-712 imzalı emirler + Polygon cüzdanı | E-posta/parola → bearer; ya da API key | x-api-key başlığı (salt-okunur keşif) |
| Tasfiye | Polygon üzerinde USDC | USD banka havalesi (yalnızca ABD) | n/a (yalnızca arama) |
| ABD'de yasallık | Coğrafi engelli (ABD değil) | CFTC denetiminde | n/a |
| Gerçek zamanlı | WebSocket | WebSocket + FIX | n/a |
| Geçmiş | REST işlemler + anlık görüntüler | REST işlemler + tasfiye | Arama, kaynağa giden bağlantılar döndürür |
| En uygun | Kripto-yerel, küresel piyasalar, akıllı para takibi | ABD-denetiminde, seçim ve ekonomi | Mekânlar arası kontrat keşfi |
Çalışan kod: her birinde hello-world
Polymarket: aktif piyasaları listele
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: imzalı bir emir ver (taslak)
# 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: giriş yap ve bir limit emri ver
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: ikisinde de doğal dilde keşif
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.Gerçekten işe yarayan üç üretim kalıbı
1. Mekânlar arası arbitraj botu
GitHub'daki en yaygın kalıp: "bu Polymarket kontratı, bu Kalshi kontratıyla aynı sonuca göre çözümleniyor" diyen, özenle hazırlanmış bir whitelist. Bot her iki defteri izler, ima edilen olasılığı hesaplar ve spread bir eşiği aştığında pozisyon alır. Örnekler: ImMike/polymarket-arbitrage ve realfishsam/prediction-market-arbitrage-bot.
Zor kısım whitelist'tir. "Fed aralık toplantısında 25 bps indirecek mi" bir insana aynı görünür, ama çözümleme kaynakları ve tam ifade farklıdır; otomatik bir eşleştirici yeterince sık yanılır, öyle ki gerçek botlar insan eliyle hazırlanmış eşlemeleri kullanır.
2. Akıllı para izleyicisi
Polymarket'teki balinalar zincir üzerinde görünürdür. Bir izleyici, belirli piyasalardaki büyük emir akışı için Polygon'u izler, büyük pozisyonları gün yüzüne çıkarır ve manşetler haber API'lerine ulaşmadan önce hızlı fiyat hareketlerini işaretler. Görünür bir hareketin haber kaynaklı mı yoksa saf spekülasyon mu olduğunu doğrulamak için News Search ile eşleştirin.
3. Bir LLM ajanı için tahmin beslemesi
Güncel Polymarket / Kalshi fiyatlarını bir LLM ajanının bağlamına çekmek, modelin olasılık temelli yanıtlar vermesini sağlar: "güncel bahis piyasaları X için ~%65 olasılık ima ediyor". API Pick'in kapsadığı keşif kullanım durumu budur — ajandan gelen doğal dilde bir soruya karşılık, ajanın yanıtında fiyatı belirtebilmesi için sıralanmış kontratlar döndürün.
Yaygın tuzaklar (HN yorumlarından derlendi)
- Polymarket EIP-712 imzalama — emir imzası deterministiktir ama araç hataları yaygındır. Kendinizinkini yazmak yerine
py-order-utilskullanın. Erken bot kayıplarının çoğu, API'nin sessizce reddettiği imza uyumsuzluklarından gelir. - Kalshi rate limit'leri — dokümanlarda 100 req/sn olarak geçer ama yoğun olay günlerinde (seçim geceleri, FOMC) bazı endpoint'ler için daha düşüktür. İstemcinize geri-çekilmeli yeniden deneme ekleyin.
- Polymarket gas sıçramaları — Polygon gas'i yüksek hacimli günlerde fırlayabilir. Polymarket çoğu emir vermeyi meta-işlemlerle sübvanse eder ama tasfiye ve çekim kullanıcı-ödemelidir. Bunu P&L hesaplarında dikkate alın.
- Tasfiye uyumsuzlukları — görünüşte eşdeğer olanlar bazen farklı çözümlenir. Çift-ticaret yapmadan önce her iki kontratın çözümleme-kaynağı maddelerini her zaman okuyun.
- WebSocket kopmaları — her iki mekânda da rutin WebSocket dalgalanmaları olur. Herhangi bir üretim botu için sıra-numarası tekrarıyla yeniden bağlanma mantığı pazarlık konusu değildir.
Hızlı seçim
Bu nereye gidiyor
Tahmin piyasaları şu anda olağandışı ölçüde ana akım ilgi görüyor: ABD seçimleri, FOMC olayları, spor ve YZ-sıçraması soruları etrafında daha büyük hacimler; ima edilen olasılıkları gösteren haber siteleriyle daha geniş entegrasyonlar; ve aynı temaya yakınsayan bir geliştirici araç dalgası (Show HN'ler, GitHub depoları) — 'birileri tahmin piyasaları için CCXT yazmalı.'
CCXT tarzı birleştirilmiş-yürütme kütüphanesinin doğru biçim olduğunu düşünmüyoruz. Auth, tasfiye ve düzenleyici rejimdeki farklar, kullanıcıya yalan söylemeden temiz biçimde soyutlanamayacak kadar derin. Ama keşif sorunu — doğal dilde bir soru verildiğinde, halihazırda var olan kontratları bulmak — anlamsal aramayla çözülebilir, ki API Pick Prediction Markets Search tam da bunu yapar. Kontratı bulun; emri mekânda verin.
Sıkça Sorulan Sorular
Hangi mekânda daha fazla kontrat var?
Bu yazıyı yazdığımız sırada ikisi de on binlerce aktif piyasa listeliyor. Polymarket kripto-yerel ve küresele yatkındır (siyaset, spor, kripto, güncel olaylar); Kalshi CFTC denetiminde ve ABD odaklıdır (seçimler, ekonomi, hava durumu, spor). Hacim dağılımı kategoriye göre değişir — ABD seçimleri için genellikle Kalshi daha derindir; küresel siyaset ve kripto-yerel sorular için Polymarket.
Açık kaynaklı 'birleştirilmiş' kütüphaneler Show HN'de neden sürekli ortaya çıkıyor?
Çünkü talep var ve kimse bunu iyi çözemedi. 'Open-source library to unify Polymarket and Kalshi APIs' ve 'dr-manhattan — CCXT for Prediction Markets' gibi Show HN gönderileri tekrarlayan kalıplardır. Zorluk, eşdeğer kontratları eşleştirmek (aynı sonuç, farklı ifade) ve tasfiye semantiğini uzlaştırmaktır. Kütüphaneler genellikle auth sarmalayıcısını tutturur ama kontrat eşleştirmesinden önce durur.
Temel mekânlar arası arbitrajı nasıl yaparım?
Kavramsal olarak: farklı mekânlarda aynı sonuca göre çözümlenen iki kontrat bul, ima edilen olasılıkları kontrol et, daha yüksek fiyatlı 'No' tarafını ve daha düşük fiyatlı 'Yes' tarafını al, çözümlemeye kadar tut. Pratikte sürtünme yürütmededir: Polymarket gas ücretleri, Kalshi USD fonlaması, kısmi dolumlar ve yukarıdaki eşleştirme sorunu. GitHub'daki canlı arbitraj botlarının çoğu, kontratları otomatik keşfetmek yerine, özenle hazırlanmış bir kontrat-çifti eşlemesi whitelist'i üzerinde çalışır.
Polymarket ABD'de yasal mı?
Polymarket şu anda ABD kullanıcıları için yetkilendirilmemiştir; erişim coğrafi olarak engellenmiştir. Kalshi CFTC denetiminde ve ABD'de yasaldır. ABD kullanıcılarına yönelik bir ürün inşa ediyorsanız tek seçenek Kalshi'dir. Küresel inşa ediyorsanız Polymarket daha geniş piyasa kapsamı getirir.
API Pick bu yığında nereye oturuyor?
API Pick Prediction Markets Search 'keşif' sorununu çözer: doğal dilde bir soru verildiğinde (ör. 'Fed yıl sonuna kadar faiz indirir'), tek bir POST çağrısında Polymarket ve Kalshi kontratları arasında sıralanmış anlamsal eşleşmeler döndürür. Emir-yürütme API'lerinin yerini almıyoruz — emir vermek için yine her mekâna doğrudan gidersiniz. Doğru piyasayı bulmayı kolaylaştırırız.
Bu makalede kullanılan API'ler
Sarah Choy, API Pick'in CEO'sudur. Yapay zeka ajanları ve LLM iş akışları için üretime hazır API'ler geliştirme üzerine yazılar yazar.