API · עיון

קריאת נתוני שוק בפולימרקט אינה צריכה מפתח. ביצוע או ביטול פקודות צריך שתי שכבות אימות: חתימת ארנק L1 (EIP-712) כדי ליצור את פרטי ההזדהות של ה-API, וחתימת L2 מסוג HMAC בכל בקשה מאומתת. העמוד הזה מכסה את שתיהן, בתוספת ארבעת סוגי החתימה וכתובת ה-funder - שני הדברים שגורמים לרוב שגיאות האימות.

במבט חטוף
  • קריאה (Gamma, Data, CLOB ציבורי) - ללא אימות.
  • L1 - הארנק שלכם חותם על הודעת EIP-712 (דומיין ClobAuth גרסה "1") כדי ליצור או לגזור פרטי הזדהות של API.
  • L2 - כל בקשת פקודה נחתמת ב-HMAC של api_key / api_secret / api_passphrase.

צרו או גזרו את פרטי ההזדהות של ה-API (L1)

הארנק שלכם חותם פעם אחת כדי לטבוע (או לגזור מחדש) קבוצה דטרמיניסטית של פרטי הזדהות ל-API. השתמשו ב-SDK של V2 - ה-py-clob-client של V1 (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?;

שמרו את שלושת הערכים כסודות (משתני סביבה). קריאת נתוני שוק לעולם אינה צריכה אותם.

סוגי חתימה (0-3)

סוג החתימה אומר לבורסה איך חתימת הפקודה שלכם ממופה לארנק שמחזיק את הכספים (ה-funder). בחרו את זה שתואם לאופן שבו נוצר החשבון שלכם.

סוגשםמתי
0EOAארנק רגיל (למשל MetaMask) שגם חותם וגם מחזיק כספים.
1POLY_PROXYהרשמה באימייל / Magic.link - ארנק פרוקסי מחזיק כספים; המפתח שלכם חותם בשמו.
2POLY_GNOSIS_SAFEGnosis Safe מחזיק כספים; מפתח חותם חותם עבורו.
3POLY_1271ארנק הפקדה (חתימת חוזה-חכם EIP-1271).

כאשר המפתח החותם שונה מהכתובת שמחזיקה את הכספים (סוגים 1-3), עליכם להעביר גם את המפתח הפרטי וגם את כתובת ה-funder.

ארנקי הפקדה (סוג 3) - השתמשו ב-Rust כיום. נכון ליוני 2026 ללקוחות ה-Python (py-clob-client-v2) וה-TypeScript (@polymarket/clob-client-v2) יש באג פתוח: אימות ה-L1 כובל את מפתח ה-API ל-EOA שלכם במקום לארנק ההפקדה, ולכן פקודות נדחות ("maker address not allowed, please use the deposit wallet flow"). לקוח ה-Rust הרשמי מטפל נכון בחתימת ארנק הפקדה מסוג EIP-1271. פתרון עוקף שאינו Rust: השתמשו בחשבון אימייל/Magic וחתמו עם signature_type = POLY_PROXY (סוג 1). בדקו מחדש את issues ‏#70 (Python) / ‏#65 (TS) של פולימרקט לתיקון.

חתימת בקשות (L2)

כל בקשה מאומתת נושאת חתימת HMAC הבנויה מסוד ה-API שלכם בתוספת שיטת הבקשה, הנתיב, הגוף וחותמת זמן. ה-SDK של V2 בונה עבורכם את הכותרות האלה. שני דברים שיש לשמור נכונים:

  • שעון - סטייה של יותר מ-60 שניות בערך גורמת לדחיית החתימה. סנכרנו דרך NTP.
  • דומיינים - דומיין ה-EIP-712 של L2/ClobAuth נשאר גרסה "1"; רק דומיין ה-Exchange (הפקודה) של V2 עבר ל-"2". לקוח V1 חותם על דומיין הפקודה השגוי ונכשל - ראו order_version_mismatch.

בטיחות מפתחות

  • לעולם אל תטמיעו בקוד מפתחות פרטיים או סודות API - השתמשו במשתני סביבה; לעולם אל תבצעו להם commit.
  • שמרו את המפתח החותם וכתובת ה-funder נפרדים מהארנק היומיומי שלכם היכן שאפשר.
  • בוטים לקריאה-בלבד אינם צריכים פרטי הזדהות כלל - התחילו שם.

הבא: CLOB API: ביצוע פקודה · תיקון שגיאת אימות · מעבר v1 ← v2.