جميع المقالات
مرجع APIPolymarket APIتصحيح الأخطاءCLOB

أخطاء Polymarket API: شرح كل رمز

رسائل الأخطاء في Polymarket مقتضبة، والتي تعطل بوتك في الثالثة فجرًا هي عادةً تلك الغائبة عن الوثائق تمامًا. إليك المرجع الكامل — الأخطاء الموثقة، وغير الموثقة، وما يجب فعله فعلًا حيال كل منها.

12 دقيقة للقراءة

يعود كل خطأ في Polymarket CLOB API بالشكل نفسه — كائن JSON بحقل واحد error — وهذا اتساق جدير بالإعجاب وعديم الفائدة تمامًا حين تحاول معرفة سبب اختفاء أمرك للتو.

{
  "error": "<message>"
}

تشرح هذه الصفحة تلك الأخطاء. تغطي أخطاء CLOB الموثقة، ورموز الحالة وأسبابها الحقيقية، و— الجزء الذي لن تجده في الوثائق الرسمية — الأخطاء التي يواجهها الناس فعلًا في بيئة الإنتاج ولم تدوّنها Polymarket قط.

لكل رسالة موثقة أيضًا صفحتها الخاصة مع الأسباب والحكم بشأن إعادة المحاولة، مدرجة في فهرس أخطاء Polymarket.

مرجع سريع لرموز الحالة

الحالةالمعنىالأسباب الشائعة
400طلب غير صالح (Bad Request)معاملات غير صالحة، أو حمولة مشوّهة، أو مخالفة لقواعد العمل
401غير مصرّح (Unauthorized)مفتاح API مفقود أو غير صالح، أو توقيع HMAC خاطئ، أو طابع زمني منتهٍ
404غير موجود (Not Found)السوق غير موجود، أو الأمر غير موجود، أو معرّف التوكن غير معروف
425مبكر جدًا (Too Early)محرك المطابقة يُعاد تشغيله — أعد المحاولة مع التراجع
429طلبات كثيرة جدًا (Too Many Requests)تم تجاوز حد المعدل — تراجع أُسّيًا
500خطأ داخلي في الخادم (Internal Server Error)خطأ غير متوقع في الخادم — أعد المحاولة مع التراجع
503الخدمة غير متاحة (Service Unavailable)المنصة متوقفة مؤقتًا، أو محظور بسبب وضع الإلغاء فقط / النشر فقط

تجاوز رمز الحالة الذي سيضللك

تعيد CLOB API كتابة رموز الحالة بناءً على محتوى الرسالة. أي رسالة خطأ تحتوي على "not found" تُرجع 404، وأي رسالة تحتوي على "unauthorized" تُرجع 401، وأي رسالة تحتوي على "context canceled" تُرجع 400 — بغض النظر عن رمز الحالة الأصلي. إذا بدا رمز الحالة متناقضًا مع الرسالة، فهذا هو السبب. اجعل معالجة الأخطاء تتفرع حسب نص الرسالة، لا حسب الرقم.

401 — أخطاء المصادقة

Unauthorized/Invalid api key

أكثر أخطاء Polymarket بحثًا. مفتاح API الخاص بك مفقود أو منتهي الصلاحية أو غير صالح. عمليًا، نادرًا ما يكون المفتاح سيئًا حقًا — بل يكون السبب واحدًا مما يلي:

  1. ترسل جزءًا فقط من مجموعة بيانات الاعتماد. تحتاج مصادقة L2 في Polymarket إلى المفتاح والسر وعبارة المرور معًا. من حالات الفشل الشائعة ملء POLY_API_KEY وPOLY_PASSPHRASE مع ترك السر فارغًا — فيرسل العميل طلبًا سليم الشكل لكنه غير قابل للتوقيع.
  2. انحرفت ساعة نظامك. يتضمن التوقيع طابعًا زمنيًا، والساعة المنحرفة بأكثر من بضع ثوانٍ تنتج توقيعًا يرفضه الخادم بوصفه غير صالح. هذا هو السبب الذي يكتشفه الناس أخيرًا، وهو شائع بشكل محبط على الأجهزة الافتراضية والحاويات.
  3. اشتققت المفتاح لمحفظة غير التي تتداول منها. المفاتيح مرتبطة بعنوان الموقّع الذي أنشأها.
  4. تستدعي نقطة نهاية مصادَقة بترويسات L1 حيث يُتوقع L2، أو العكس.

