Kısa Özet
Polymarket size üç herkese açık API sunar (API, programların verileri otomatik olarak okumasını veya işlem yapmasını sağlayan bir yöntemdir): CLOB (alım satım), Gamma (pazar keşfi) ve Data (analitik). Resmî Python SDK’sı py-clob-client 0.34.6’dır. Kimlik doğrulamada API anahtarı + ECDSA imzası kullanılır; emirler ise Polygon proxy wallet üzerinden EIP-712 ile imzalanır. Hız sınırları, anahtar başına yaklaşık dakikada 60 emir ile sınırlıdır. Yeni geliştiriciler için en büyük tuzak, Gamma ile CLOB arasındaki condition_id → token_id eşleme problemidir. Önce bunu çözerseniz, geri kalan her şey çok daha sorunsuz ilerler. Polymarket’te likidite ödülleri ve botların yakaladığı spread üzerinden yaklaşık ayda 40 milyon dolar kazanılır; bunun neredeyse tamamı API kullanıcılarına gider.
Bölüm 1: Üç API
Polymarket, işleri üç ayrı servis arasında net şekilde paylaştırır. Her iş için doğru API’yi kullanmak botunuzu hızlı, sade ve hız sınırları içinde tutar.
| API | Base URL | Purpose | Auth Required |
|---|---|---|---|
| CLOB API | clob.polymarket.com | Emir verin, iptal edin ve takip edin. Emir defterlerini okuyun. Pozisyonları sorgulayın. | Evet (alım satım için) |
| Gamma API | gamma-api.polymarket.com | Pazarlara göz atın; metadataları, görselleri, sonuç fiyatlarını, hacmi, vade tarihini ve etiketleri alın. | Hayır (herkese açık) |
| Data API | data-api.polymarket.com | Geçmiş işlemler, pozisyon anlık görüntüleri, kullanıcı analitiği ve liderlik tablosu verileri. | Hayır (herkese açık) |
Tipik bir bot döngüsünde pazarları bulmak için Gamma, emir defterlerini almak ve işlem yapmak için CLOB, strateji performansını çevrim dışı geriye dönük test etmek için ise Data kullanılır. Gamma’yı “katalog”, CLOB’u “borsa”, Data’yı ise “depo” gibi düşünebilirsiniz.
Bölüm 2: Kimlik Doğrulama & Proxy Wallet Modeli
Polymarket, işlemleri ana cüzdanınızın private key’i ile imzalamaz. Bunun yerine Gnosis Safe tarzı bir proxy wallet kullanır. Ana cüzdanınız bir proxy’yi yetkilendirir ve proxy, tüm işlemleri Polygon üzerinde yürütür. API botunuz bu proxy ile iletişim kurar.
Gerekenler
- API anahtarı - Polymarket Settings → Developer bölümünden oluşturun
- Private key - trading wallet anahtarınız (ana MetaMask seed phrase’iniz DEĞİL)
- Funder adresi - proxy wallet adresiniz (Settings → Wallet bölümünde gösterilir)
- Chain ID -
137(Polygon mainnet) - Signature type -
1(POLY_PROXY, bireysel kullanıcılar için standart)
Bölüm 3: py-clob-client Kurulumu
Resmi Python SDK, sıfırdan ilk emrinize en hızlı şekilde ulaşmanızı sağlar. PyPI üzerindeki güncel sürüm olan 0.34.6 sürümünü kullanacağız (Şubat 2026); canlı botların neredeyse tamamı da bu sürümle çalışıyor.
# Create a virtual environment first
python3 -m venv venv
source venv/bin/activate # macOS/Linux
venv\Scripts\activate # Windows
# Install the SDK
pip install py-clob-client==0.34.6 requests websocket-client python-dotenvTemel istemci yapılandırması
import os
from dotenv import load_dotenv
from py_clob_client.client import ClobClient
from py_clob_client.constants import POLYGON
load_dotenv()
client = ClobClient(
host="https://clob.polymarket.com",
key=os.environ["POLY_PRIVATE_KEY"],
chain_id=POLYGON, # 137
signature_type=1, # POLY_PROXY
funder=os.environ["POLY_FUNDER"],
)
# One-time: derive and cache API credentials
client.set_api_creds(client.create_or_derive_api_creds())create_or_derive_api_creds() çağrısı, özel anahtarınızla bir mesaj imzalar. Bunun karşılığında bir API anahtarı, secret ve passphrase alır. İlk çalıştırmadan sonra bunları .env dosyanızda önbelleğe alın; böylece her başlangıçta derive endpoint'ine istek göndermek zorunda kalmazsınız.
Bölüm 4: Gamma ile Piyasaları Keşfetme
İşlem yapmadan önce, işlem yapmaya değer piyasaları bulmanız gerekir. Gamma, Polymarket arayüzünde gördüğünüz her şeyi JSON olarak döndürür: soru, sonuçlar, fiyatlar, 24 saatlik hacim, vade, etiketler ve görseller.
import requests
resp = requests.get(
"https://gamma-api.polymarket.com/markets",
params={
"active": "true",
"closed": "false",
"tag_slug": "politics",
"limit": 20,
"order": "volume24hr",
"ascending": "false",
},
timeout=10,
)
resp.raise_for_status()
markets = resp.json()
for m in markets:
print(f"{m['slug']:50} Yes ${float(m['outcomePrices'][0]):.3f} Vol24h ${m.get('volume24hr', 0):,.0f}")Kullanışlı Gamma sorgu parametreleri
| Parameter | What it does |
|---|---|
tag_slug | Kategoriye göre filtreler (politika, spor, kripto, kültür vb.) |
active=true | Yalnızca şu anda işlem kabul eden piyasalar |
closed=false | Sonuçlanmış piyasaları gizler |
order=volume24hr | Son hacme göre sıralar (likidite sinyali) |
end_date_min | ISO tarihi - çok yakında sonuçlanacak piyasaları atlar |
limit | Sayfa başına en fazla 500 (sayfalama için offset kullanın) |
Bölüm 5: condition_id → token_id Eşlemesi
Bu, Polymarket bot geliştirirken karşılaşılan en büyük sorun noktasıdır. Gamma bir condition_id döndürür (piyasa başına bir tane). CLOB işlemleri ise token_id kullanır (sonuç başına bir tane). Her zaman ikisine de ihtiyacınız vardır.
# Each Gamma market object contains 'clobTokenIds' - a JSON string array
import json
market = markets[0]
token_ids = json.loads(market['clobTokenIds']) # ['7410...', '1120...']
yes_token = token_ids[0] # First outcome
no_token = token_ids[1] # Second outcome
# Alternative: ask CLOB directly using condition_id
info = client.get_market(condition_id=market['conditionId'])
yes_token = info['tokens'][0]['token_id']Sonuç sıralamasında dikkat edilmesi gereken nokta
Gamma'nın outcomes dizisi ile clobTokenIds dizisi indeks bazında eşleşir. Sonuç etiketini her zaman okuyun. 0 indeksinin "Yes" olduğunu varsaymayın. Çok sonuçlu piyasalarda (NegRisk, Oscar'lar, seçimler) 0 indeksi "Kamala Harris" veya "Taylor Swift" olabilir. Sıralama sabittir, ancak her piyasaya özeldir.
Bölüm 6: Emir Defterlerini Okuma
book = client.get_order_book(token_id=yes_token)
best_bid = float(book.bids[0].price) if book.bids else None
best_ask = float(book.asks[0].price) if book.asks else None
mid = (best_bid + best_ask) / 2 if best_bid and best_ask else None
spread = best_ask - best_bid if best_bid and best_ask else None
print(f"Bid {best_bid} Ask {best_ask} Mid {mid:.4f} Spread {spread:.4f}")Emir defterleri sıralı diziler olarak döner (alış emirleri azalan, satış emirleri artan sırada). Her kademede bir price ve bir size bulunur. Daha büyük bir emirde kaymayı tahmin etmek için defterde ilerleyin ve hedef büyüklüğünüz dolana kadar nominal tutarı toplayın.
Bölüm 6b: CLOB v2 REST Endpoint'leri (ham, SDK olmadan)
SDK bunları sarmalar; ancak ham endpoint'leri bilmek hata ayıklamanıza, başka bir dil kullanmanıza veya ince bir istemci oluşturmanıza olanak tanır. Temel URL: https://clob.polymarket.com. Aşağıdaki tüm okuma işlemleri herkese açıktır - kimlik doğrulama gerekmez. Bunlar Haziran 2026'da canlı olarak doğrulanmıştır.
| Endpoint | Method | What it returns |
|---|---|---|
/markets | GET | Tüm marketler (next_cursor ile sayfalanır). condition_id, tokens[], minimum_tick_size, neg_risk içerir. |
/sampling-markets | GET | Yalnızca canlı emir defteri olan marketler; işlem yapılabilir token_id değerlerini bulmanın en hızlı yolu. |
/book?token_id= | GET | Tam emir defteri: fiyat + miktar bilgisiyle bids[] ve asks[]. |
/price?token_id=&side=buy | GET | Bir taraf için en iyi fiyat. side büyük/küçük harfe duyarlı değildir (buy/BUY). {"price":"0.14"} döndürür. |
/midpoint?token_id= | GET | {"mid":"0.21"} - en iyi alış ve satış fiyatının ortası. |
/spread?token_id= | GET | {"spread":"0.14"} - en iyi satış fiyatı eksi en iyi alış fiyatı. |
/tick-size?token_id= | GET | {"minimum_tick_size":0.01} - ilgili token için izin verilen en küçük fiyat adımı. |
/prices-history?market=&interval= | GET | Geçmiş fiyat noktaları. interval = 1m,1h,6h,1d,1w,max. |
/trades | GET | Son işlemler (kendi işlemleriniz için kimlik doğrulaması gerekir; market için herkese açıktır). |
/order | POST | İmzalı emir gönderir (kimlik doğrulaması gerekir). |
/order | DELETE | id ile tek bir emri iptal eder (kimlik doğrulaması gerekir). |
/orders | GET | Bekleyen açık emirleriniz (kimlik doğrulaması gerekir). |
/balance-allowance?asset_type= | GET | USDC bakiyeniz ve zincir üzerindeki harcama izniniz (kimlik doğrulaması gerekir). Her emirden önce kontrol edin. |
Canlı API'den doğrudan alınmış doğrulanmış yanıtlar:
$ curl "https://clob.polymarket.com/price?token_id=7347...&side=buy"
{"price":"0.14"}
$ curl "https://clob.polymarket.com/midpoint?token_id=7347..."
{"mid":"0.21"}
$ curl "https://clob.polymarket.com/spread?token_id=7347..."
{"spread":"0.14"}
$ curl "https://clob.polymarket.com/tick-size?token_id=7347..."
{"minimum_tick_size":0.01}L2 kimlik doğrulama başlıkları (SDK olmadan ham REST için)
Okuma endpoint'leri herkese açıktır. Ham REST üzerinden emir göndermek veya iptal etmek için her isteği API kimlik bilgilerinizle imzalarsınız. SDK bunu sizin yerinize yapar; arka planda oluşturduğu yapı şöyledir:
| Header | What it carries |
|---|---|
POLY_ADDRESS | İmzalama cüzdanı adresiniz |
POLY_API_KEY | create_or_derive_api_creds() tarafından döndürülen API anahtarı |
POLY_PASSPHRASE | Aynı türetme çağrısından gelen parola ifadesi |
POLY_TIMESTAMP | Geçerli UNIX saniyesi (sunucu saatiyle eşleşmelidir - saat eşitleme ipucuna bakın) |
POLY_NONCE | İstek başına nonce |
POLY_SIGNATURE | timestamp + method + path + body için HMAC-SHA256; API secret değerinizle anahtarlanır ve base64-url olarak kodlanır |
Bölüm 7: Emir Gönderme - Alış ve Satış
Limit emri (GTC - varsayılan)
from py_clob_client.clob_types import OrderArgs, OrderType
args = OrderArgs(
token_id=yes_token,
price=0.45,
size=100, # Shares, not dollars. 100 shares @ $0.45 = $45 max cost.
side="BUY",
)
signed_order = client.create_order(args)
response = client.post_order(signed_order, OrderType.GTC)
print(response)create_order çağrısı, özel anahtarınızla EIP-712 yapısal mesajını imzalar. Ardından post_order bunu CLOB'a gönderir. Ham özel anahtarları ağ üzerinden asla göndermezsiniz; yalnızca imzalı emirler gönderilir.
Önce fiyatı tick'e hizalayın
Her emir fiyatı, marketin minimum_tick_size değerinin tam katı olmalıdır (çoğu markette 0,01; dar spread'li marketlerde 0,001). Tick'e uymayan fiyat reddedilir. Tick değerini bir kez alın ve fiyatı buna yuvarlayın:
from py_clob_client.clob_types import OrderArgs, OrderType
tick = float(client.get_tick_size(token_id=yes_token)) # e.g. 0.01
def to_tick(p, tick): return round(round(p / tick) * tick, 4)
price = to_tick(0.453, tick) # -> 0.45 on a 0.01 marketBuy
side="BUY", size hisse cinsindendir (dolar değil). 0,45 ABD dolarından 100 hisse en fazla 45 ABD dolarına mal olur ve sonuç kazanırsa 100 ABD doları öder. Minimum emir değeri yaklaşık 1 ABD dolarıdır.
buy = OrderArgs(token_id=yes_token, price=to_tick(0.45, tick), size=100, side="BUY")
resp = client.post_order(client.create_order(buy), OrderType.GTC)
print(resp) # {'success': True, 'orderID': '0x...', 'status': 'live', ...}Sell
Satış için aynı çağrıyı side="SELL" ile yaparsınız. Yalnızca zaten elinizde bulunan payları satabilirsiniz; pozisyonunuzdan fazlasını satmaya çalışırsanız işlem "insufficient balance" hatasıyla reddedilir. Bir pozisyonu kapatmak için, satın aldığınız aynı token_id değerini satın.
sell = OrderArgs(token_id=yes_token, price=to_tick(0.62, tick), size=100, side="SELL")
resp = client.post_order(client.create_order(sell), OrderType.GTC)Emir parametrelerine hızlı bakış
| Field | Meaning | Notes |
|---|---|---|
token_id | İşlem yaptığınız sonuç | condition_id değil; bkz. Bölüm 5 |
side | BUY veya SELL | BUY için USDC; SELL için pay gerekir |
price | 0.001-0.999 | Tik boyutunun katı olmalıdır |
size | Pay sayısı | Minimum emir değeri yaklaşık 1 USD; maliyet = price x size |
| emir türü | GTC / GTD / FOK / FAK | post_order(...) içine aktarılır |
Hepsini birleştirelim: ilk API işleminiz (çalıştırılabilir tek betik)
Uçtan uca tüm akış budur: bağlanın, likit bir piyasa bulun, emir defterini okuyun, fiyatı tik boyutuna hizalayın, küçük bir gerçek emir verin ve ardından iptal edin. İki gizli bilginizi girip çalıştırın. İlk çalıştırmanızda çok küçük bir büyüklükle (birkaç dolar) başlayın.
import os, json, requests
from dotenv import load_dotenv
from py_clob_client.client import ClobClient
from py_clob_client.constants import POLYGON
from py_clob_client.clob_types import OrderArgs, OrderType
load_dotenv()
# 1) Connect (signing key in your EOA, funds in your proxy/funder)
client = ClobClient(
"https://clob.polymarket.com",
key=os.environ["POLY_PRIVATE_KEY"],
chain_id=POLYGON, # 137
signature_type=1, # 1 = email/Magic proxy, 2 = browser-wallet proxy
funder=os.environ["POLY_FUNDER"],
)
client.set_api_creds(client.create_or_derive_api_creds()) # cache these after first run
# 2) Find the most-traded open market (Gamma, no auth)
m = requests.get(
"https://gamma-api.polymarket.com/markets",
params={"active": "true", "closed": "false", "order": "volume24hr",
"ascending": "false", "limit": 1}, timeout=10,
).json()[0]
token_id = json.loads(m["clobTokenIds"])[0] # index 0 = first outcome (read the label!)
print("Trading:", m["question"])
# 3) Read the book + the tick size
tick = float(client.get_tick_size(token_id))
book = client.get_order_book(token_id)
best_ask = float(book.asks[0].price)
print("best ask", best_ask, "| tick", tick)
# 4) Place a small BUY at the ask (tiny size to start)
price = round(round(best_ask / tick) * tick, 4) # snap to tick
order = OrderArgs(token_id=token_id, price=price, size=5, side="BUY") # 5 shares
resp = client.post_order(client.create_order(order), OrderType.GTC)
print(resp) # {'success': True, 'orderID': '0x...', ...}
# 5) Cancel it (clean up)
# client.cancel(order_id=resp["orderID"])Emir türleri
| Type | Code | Behaviour | When to use |
|---|---|---|---|
| İptal Edilene Kadar Geçerli | GTC | Gerçekleşene veya siz iptal edene kadar emir defterinde kalır | Varsayılan. Çoğu piyasa yapıcılık ve limit stratejisi. |
| Belirli Tarihe Kadar Geçerli | GTD | Belirtilen zaman damgasında otomatik olarak iptal edilir | Olay odaklı kullanım: "Fed açıklamasından 5 dakika önce iptal et" |
| Tamamı Gerçekleşsin veya İptal | FOK | Tüm büyüklük hemen gerçekleşmelidir; aksi halde tamamen iptal edilir | Kısmi gerçekleşmenin işlemi bozacağı arbitraj bacakları |
| Gerçekleşeni Al, Kalanı İptal Et | FAK | Limit fiyattan gerçekleşebilen kısmı gerçekleştirir, kalanı iptal eder | Agresif likidite alma; fiyat üst sınırı olan bir piyasa emri gibi davranır |
İptal etme
# Single order
client.cancel(order_id="0xabc...")
# Cancel all orders on a specific market
client.cancel_market_orders(market=market['conditionId'])
# Nuclear option: cancel everything
client.cancel_all()Bölüm 8: WebSocket Akışı
Gamma’yı her saniye sorgulamak verimsizdir ve hız sınırlarına hızla takılırsınız. WebSocket akışı, gerçek zamanlı emir defteri ve işlem güncellemelerini saniyenin altında gecikmeyle iletir.
import json, websocket
WS_URL = "wss://ws-subscriptions-clob.polymarket.com/ws/market"
def on_open(ws):
ws.send(json.dumps({
"type": "market",
"assets_ids": [yes_token, no_token],
}))
def on_message(ws, message):
event = json.loads(message)
if event.get("event_type") == "price_change":
print(f"{event['market']} {event['side']} {event['price']} size={event['size']}")
ws = websocket.WebSocketApp(
WS_URL,
on_open=on_open,
on_message=on_message,
)
ws.run_forever(ping_interval=20)İki akış vardır. /market akışı herkese açık emir defterini ve işlemleri taşır. /user akışı ise kendi emir ve gerçekleşme olaylarınızı taşır (kimlik doğrulamalı). Üretim botları ikisine de bağlanır, bağlantı koparsa otomatik olarak yeniden bağlanır ve mevcut emir defteri için WebSocket’i doğruluk kaynağı olarak kabul eder.
Bölüm 9: Hız Sınırları ve Backoff
| Endpoint class | Limit | Burst |
|---|---|---|
| Emir verme (CLOB) | API anahtarı başına yaklaşık 60 / dakika | yaklaşık 10 / saniye |
| Emir iptali | yaklaşık 120 / dakika | yaklaşık 20 / saniye |
| Piyasa verisi okuma (CLOB book) | yaklaşık 300 / dakika | daha yüksek, değişken |
| Gamma API | Cömert; 429 yanıtlarına uyun | - |
| WebSocket mesajları | Gelen yönde pratik bir sınır yok | - |
HTTP 429 ile karşılaştığınızda sunucu bir Retry-After başlığı döndürür. Jitter ile üstel backoff kullanın:
import random, time
def post_with_backoff(fn, *args, max_retries=6):
for attempt in range(max_retries):
try:
return fn(*args)
except Exception as e:
if "429" in str(e):
sleep = (2 ** attempt) + random.random()
time.sleep(min(sleep, 30))
continue
raise
raise RuntimeError("Too many retries")Bölüm 10: Referans Bot Mimarisi
Her güvenilir Polymarket botu aynı altı bileşene sahiptir. Her birini ayrı bir modül olarak oluşturun ve aralarındaki bağımlılığı düşük tutun.
| Component | Responsibility | APIs used |
|---|---|---|
| Tarayıcı | Zamanlanmış görev: ölçütlerinize uyan piyasaları çekin (etiketler, hacim, vadeye kalan gün) | Gamma |
| Fiyat motoru | WebSocket üzerinden gerçek zamanlı yerel emir defterlerini güncel tutun | CLOB WS |
| Sinyal üretici | Saf fonksiyon: defter durumu + meta veri → hedef pozisyon | - (in-memory) |
| Emir yöneticisi | Mevcut emirleri hedefle karşılaştırın, minimum sayıda emir verin/iptal edin | CLOB REST |
| Risk yöneticisi | Piyasa başına limitleri, günlük zarar limitlerini ve devre kesicileri uygulayın | - (in-memory + DB) |
| Günlükleyici ve hesap defteri | Her kararı, gerçekleşmeyi ve iptali kalıcı olarak kaydedin. Vergi raporlarını ve hata ayıklamayı besler. | SQLite / Postgres |
Bölüm 11: Yaygın Hata Modları
- Tick dışı fiyat reddi - fiyat, piyasanın
minimum_tick_sizedeğerinin tam katı olmalıdır. İmzalamadan önce/tick-size?token_id=üzerinden alın ve yuvarlayın; aksi halde emir reddedilir. - 404 "No orderbook exists" - kapalı/sonuçlanmış bir token üzerinde
/book,/priceveya/midpointsorguladınız. Canlı defteri olan token’ları bulmak için/sampling-marketskullanın. - Eski WebSocket verisi - Her varlık için son mesaj zamanını izleyin; aktif bir piyasada >30s boyunca güncelleme gelmezse REST yenilemeyi zorunlu kılın.
- Nonce çakışmaları - py-clob-client emir nonce değerlerini sizin için yönetir; ancak kendi imzalayıcınızı yazıyorsanız her emirde nonce değerini artırın.
- Yetersiz bakiye - Emir vermeden önce her zaman USDC bakiyesini kontrol edin; defter emrinizi gösterebilir, ancak eşleştirme bunu reddeder.
- Piyasa duraklatılmış veya sonuçlanıyor - İşlem yapmadan önce
market.active && !market.closedkoşulunu kontrol edin. Sonuçlanma anlarında Gamma güncellemeleri CLOB’nin birkaç saniye gerisinde kalır. - NegRisk adaptör uyuşmazlığı - Çok sonuçlu piyasalar ayrı bir NegRisk adaptörü üzerinden yönlendirilir. SDK bunu yönetir, ancak emrinizin doğru işlem yerine gittiğini doğrulayın.
Bölüm 12: API Üzerinden Likidite Ödülleri
Polymarket, genel likidite ödüllerinde ayda yaklaşık 5 milyon ABD doları ve spora özel ödüllerde ayda 5 milyon ABD dolarından fazla dağıtır (bkz. Likidite Ödülleri). Bunun büyük kısmı API ile çalışan piyasa yapıcılara gider. Bu kişiler binlerce piyasada dar spread’li çift taraflı kotasyonlar tutar.
Ödül formülü; büyüklük ve defterde kalma süresiyle birlikte orta fiyata yakın emirleri destekler. En basit piyasa yapıcılık döngüsü şöyledir:
- Hedef piyasanın emir defterini okuyun
- Adil bir orta fiyat hesaplayın (ör. her iki tarafta ilk 3 seviyenin VWAP’i)
mid − spread_target/2seviyesinde alış vemid + spread_target/2seviyesinde satış kotasyonu girin- Her WebSocket güncellemesinde kotasyonunuz hedeften bir tick’ten fazla saparsa yeniden fiyatlayın
- Defter sığlaşırsa veya önemli haber çıkarsa iptal edin ve çıkın
Bölüm 13: Üretime Geçiş
- Barındırma: Avrupa veya US-East bölgesinde ayda 6 ABD doları tutarında bir VPS (Hetzner, DigitalOcean) çoğu bot için yeterlidir. 10 ms altı gecikmeye ihtiyacınız varsa Polygon RPC ile aynı konuma yerleştirin.
- RPC: güvenilir Polygon RPC için Alchemy, Infura veya QuickNode kullanın. Dakikada yüzlerce emir göndermediğiniz sürece ücretsiz katmanlar yeterlidir.
- İzleme: metrikler için Prometheus + Grafana; uyarılar için bir Telegram botu kullanın. Gönderdiğiniz her emir kimliğini ve aldığınız her gerçekleşmeyi günlüğe yazın.
- Yedekler: durumu her dakika kalıcı olarak kaydedin. VPS bir gerçekleşmenin ortasında çökerse elle mutabakat yapmak yerine saniyeler içinde devam edebilmelisiniz.
- Vergi: günlükleyiciniz aynı zamanda denetim kaydınızdır - bkz. Vergi Rehberi.
Bölüm 14 - Polymarket API İçin Doğrulanmış Profesyonel İpuçları
Durum → Eylem Kısa Başvuru Tablosu
| Situation | Action | Why |
|---|---|---|
| İlk çağrıda 401 "invalid api key" | signature_type değerinin cüzdan kaynağıyla eşleştiğini ve funder değerinin proxy adresi olduğunu kontrol et | Tip 1 ile 2 uyumsuzluğu 401 hatalarının %80'ini oluşturur; kalanı EOA'nın funder olarak kullanılmasıdır |
| Emirler "insufficient balance" ile reddediliyor | Her emirden önce /balance-allowance sorgula ve yerelde rezerv ayır | CLOB, emri gönderdiğin anda teminatı ayırır; eşzamanlı iki emir aynı bakiyeyi iki kez rezerve edebilir |
| /order endpoint üzerinde 429 hız sınırı | Jitter ile geri çekil: 2^attempt + random(), üst sınır 30 sn | Cloudflare reddetmek yerine hız sınırlar; basit yeniden deneme yaklaşımı birikmiş yükü artırır |
| WebSocket işlem ortasında koptu | REST üzerinden emir defteri snapshot'ı al, yerel durumu uzlaştır, ardından yeniden abone ol | Aradaki deltas kaybolur; snapshot fiyat kademelerini yeniden senkronize eder |
| Emir verildi ancak fill onayı yok | 5 sn içinde /data/order/{id} sorgula; beklemedeyse bekle, bulunamazsa emri yeniden gir | Nadir görülür ama toparlanabilir; varsayılan yaklaşım "önce durumu kontrol et, sonra aksiyon al" olmalıdır |
| Aktif kotasyon varken piyasa sonuçlandı | Sonuçlanma event'inde ilgili conditionId üzerindeki tüm açık emirleri iptal et | Adaptörün uç durumları tetiklenirse sonuçlanma sonrası emirler zombi gerçekleşmeler olarak kalabilir |
| Market-making bot çalıştırma | Orta fiyatın 2 sent içinde, 100+ pay büyüklüğüyle kotasyon ver | Ödül formülü darlık + boyut + defterde kalma süresini ağırlıklandırır; dar + büyük + kalıcı olan kazanır |
| Çok sonuçlu piyasada arbitraj botu çalıştırma | Her bacak için GTC değil FOK kullan | A bacağında kısmi gerçekleşme ve B bacağında tam gerçekleşme = hedge edilmemiş pozisyon ve anlık zarar |
| İlk kez bot geliştirme | Önce tarayıcıyı, sonra fiyat motorunu, sonra sinyali kur; asla sinyalden başlama | Temiz bir emir defteri durumu olmadan sinyaller korelasyon tuzağıdır; önce veri hatlarını çalışır hale getir |
| Production bot 03.00'te çöktü | systemd otomatik yeniden başlatma + Telegram uyarısı + kalıcı durum kullan | Gözetimsiz çalışan her bot çöker; asıl soru sorunsuz yeniden başlayıp başlamadığıdır |
Sırada ne var?
- Araçlar ve Kaynaklar - API'yi tamamlayan üçüncü taraf panoları, analiz araçları ve veri akışları
- İleri Düzey Stratejiler - botlara uygun çok bacaklı arbitraj ve opsiyon benzeri yapılar
- Likidite Ödülleri - piyasa yapıcılık iadeleri kazanmak için kesin formüller
- Emir Defteri Rehberi - emir defteriyle entegrasyon kodlamadan önce defteri okumaya yönelik daha derin bir bakış
- Sözlük - bu rehberdeki her terimin sade dille tanımı











