API · रेफरेंस

पॉलीमार्केट मार्केट डेटा पढ़ने के लिए किसी key की जरूरत नहीं है। ऑर्डर लगाने या कैंसल करने के लिए दो लेयर की ऑथ चाहिए: अपने API credentials बनाने के लिए एक L1 वॉलेट सिग्नेचर (EIP-712), और हर ऑथेंटिकेटेड रिक्वेस्ट पर एक L2 HMAC सिग्नेचर। यह पेज दोनों को कवर करता है, साथ ही चार सिग्नेचर टाइप और funder एड्रेस को भी - यही दो चीजें ज्यादातर ऑथ त्रुटियों की वजह बनती हैं।

एक नजर में
  • रीड (Gamma, Data, पब्लिक CLOB) - कोई ऑथ नहीं।
  • L1 - आपका वॉलेट एक EIP-712 मैसेज (ClobAuth डोमेन वर्जन "1") पर सिग्नेचर करके API credentials बनाता या डिराइव करता है।
  • L2 - हर ऑर्डर रिक्वेस्ट api_key / api_secret / api_passphrase के HMAC से सिग्न होती है।

अपने API credentials बनाएं या डिराइव करें (L1)

आपका वॉलेट एक बार सिग्नेचर करके API credentials का एक डिटरमिनिस्टिक सेट मिंट (या फिर से डिराइव) करता है। 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?;

इन तीनों वैल्यू को secrets (env vars) की तरह स्टोर करें। मार्केट डेटा पढ़ने के लिए इनकी कभी जरूरत नहीं पड़ती।

सिग्नेचर टाइप (0-3)

सिग्नेचर टाइप एक्सचेंज को बताता है कि आपका ऑर्डर सिग्नेचर उस वॉलेट से कैसे मैप होता है जो फंड रखता है (यानी funder)। वही चुनें जो आपके अकाउंट के बनने के तरीके से मेल खाता हो।

टाइपनामकब
0EOAएक सादा वॉलेट (जैसे MetaMask) जो सिग्नेचर भी करता है और फंड भी रखता है।
1POLY_PROXYEmail / Magic.link साइनअप - एक प्रॉक्सी वॉलेट फंड रखता है; आपकी key उसकी ओर से सिग्नेचर करती है।
2POLY_GNOSIS_SAFEएक Gnosis Safe फंड रखता है; एक signer key उसके लिए सिग्नेचर करती है।
3POLY_1271एक डिपॉजिट वॉलेट (EIP-1271 स्मार्ट-कॉन्ट्रैक्ट सिग्नेचर)।

जब साइनिंग key फंड रखने वाले एड्रेस से अलग होती है (टाइप 1-3), तो आपको दोनों private key और funder एड्रेस देने होंगे।

डिपॉजिट वॉलेट (टाइप 3) - आज Rust इस्तेमाल करें। जून 2026 तक Python (py-clob-client-v2) और TypeScript (@polymarket/clob-client-v2) clients में एक ओपन बग है: L1 ऑथ API key को डिपॉजिट वॉलेट के बजाय आपके EOA से बांध देती है, जिससे ऑर्डर रिजेक्ट हो जाते हैं ("maker address not allowed, please use the deposit wallet flow")। ऑफिशियल Rust client EIP-1271 डिपॉजिट-वॉलेट सिग्निंग को सही तरीके से संभालता है। Rust के बिना वर्कअराउंड: एक email/Magic अकाउंट इस्तेमाल करें और signature_type = POLY_PROXY (टाइप 1) से सिग्नेचर करें। फिक्स के लिए पॉलीमार्केट issues #70 (Python) / #65 (TS) फिर से जांचें।

रिक्वेस्ट पर सिग्नेचर (L2)

हर ऑथेंटिकेटेड रिक्वेस्ट में एक HMAC सिग्नेचर होता है जो आपके API secret के साथ रिक्वेस्ट के method, path, body और एक timestamp से बनता है। V2 SDK ये हेडर आपके लिए बना देता है। दो चीजें सही रखें:

  • क्लॉक - करीब 60 सेकंड से ज्यादा का ड्रिफ्ट आपके सिग्नेचर को रिजेक्ट करवा देता है। NTP से सिंक करें।
  • डोमेन - L2/ClobAuth EIP-712 डोमेन वर्जन "1" ही रहता है; सिर्फ V2 Exchange (ऑर्डर) डोमेन "2" पर गया है। एक V1 client गलत ऑर्डर डोमेन पर सिग्नेचर करता है और फेल हो जाता है - देखें order_version_mismatch।

Key सुरक्षा

  • private keys या API secrets को कभी हार्डकोड न करें - environment variables इस्तेमाल करें; इन्हें कभी कमिट न करें।
  • जहां तक हो सके अपनी साइनिंग key और funder एड्रेस को अपने रोजमर्रा के वॉलेट से अलग रखें।
  • रीड-ओनली bots को किसी credentials की जरूरत नहीं होती - वहीं से शुरू करें।

आगे: CLOB API: ऑर्डर लगाएं · ऑथ त्रुटि ठीक करें · v1 → v2 माइग्रेट करें।