Invalid L1 Request headers

ترويسات مصادقة L1 الخاصة بك — مجموعة توقيع EIP-712 — مشوّهة، أو أن التوقيع لا يطابق العنوان الذي تدّعي أنه لك. تحقّق من أنك توقّع بالمفتاح الخاص نفسه للعنوان الموجود في الترويسة، وأن فاصل النطاق يطابق السلسلة التي تعمل عليها (Polygon، معرّف السلسلة 137). التوقيع الصالح لمعرّف سلسلة خاطئ يبقى توقيعًا صالحًا — لكن ليس لهذا الخادم.

Could not create api key / Could not derive api key!

هذان هما الخطآن وراء عبارة البحث "polymarket unable to generate api credentials". يُرجع كلاهما من نقاط نهاية المصادقة عند فشل إنشاء المفتاح أو اشتقاقه. الخطأ Could not derive api key! على GET /auth/derive-api-key يعني عادةً أنه لا يوجد مفتاح بعد لذلك الموقّع — فالاشتقاق يُرجع مفتاحًا موجودًا ولا ينشئ واحدًا. أنشئ المفتاح أولًا باستخدام POST /auth/api-key، ثم اشتقه في التشغيلات اللاحقة.

نمط الاشتقاق ثم الإنشاء

بدلًا من تخزين المفاتيح، تحاول معظم البوتات الإنتاجية derive أولًا وتلجأ إلى create إذا فشل. هذا متكافئ القوة عبر إعادات التشغيل ويتجنب تراكم مفاتيح يتيمة — فنقاط نهاية المصادقة محدودة بـ 100 طلب / 10 ثوانٍ، لذا لا تريد إنشاء مفتاح في كل إقلاع على أي حال.

400 — أخطاء رفض الأوامر

تُرجع هذه الأخطاء حين يجتاز الأمر التحقق على مستوى النقل لكنه يفشل في قواعد العمل. وتظهر في جسم استجابة POST /order وPOST /orders.

رسالة الخطأما تعنيه
the order signer address has to be the address of the API KEYالمفتاح الذي يوقّع الأمر ليس المفتاح الذي يقول الأمر إنه وقّعه. أنت تخلط بيانات الاعتماد — عادةً مفتاح قديم من محفظة سابقة.
the order owner has to be the owner of the API KEYعنوان maker في الأمر لا يطابق العنوان الذي ينتمي إليه مفتاح API.
order {id} is invalid. Price ({price}) breaks minimum tick size rule: {tick}سعرك ليس على شبكة التيك الخاصة بالسوق. استدعِ GET /tick-size وقرّب إليها — لا تفترض 0.01.
order {id} is invalid. Size ({size}) lower than the minimum: {min}حجم الأمر أقل من الحد الأدنى للسوق.
not enough balance / allowanceرصيد pUSD غير كافٍ، أو أنك لم تمنح عقد المنصة سماحية قط. وكلاهما مطلوب.
invalid post-only order: order crosses bookأمرك من نوع النشر فقط كان سيأخذ السيولة فورًا. أعد تسعيره ليبقى قائمًا في الدفتر.
order couldn't be fully filled. FOK orders are fully filled or killed.وجد أمر التنفيذ الكامل أو الإلغاء (FOK) سيولة غير كافية. يُرفض الأمر بأكمله.
no orders found to match with FAK order.لم يجد أمر التنفيذ الفوري ثم الإلغاء (FAK) أي مطابقة. مطلوب مطابقة واحدة على الأقل.
invalid expirationالطابع الزمني للانتهاء في الماضي أو مشوّه.
order {id} is invalid. Duplicated.أُرسل الأمر نفسه مرتين.
order canceled in the CTF exchange contractأُلغي الأمر على السلسلة.
'{address}' address bannedالعنوان محظور من التداول.
'{address}' address in closed only modeلا يُسمح للعنوان إلا بإغلاق المراكز القائمة.

