API · حوالہ
Polymarket مارکیٹ ڈیٹا پڑھنے کے لیے کسی key کی ضرورت نہیں۔ آرڈر لگانے یا منسوخ کرنے کے لیے دو پرتوں کی تصدیق درکار ہے: API credentials بنانے کے لیے ایک L1 والٹ دستخط (EIP-712)، اور ہر تصدیق شدہ درخواست پر ایک L2 HMAC دستخط۔ یہ صفحہ دونوں کا احاطہ کرتا ہے، نیز چار signature types اور funder address - وہ دو چیزیں جو زیادہ تر auth خرابیوں کا سبب بنتی ہیں۔
- پڑھنا (Gamma، ڈیٹا، عوامی CLOB) - کوئی auth نہیں۔
- L1 - آپ کا والٹ ایک EIP-712 پیغام (ClobAuth domain version
"1") پر دستخط کرتا ہے تاکہ API credentials بنائے یا اخذ کرے۔ - L2 - ہر آرڈر درخواست
api_key/api_secret/api_passphraseکے HMAC سے دستخط ہوتی ہے۔
اپنے API credentials بنائیں یا اخذ کریں (L1)
آپ کا والٹ ایک بار دستخط کر کے API credentials کا ایک deterministic سیٹ بناتا (یا دوبارہ اخذ کرتا) ہے۔ V2 SDK
استعمال کریں - V1 py-clob-client (0.34.x) آرکائیو شدہ اور ناکارہ ہے۔
from py_clob_client_v2 import ClobClient # pip install py-clob-client-v2
# L1: your wallet signs to derive API credentials
client = ClobClient(host="https://clob.polymarket.com", chain_id=137, key=PRIVATE_KEY)
creds = client.create_or_derive_api_key() # api_key, api_secret, api_passphrase
# L1 + L2: rebuild the client WITH creds for authenticated calls (no set_api_creds in v2)
client = ClobClient(host="https://clob.polymarket.com", chain_id=137, key=PRIVATE_KEY, creds=creds)
// polymarket_client_sdk_v2 - official Rust client (repo rs-clob-client-v2)
use polymarket_client_sdk_v2::clob::{Client, Config};
use polymarket_client_sdk_v2::clob::types::SignatureType;
let client = Client::new("https://clob.polymarket.com", Config::default())?
.authentication_builder(&signer)
.funder(deposit_wallet) // deposit wallets work in Rust today
.signature_type(SignatureType::Poly1271)
.authenticate().await?;
ان تینوں قدروں کو رازوں (env vars) کے طور پر محفوظ کریں۔ مارکیٹ ڈیٹا پڑھنے کے لیے ان کی کبھی ضرورت نہیں۔
Signature types (0-3)
signature type ایکسچینج کو بتاتی ہے کہ آپ کے آرڈر کا دستخط اُس والٹ سے کیسے جُڑتا ہے جو فنڈز رکھتا ہے (یعنی funder)۔ وہی چُنیں جو آپ کے اکاؤنٹ کے بننے کے طریقے سے میل کھاتا ہو۔
| Type | Name | کب |
|---|---|---|
| 0 | EOA | ایک سادہ والٹ (مثلاً MetaMask) جو دستخط بھی کرتا ہے اور فنڈز بھی رکھتا ہے۔ |
| 1 | POLY_PROXY | Email / Magic.link سائن اپ - ایک proxy والٹ فنڈز رکھتا ہے؛ آپ کی key اس کی جانب سے دستخط کرتی ہے۔ |
| 2 | POLY_GNOSIS_SAFE | ایک Gnosis Safe فنڈز رکھتا ہے؛ ایک signer key اس کے لیے دستخط کرتی ہے۔ |
| 3 | POLY_1271 | ایک deposit والٹ (EIP-1271 smart-contract دستخط)۔ |
جب signing key فنڈ رکھنے والے address سے مختلف ہو (types 1-3)، تو آپ کو private key اور
funder address دونوں دینے ضروری ہیں۔
py-clob-client-v2) اور TypeScript (@polymarket/clob-client-v2) clients میں ایک
کھلا bug ہے: L1 auth، API key کو deposit والٹ کے بجائے آپ کے EOA سے باندھ دیتا ہے، اِس لیے آرڈر
مسترد ہو جاتے ہیں ("maker address not allowed, please use the deposit wallet flow")۔ سرکاری
Rust client، EIP-1271 deposit-wallet دستخط کو درست طریقے سے سنبھالتا ہے۔ Rust کے بغیر عارضی حل: ایک
email/Magic اکاؤنٹ استعمال کریں اور signature_type = POLY_PROXY (type 1) سے دستخط کریں۔ fix کے لیے
Polymarket issues #70 (Python) / #65 (TS) دوبارہ دیکھتے رہیں۔درخواستوں پر دستخط (L2)
ہر تصدیق شدہ درخواست ایک HMAC دستخط لے کر جاتی ہے جو آپ کے API secret کے ساتھ درخواست کے method، path، body اور ایک timestamp سے بنتا ہے۔ V2 SDK آپ کے لیے یہ ہیڈر بناتا ہے۔ دو چیزیں درست رکھیں:
- گھڑی - ~60 سیکنڈ سے زیادہ فرق آپ کے دستخط کو مسترد کروا دیتا ہے۔ NTP کے ذریعے sync کریں۔
- Domains - L2/ClobAuth EIP-712 domain version
"1"رہتی ہے؛ صرف V2 Exchange (آرڈر) domain"2"پر منتقل ہوا۔ ایک V1 client غلط آرڈر domain پر دستخط کر کے ناکام ہوتا ہے - دیکھیں order_version_mismatch۔
Key کی حفاظت
- private keys یا API secrets کو کبھی hardcode نہ کریں - environment variables استعمال کریں؛ انہیں کبھی commit نہ کریں۔
- جہاں ممکن ہو، اپنی signing key اور funder address کو روزمرہ کے والٹ سے الگ رکھیں۔
- صرف پڑھنے والے بوٹس کو کسی credentials کی ضرورت نہیں - وہیں سے شروع کریں۔
اگلا: CLOB API: ایک آرڈر لگائیں · auth خرابی ٹھیک کریں · v1 → v2 منتقلی۔