حجم التيك خاص بكل سوق ويتغير

أكثر حالات رفض الأوامر الصامتة شيوعًا هي مخالفة حجم التيك. يختلف حجم التيك بين الأسواق وقد يضيق مع نضج السوق — فالسعر الذي كان صالحًا الأسبوع الماضي قد لا يكون صالحًا اليوم. اجلب GET /tick-size لكل سوق وقرّب إليه بدلًا من تثبيت شبكة في الشيفرة.

أوامر الدفعات تفشل بشكل مختلف

في POST /orders، تعود حالات فشل الأوامر الفردية داخل مصفوفة استجابة 200 بحقول errorMsg منفصلة — لا كخطأ على المستوى الأعلى. الرمز 200 لا يعني أن كل أمر في دفعتك قُبل. مرّ على المصفوفة وتحقق من كل عنصر.

425 — مبكر جدًا (Too Early)

رمز حالة غير مألوف يربك الناس لأنه نادر الاستخدام في بقية الويب. في Polymarket يعني أن محرك المطابقة يُعاد تشغيله. وصل طلبك خلال النافذة التي تعود فيها المنصة إلى العمل.

هذا الخطأ عابر حقًا وآمن لإعادة المحاولة حقًا — بل هو على الأرجح أنسب خطأ لإعادة المحاولة في المنصة. تراجع وحاول مجددًا؛ لا تعامله كفشل ولا تطلق تنبيهًا عند حدوثه مرة واحدة.

503 — المنصة في وضع مقيّد

يمكن لـ Polymarket وضع المنصة في أوضاع مقيّدة. هذه ليست أخطاء من جانبك، ولن تفيد أي إعادة لمحاولة الطلب نفسه حتى يُرفع الوضع.

الرسالةما لا يزال بإمكانك فعله
Trading is currently disabled. Check polymarket.com for updatesلا شيء. لا تُقبل أي أوامر، بما في ذلك الإلغاءات.
Trading is currently cancel-only. New orders are not accepted, but cancels are allowed.ألغِ الأوامر القائمة. لا يمكنك فتح أوامر جديدة.
post-only mode: only post-only orders and cancels are allowedألغِ، أو قدّم أوامر مع postOnly: true. أوامر أخذ السيولة تُرفض.

وضع النشر فقط هو الذي يجب التعامل معه بشكل صحيح، لأنه يخبرك بالضبط متى تعود. تتضمن الاستجابة code: "post_only_mode" وretry_after_seconds، ويُرسل التأخير نفسه في ترويسة Retry-After.

{
  "error": "post-only mode: only post-only orders and cancels are allowed",
  "code": "post_only_mode",
  "retry_after_seconds": 79
}

وضع الإلغاء فقط قد يحاصر بوت صناعة السوق

إذا كان مسار إيقاف بوتك يعيد التسعير قبل الإلغاء، فسيرفض وضع الإلغاء فقط إعادة التسعير وقد يدور بوتك في حلقة بدلًا من تصفية مراكزه. تعامل مع 503 بالإلغاء أولًا ثم قرّر بعد ذلك فقط ما إذا كنت ستعيد الدخول.

أخطاء غير موجودة في الوثائق

هنا يذهب معظم وقت تصحيح الأخطاء الحقيقي. الأخطاء التالية لا تظهر في مرجع رموز الأخطاء لدى Polymarket لأنها لا تنشأ من تطبيق CLOB أصلًا — بل تأتي من الحافة، أو الشبكة، أو مكتبة العميل لديك. معرفة الطبقة التي أنتجت الخطأ تخبرك أين تبحث.

"The server was unable to process your request" (تعذّر على الخادم معالجة طلبك)

أكثر أخطاء Polymarket بحثًا من بين غير الموجودة في الوثائق. هذه رسالة من طبقة الحافة لا خطأ من CLOB API — وهي ما تحصل عليه حين لا يصل الطلب إلى التطبيق أبدًا، أو لا يعود منه بشكل سليم. عمليًا، الأسباب المعتادة هي:

  • طلب مشوّه ترفضه الحافة قبل التوجيه — حمولة كبيرة جدًا، أو ترويسة خاطئة، أو طريقة HTTP غير صالحة للمسار.
  • فشل عابر في المنبع أثناء إعادة نشر الخدمة أو تحت الضغط.
  • تجاوز مستمر لحد المعدل. لأن Cloudflare تُبطئ بالإدراج في طابور بدلًا من الرفض، قد ينتهي الأمر بالعميل المتجاوز للحد بشدة إلى طلبات تنتهي مهلتها عند الحافة بدلًا من إرجاع 429 نظيف.

تعامل معه على أنه قابل لإعادة المحاولة مع التراجع، لكن إن كان مستمرًا لا عرضيًا، فتحقق من معدل طلباتك أولًا — راجع مرجع حدود المعدل — ثم من حجم حمولتك.

403 Forbidden

الرمز 403 من Polymarket ليس عادةً مشكلة مصادقة، وهذا ما يجعله مربكًا. إنه بشكل عام الحافة تحجب الطلب. المسببات الشائعة هي القيود الجغرافية على نقاط نهاية التداول، وتحدّي نطاقات IP لمراكز البيانات وشبكات VPN، والترويسات المفقودة أو غير الشبيهة بترويسات المتصفح في الطلبات التي تتوقع الحافة أن تأتي من عميل.

إذا ظهر 403 من جهازك الافتراضي السحابي فقط وليس من حاسوبك المحمول، فهي مشكلة سمعة عنوان IP، لا مشكلة شيفرة. وإذا ظهر على نقاط نهاية التداول دون نقاط نهاية بيانات الأسواق، فهو جغرافي.

أخطاء SSL وTLS والشهادات

عبارات البحث "polymarket ssl error" و"polymarket certificate error" و"polymarket https error" تتعلق دائمًا تقريبًا بجانب العميل. شهادات Polymarket سليمة؛ أما شيء ما بينك وبينها فليس كذلك. تحقّق بالترتيب من: حزمة CA قديمة (شائعة جدًا في صور Docker القديمة وبيئات Python المجمّدة)، ووكيل مؤسسي يفحص TLS ويستبدل الشهادة بشهادته، وساعة نظام منحرفة إلى حد يجعل الشهادات تبدو غير صالحة بعد أو منتهية.

# 1. Does TLS work at all, outside your app's HTTP client?
curl -sS -o /dev/null -w "%{http_code} %{ssl_verify_result}\n" \
  https://clob.polymarket.com/ok

# 2. Is your CA bundle current? (Python)
python3 -c "import certifi, os; print(certifi.where()); print(os.path.getmtime(certifi.where()))"

# 3. Is your clock right? Certificate validation depends on it.
date -u

"Service not ready" (الخدمة غير جاهزة)

رسالة من حالة بدء التشغيل: الخدمة تعمل بما يكفي للرد لكنها غير جاهزة للخدمة. عمليًا تعامل معها مثل 425 — تراجع وأعد المحاولة. يُفترض أن تزول خلال ثوانٍ، وليست شيئًا يمكنك إصلاحه من جانب العميل.

"Order manager not ready" (مدير الأوامر غير جاهز)

رسالة من حالة بدء تشغيل محرك المطابقة، وقريبة جدًا من 425 Too Early. الخدمة قابلة للوصول لكن طبقة إدارة الأوامر لم تنته من الإقلاع، لذا ستقبل اتصالك وترفض أمرك. إنها عابرة وآمنة لإعادة المحاولة مع التراجع — لكن تعامل معها كإشارة إلى التوقف عن الإرسال لبضع ثوانٍ بدلًا من الإلحاح، لأن إعادة التشغيل تعني عادةً أن الدفتر على وشك التغير تحتك.

إذا رأيتها باستمرار لا على شكل دفعات، فتحقق من حالة Polymarket قبل تصحيح شيفرتك — فلا يوجد ما يُصلح من جانب العميل.

"Couldn't get a quote" (تعذّر الحصول على تسعيرة)

يعني عادةً أنه لا توجد سيولة قائمة على الجانب الذي طلبت تسعيره، لا أن شيئًا معطّل. في أسواق Up/Down الضعيفة قرب الانتهاء يفرغ أحد الجانبين بانتظام — لا أحد يبيع Up بأي سعر حين يصبح Up مؤكدًا — لذا لا يُرجع طلب التسعير شيئًا. تُظهر بياناتنا أن هذا شائع: في عيّنة من أسواق BTC لمدة 5 دقائق، كان لدى 1,454 من 8,510 دفتر بيع فارغ على أحد الجانبين قبل 60 ثانية من الانتهاء.

تعامل معه على أنه "لا سوق" لا كخطأ: تخطَّ الصفقة، ولا تُعِد المحاولة في حلقة ضيقة. إذا أردت معرفة مدى تكرار ذلك في سلسلة تتداولها، فإن صفحات بيانات الأسواق تعرض السيولة حسب الإطار الزمني.

استثناءات مكتبات العميل

أخطاء مثل PolyApiException[status_code=None, error_message=request exception!] تأتي من عميل Python، لا من الخادم. القيمة status_code=None هي الدليل: لم تُستقبل أي استجابة HTTP قط، لذا فهذا فشل على مستوى الاتصال — DNS، أو TLS، أو انتهاء مهلة، أو مقبس منقطع — يظهر كاستثناء من المكتبة. صحّحه كمشكلة شبكة، لا كمشكلة API. ينطبق المنطق نفسه على BuilderApiKeyCreds invalid authorization 401 في عميل relayer، والذي يعني أن بيانات اعتماد builder الممرَّرة إلى العميل لم تُقبل؛ أعد اشتقاقها بدلًا من إعادة استخدام مجموعة مخزّنة مؤقتًا.

سياسة إعادة محاولة تتعامل مع كل هذا

الخلاصة العملية أن أخطاء Polymarket تقع في ثلاث فئات، والخلط بينها هو ما يجعل البوتات هشة: أعد المحاولة دون تفكير، وأعد المحاولة بعد تأخير محدد، ولا تُعِد المحاولة أبدًا.

الفئةالرموز / الرسائلالإجراء
عابرة425، 500، Service not ready، أخطاء الاتصالأعد المحاولة مع تراجع أُسّي + تذبذب عشوائي
تجاوز حد المعدل429أعد المحاولة بعد Retry-After؛ وإن غابت، فتراجع مع تذبذب عشوائي
مقيّدة بوضع503 النشر فقطانتظر retry_after_seconds، ثم أعد المحاولة
مقيّدة بوضع503 الإلغاء فقط / معطّلتوقف عن فتح المراكز؛ ألغِ إن كان مسموحًا؛ استطلع ببطء
نهائية400 تحقق، 401، 404لا تُعِد المحاولة — أصلح الطلب أو بيانات الاعتماد
type Decision =
  | { retry: true; delayMs: number }
  | { retry: false; reason: string };

function classify(status: number, body: { error?: string; code?: string; retry_after_seconds?: number }, attempt: number): Decision {
  const msg = (body.error ?? "").toLowerCase();
  const backoff = Math.min(2 ** attempt * 250, 8000);
  const jittered = Math.random() * backoff;

  // Never retry — the request itself is wrong.
  if (status === 401) return { retry: false, reason: "auth: check key, secret, passphrase and clock drift" };
  if (status === 404) return { retry: false, reason: "not found" };
  if (status === 400) return { retry: false, reason: `validation: ${body.error}` };

  // Mode-restricted — the server tells you when to come back.
  if (status === 503 && body.code === "post_only_mode") {
    return { retry: true, delayMs: (body.retry_after_seconds ?? 60) * 1000 };
  }
  if (status === 503) return { retry: false, reason: "exchange paused or cancel-only" };

  // Transient — safe to retry.
  if (status === 425 || status === 429 || status >= 500) return { retry: true, delayMs: jittered };
  if (msg.includes("service not ready")) return { retry: true, delayMs: jittered };

  return { retry: false, reason: `unhandled status ${status}` };
}

سجّل الرسالة، ونبّه حسب الفئة

التنبيه حسب نصوص الأخطاء الخام ينتج ضوضاء، لأن رسائل Polymarket تتضمن معرّفات الأوامر والأسعار. نبّه حسب الفئة — ارتفاع مفاجئ في أخطاء 400 النهائية يعني أنك أطلقت خطأً برمجيًا؛ وارتفاع في 429 يعني أنك تحتاج إلى الإبطاء؛ وارتفاع في 425 يعني أن Polymarket تُعيد التشغيل وعليك ألا تفعل شيئًا على الإطلاق.

أخطاء لا يمكنك الخروج منها بالتصحيح

بعض الأشياء التي تبدو أخطاءً هي ببساطة غير مدعومة. لا تملك Polymarket نقطة نهاية لدفتر الأوامر التاريخي، لذا لا يوجد ما تستدعيه بشكل خاطئ. دفتر السوق المحسوم يُرجع 404 لأن Polymarket تتوقف عن تقديمه بمجرد تسوية السوق، حتى لو كان معرّف التوكن سليمًا.

إذا كنت تصطدم بهذه الجدران، فأنت لا تصحح تكاملًا — بل ينقصك مصدر بيانات. تسجّل PolyTest لقطات عند لحظات زمنية محددة لأسواق Up/Down للعملات المشفرة على Polymarket أثناء تشغيلها، مع العمق الكامل لدفتر الأوامر، لذا يبقى السجل موجودًا بعد الحسم. ويغطي مرجع الأخطاء الخاص بنا أشكال أخطاء PolyTest API، وهي مملة عمدًا بالمقارنة.

الأسئلة الشائعة

ماذا يعني "Unauthorized/Invalid api key" في Polymarket؟
يعني أن مفتاح API الخاص بك مفقود أو منتهي الصلاحية أو غير صالح — لكن السبب عمليًا يكون عادةً واحدًا من أربعة: ترسل مجموعة بيانات اعتماد ناقصة (المفتاح والسر وعبارة المرور كلها مطلوبة)، أو انحرفت ساعة نظامك بما يكفي لإبطال توقيع الطلب، أو اشتققت المفتاح لمحفظة غير التي تتداول منها، أو ترسل ترويسات L1 حيث يُتوقع ترويسات L2.
ما خطأ Polymarket رقم 425؟
يعني HTTP 425 Too Early أن محرك المطابقة في Polymarket يُعاد تشغيله وأن طلبك وصل خلال تلك النافذة. إنه عابر وآمن لإعادة المحاولة مع تراجع أُسّي. ولا يستحق 425 منفرد إطلاق تنبيه.
لماذا تقول Polymarket "The server was unable to process your request"؟
هذه رسالة من طبقة الحافة لا خطأ موثق في CLOB API، أي أن الطلب لم يصل إلى التطبيق أو يعد منه بشكل سليم. الأسباب المعتادة هي طلب مشوّه رُفض قبل التوجيه، أو فشل عابر في المنبع، أو تجاوز مستمر لحد المعدل — فلأن Polymarket تُبطئ بالإدراج في طابور بدلًا من الرفض، قد يرى العميل المتجاوز للحد بشدة انتهاء مهلات عند الحافة بدلًا من 429 نظيفة.
لماذا أتلقى 403 من Polymarket API؟
الرمز 403 من Polymarket هو عادةً الحافة تحجب الطلب لا فشلًا في المصادقة. المسببات الشائعة هي القيود الجغرافية على نقاط نهاية التداول، وتحدّي نطاقات IP لمراكز البيانات أو شبكات VPN، وغياب الترويسات الشبيهة بترويسات المتصفح. إذا حدث من جهاز افتراضي سحابي لا من حاسوبك المحمول، فهي سمعة عنوان IP؛ وإذا حدث على نقاط نهاية التداول لا على نقاط نهاية بيانات الأسواق، فهو جغرافي.
كيف أصلح "the order signer address has to be the address of the API KEY"؟
المفتاح الذي يوقّع أمرك لا يطابق المفتاح الذي يدّعي الأمر أنه استُخدم. هذا يعني أنك تخلط بيانات الاعتماد — عادةً مفتاح API قديم مخزّن من محفظة سابقة. أعد اشتقاق بيانات اعتماد API للمحفظة التي تتداول منها فعلًا، وتأكد من أن عنوان maker في الأمر يطابق العنوان المالك للمفتاح.
ماذا يعني "order manager not ready" في Polymarket؟
إنها رسالة من حالة بدء تشغيل محرك المطابقة — الخدمة قابلة للوصول لكن طبقة إدارة الأوامر لم تنته من الإقلاع، لذا تقبل الاتصال وترفض الأمر. إنها عابرة وقريبة جدًا من HTTP 425 Too Early. أعد المحاولة مع التراجع، لكن أوقف الإرسال لبضع ثوانٍ بدلًا من الإلحاح، لأن إعادة التشغيل تعني عادةً أن الدفتر على وشك التحرك. والتكرار المستمر مشكلة من جانب Polymarket، لا خطأ في العميل.
لماذا تقول Polymarket إنها تعذّر عليها الحصول على تسعيرة؟
دائمًا تقريبًا لأنه لا توجد سيولة قائمة على الجانب الذي طلبت تسعيره، لا لأن شيئًا معطّل. في أسواق Up/Down الضعيفة قرب الانتهاء يفرغ أحد الجانبين بانتظام — لا أحد يعرض Up حين يصبح Up مؤكدًا. في عيّنة من أسواق BTC لمدة 5 دقائق، كان لدى 1,454 من 8,510 دفتر بيع فارغ على أحد الجانبين قبل 60 ثانية من الانتهاء. تعامل معه على أنه "لا سوق" وتخطَّ الصفقة بدلًا من إعادة المحاولة في حلقة.
هل يجب أن أعيد محاولة أخطاء Polymarket API تلقائيًا؟
بعضها فقط. أعد محاولة 425 و429 وسلسلة 500 وأخطاء الاتصال مع تراجع أُسّي وتذبذب عشوائي. وأعد محاولة 503 في وضع النشر فقط بعد قيمة retry_after_seconds التي تقدّمها الاستجابة. ولا تُعِد أبدًا محاولة أخطاء التحقق 400 أو أخطاء المصادقة 401 أو 404 — فهذه تحتاج إلى طلب مُصلح أو بيانات اعتماد مُصلحة، وإعادة المحاولة لا تفعل سوى استهلاك ميزانية حد المعدل.

احصل على البيانات التاريخية التي لا تحتفظ بها Polymarket

يسجّل PolyTest أسواق Up/Down للعملات المشفرة على Polymarket أثناء تشغيلها — 240M+ لقطة مع 8 مستويات من عمق دفتر الأوامر، وطوابع زمنية بدقة أقل من الثانية، مع الاحتفاظ بالأسواق المحسومة. ابدأ بفترة تجريبية مجانية لمدة 3 أيام.

تابع القراءة