الموضوع

أخطاء API — ماذا يعني كل رمز وكيفية إصلاحه

يعيد FastOG رموز أخطاء قابلة للقراءة آليًا عند فشل الطلب — سواء كان طلب عرض صورة OG موقّعًا، أو استدعاءً لأحد واجهات الإدارة داخل المنتج. تتضمن كل استجابة خطأ ما يلي:

  • error — الرمز القصير القديم. لا يزال حاضرًا في كل فشل حتى يستمر العميل الأقدم في العمل.
  • code — رمز الخطأ نفسه المستقر والموثّق (الجدول أدناه)، تحت الاسم الذي تستخدمه واجهة API العامة.
  • message — وصف من جملة واحدة لما حدث خطأ.
  • hint — وصف قصير بلغة واضحة لما حدث خطأ وكيفية إصلاحه.
  • docs_url — رابط إلى هذه الصفحة، مثبّت عند القسم الخاص بذلك الرمز.
  • request_id — يربط فشل HTTP هذا بصف في جدول Render Logs في لوحة التحكم (يُعاد أيضًا في ترويسة استجابة X-Request-ID). الواجهة التي لا يوجد لديها ما تربطه تُرجع null، لكن المفتاح حاضر دائمًا.

تُرجع الواجهات داخل المنتج — لوحة إدارة Shopify، وWooCommerce Studio، وجسر Wix، والعرض التجريبي — نفس المغلّف للرموز أدناه، لذا يعني الفشل الشيء نفسه أينما واجهته. قد تحتفظ واجهة وحدة ما بحالة HTTP التي كانت تُرجعها دائمًا لرمز ما (على سبيل المثال render_failed تُرجع 503 عند تصدير الغلاف و502 عند واجهة API العامة)؛ أما الرمز والرسالة والتلميح ورابط الوثائق فلا تتغير.

قراءة استجابة الخطأ

json
{
  "error": "invalid_signature",
  "code": "invalid_signature",
  "message": "The signature does not match.",
  "hint": "The signature did not match. Re-sign with your HMAC secret after every param change.",
  "request_id": "5f2a9c1e-..."
}

إذا تلقيت استجابة لا تفهمها، فأسرع مسار هو:

  1. سجّل code.
  2. تحقّق من أداة بناء URL لديك — معظم حالات الفشل ناتجة عن أخطاء في التوقيع، لا عن مشكلات في الحساب.
  3. طابِق الرمز أدناه لمعرفة السبب الدقيق والإصلاح.
  4. في لوحة التحكم، افتح Render Logs وصفِّ حسب error_code نفسه — يعرض كل صف المعاملات المطلوبة حتى تتمكن من إعادة الإنتاج (والتأكد من تطابق request_id).

التوقيع والمصادقة

missing_signature

يفتقد طلبك إلى معاملات الاستعلام key و/أو s (التوقيع).

الإصلاح: تأكد من أن عنوان URL الخاص بك يتضمن كلاً من key=<api-key> وs=<hmac-signature>. استخدم SDK أو دليل /docs/hmac-signature-guide لبنائه.

invalid_signature

لم تتطابق قيمة s مع ما ينتجه سر HMAC الخاص بك لعنوان URL هذا.

الإصلاح: يغطي التوقيع كل معاملات الاستعلام باستثناء s، مع ترتيب المفاتيح. أي تغيير في أي معامل — بما في ذلك إعادة الترتيب أو اختلافات ترميز URL أو إضافة مسافات — يُبطل التوقيع. أعد التوقيع بعد كل تغيير. تأكد من أن سرك هو نفسه المعروض عند إنشاء مفتاح API.

invalid_signature_format

قيمة s ليست سلسلة hex من 64 حرفًا.

الإصلاح: يجب أن يكون التوقيع بصيغة SHA-256 hex خام (أحرف صغيرة a-f0-9). إذا كنت تستخدم ترميز base64 أو تقتطع الناتج، فاستخدم hex العادي.

expired_timestamp

الطابع الزمني t الذي قدمته أقدم من 5 دقائق.

الإصلاح: أعد توليد الطابع الزمني في كل مرة تبني فيها عنوان URL. ينطبق هذا الرمز على تدفق عنوان URL الموقّع القديم؛ أما تدفق HMAC v2 الحالي فلا يحتوي على طابع زمني.

invalid_api_key

مفتاح key الذي مررته غير موجود.

الإصلاح: انسخ مفتاح API الكامل من لوحة التحكم — فهو المعرّف العام الذي يبدأ بـ sk_. إنه عام وآمن في عناوين URL؛ أما السر (الذي لا يظهر أبدًا في عناوين URL) فهو ما يثبت الملكية.

missing_hmac_secret

لا يحتوي مفتاح API على سر HMAC مُهيأ.

الإصلاح: أنشئ مفتاح API جديدًا في لوحة التحكم — يُولَّد سر HMAC ويُعرض مرة واحدة عند الإنشاء.


المعامل / المدخل

invalid_image_url

خاصية تحمل URL (image، brand_logo، logo، avatar، background_image، ...) ليست URL عامًا من نوع http(s).

الإصلاح: مرّر URL عامًا قابلًا للجلب عبر https://.... تُرفض عناوين localhost وعناوين IP الخاصة والمسارات المجردة لمنع تزوير الطلبات من جانب الخادم.


الاشتراك

subscription_required (402)

وصل الطلب إلى Dynamic API لكن لا توجد خطة نشطة على حسابك. الوصول إلى API مخصص للاشتراك فقط: الخطة هي البوابة، وهي تحمل نفس تغطية وسلّم الإمكانات التي تبيعها تطبيقات FastOG. عمليات العرض نفسها غير محاسبة — لا توجد حصة عرض شهرية ولا فوترة تجاوز.

الإصلاح: اختر خطة Dynamic API في لوحة التحكم وأنشئ مفتاح API. تتضمن الاستجابة top_up_url يشير إلى صفحة الخطط.


خدمة العرض

store_blocked (403)

أوقفت FastOG عرض المتجر المرتبط بهذا المفتاح (على سبيل المثال بسبب إساءة الاستخدام أو الاستهلاك المفرط). قد تستمر الأغلفة المخزّنة مؤقتًا على الحافة في الخدمة حتى انتهاء صلاحيتها. تواصل مع الدعم لحل المشكلة؛ لا يوجد أي تغيير يمكنك إجراؤه في الطلب من شأنه إصلاح ذلك.

render_unreachable

تعذّر الوصول إلى خدمة العرض (نافذة إعادة تشغيل قصيرة).

الحل: أعد المحاولة بعد بضع ثوانٍ. لم يُحتسب العرض لهذه المحاولة.

render_failed

أعادت خدمة العرض خطأً لطلبك.

الحل: تحقّق من خصائص القالب (template props) — قيم طويلة أو مشوّهة، أو حقول غير مدعومة، أو صورة مصدرية (upstream) يتعذّر الوصول إليها. يتضمّن الرد تفاصيل status الأساسية. لم يُحتسب العرض.


واجهات إدارة المتجر

تُرجع هذه الرموز استجاباتها من لوحة إدارة Shopify ومن WooCommerce Studio — المحرّرات المضمّنة التي يعمل فيها التاجر بدلًا من الـ API الموقّع. تشترك عدة رموز مع الـ API العام (invalid_image_url، render_failed، invalid_signature)؛ ويحتفظ كل منها بالمدخل الموثّق أعلاه.

Code HTTP What it means and what to do
invalid_shop 422 تعذّر التعرف على متجر Shopify. أعد تحميل تطبيق FastOG من لوحة إدارة Shopify كي يحمل الطلب المضمّن المتجر مرة أخرى، ثم أعد المحاولة.
invalid_shop_or_page 422 المتجر أو نوع الصفحة غير معروف. افتح تطبيق FastOG من لوحة إدارة Shopify واختر نوع صفحة الغلاف من المحرر.
invalid_store 422 تعذّر التعرف على متجر WooCommerce. أعد فتح Studio من لوحة إدارة WordPress كي يُقدَّم رمز المتجر مرة أخرى، ثم أعد المحاولة.
invalid_store_or_page 422 المتجر أو نوع الصفحة غير معروف. أعد فتح Studio من لوحة إدارة WordPress واختر نوع صفحة غلاف يعرضه المحرر.
missing_api_key 422 لا يملك المتجر مفتاح توقيع. أكمل تثبيت الإضافة من لوحة إدارة WordPress كي يتمكن FastOG من إصدار مفتاح التوقيع للمتجر.
store_ownership_unverified 403 تعذّر التحقق من موقع WordPress. يجب أن يكون الموقع متاحًا عبر HTTPS عام مع تمكين REST API الخاص به.
community_is_free 422 خطة Community مجانية. إنها الخطة الافتراضية المجانية ولا يمكن شراؤها؛ اختر خطة مدفوعة للترقية.
not_installed 404 FastOG غير مثبّت لهذا المتجر. ثبّت تطبيق FastOG من Shopify App Store لهذا المتجر، ثم أعد فتحه.
oauth_required 409 يحتاج المتجر إلى تفويض FastOG مرة أخرى. أعد تشغيل تثبيت FastOG عبر OAuth من لوحة إدارة Shopify؛ فقد أُبطل التفويض المخزّن أو تغيّرت نطاقاته.
reconnect_required 409 يجب إعادة إنشاء اتصال Shopify. استخدم زر Reconnect في تطبيق FastOG كي يُصدر رمز وصول جديد.
token_rejected 409 أصدر Shopify رمز وصول ثم رفضه. أعد محاولة إعادة الاتصال مرة واحدة؛ وإذا استمر Shopify في رفضه، فأعد تثبيت التطبيق.
unauthorized 401 لا يحمل الطلب جلسة صالحة لهذه الواجهة. أعد تحميل تطبيق FastOG من لوحة إدارة منصتك كي يُرفق رمز جلسة جديد، ثم أعد المحاولة.
shop_not_found 404 لم يعد المتجر موجودًا في FastOG. أعد تثبيت FastOG من لوحة إدارة Shopify لإعادة إنشاء سجل المتجر.
invalid_product 422 مرجع المنتج غير صالح. أعد تحميل صفحة المنتج وأعد فتح FastOG؛ فقد كان معرّف المنتج المرسل مفقودًا أو غير رقمي.
invalid_product_cover 422 حمولة غلاف المنتج مشوّهة. أعد تحميل المحرر واحفظ مرة أخرى؛ يجب أن تكون props وstyle وsignals كل منها كائنًا.
product_not_found 404 تعذّرت قراءة المنتج من المتجر. تحقق من أن المنتج لا يزال موجودًا ومنشورًا، ثم أعد تحميل المحرر.
product_customization_not_on_plan 403 تخصيص الغلاف لكل منتج غير متاح في هذه الخطة. قم بالترقية، أو حرّر غلاف المنتج المشترك بدلًا من ذلك.
no_product_handles 422 لم يُعثر على أي منتجات لتحديثها. انشر منتجًا واحدًا على الأقل بمعرّف عام (handle)، ثم أعد محاولة تحديث معاينة المشاركة.
invalid_style 422 كتلة الأنماط غير قابلة للاستخدام. أعد تحميل المحرر وأعد اختيار الألوان والخطوط؛ فقد تعذّرت تسوية إحدى القيم.
invalid_template 422 القالب المطلوب ليس ضمن كتالوج هذه المنصة. اختر أحد التخطيطات التي يعرضها المحرر.
invalid_preset 422 اسم الإعداد المسبق ليس من بين ما تعرضه هذه المنصة. اختر إعدادًا مسبقًا من شاشة الإعداد.
invalid_set 422 حمولة مجموعة الأغلفة مفقودة أو مشوّهة. أعد تحميل شاشة الإعداد واختر مجموعة مرة أخرى.
preset_not_applyable 422 لا يمكن تطبيق الإعداد المسبق على كل نوع صفحة. اختر إعدادًا مسبقًا آخر؛ فهذا الإعداد يفتقد غلافًا لنوع صفحة واحد على الأقل.
template_not_available 422 القالب ليس ضمن الكتالوج القابل للعرض. اختر تخطيطًا يعرضه المنتقي.
template_not_available_on_shopify 422 القالب غير متاح على متاجر Shopify. اختر تخطيطًا يعرضه محرر Shopify.
template_not_available_on_woocommerce 422 القالب غير متاح على متاجر WooCommerce. اختر تخطيطًا يعرضه Studio.
template_unavailable 422 القالب غير متاح لهذا المتجر. اختر تخطيطًا يعرضه المحرر؛ فهو إما مسحوب أو غير معروف أو يتجاوز ما يجوز للمتجر رسمه.
template_not_on_plan 403 يتطلب القالب خطة أعلى. غيّر الخطة، أو اختر تخطيطًا تغطيه الخطة الحالية. يذكر الاستجابة اسم الخطة في requires.
template_requires_higher_plan 403 يتطلب القالب خطة أعلى. تذكر الاستجابة اسم الخطة في requires.
no_rule 404 لا توجد قاعدة غلاف لنوع الصفحة هذا بعد. احفظ غلافًا لنوع الصفحة هذا في المحرر أولًا.
cover_not_configured 404 لم يُحفظ أي غلاف منتج بعد. احفظ غلاف منتج قبل تنزيله أو مشاركته.
schedule_only_product 422 جدولة الحملات متاحة لأغلفة المنتجات فقط. أزل تاريخ الإرجاع، أو انقل الحملة إلى غلاف المنتج.
not_dismissible 422 لا يمكن تجاهل هذا الإعلان. أعد تحميل الصفحة؛ فقد سُحب بالفعل أو يخص متجرًا آخر.
unsupported_locale 422 لغة الواجهة هذه غير مضمّنة لهذا التطبيق. اختر إحدى اللغات التي تسردها الاستجابة في supported.
no_setup_sets 422 تعذّر تجميع أي مجموعات أغلفة منسّقة. أعد محاولة شاشة الإعداد؛ وإذا بقيت فارغة، فتواصل مع الدعم.
export_unavailable 403 التنزيلات غير متاحة في هذه الخطة. قم بالترقية إلى Pro أو أعلى لتنزيل ملفات الأغلفة.
cancellation_failed 502 رُفض إلغاء الاشتراك. أعد المحاولة بعد قليل؛ وإذا استمر الفشل، فألغِ الاشتراك من صفحة فواتير Shopify أو تواصل مع الدعم.
logo_override_on_plan 403 تجاوز الشعار غير متاح في هذه الخطة. قم بالترقية، أو امسح تجاوز الشعار.
invalid_logo 422 ملف الشعار ليس صورة مقبولة. ارفع ملف PNG أو JPEG أو WebP ضمن الحد الأقصى للحجم المعروض في المحرر.
invalid_brand_image 422 صورة مرجع العلامة التجارية غير قابلة للاستخدام. ارفع صورة مدعومة ضمن الحد الأقصى للحجم، أو امسح المرجع واحفظ مرة أخرى.
brand_image_too_large 422 صورة مرجع العلامة التجارية كبيرة جدًا. صغّر الملف وارفعه مرة أخرى.
brand_colors_too_many 422 تم تقديم أكثر من ثلاثة ألوان للعلامة التجارية. أرسل ثلاثة ألوان hex كحد أقصى.
upload_failed 500 تعذّر تخزين الملف المرفوع. أعد المحاولة؛ وإذا استمر الفشل، فتواصل مع الدعم — لم يُرجع مخزن الأصول أي URL عام.
attachment_upload_failed 500 تعذّر تخزين مرفق الدعم. أرسل الرسالة دون المرفق، ثم أرسل الملف بالبريد الإلكتروني إلى الدعم.
invalid_webhook 401 لم يتحقق توقيع webhook المتجر. تحقق من أن سر webhook في إعدادات FastOG على WordPress لديك يطابق السر الذي أصدره FastOG.
not_found 404 لم تعد نقطة النهاية هذه موجودة. أعد فتح Studio من لوحة إدارة WordPress.
meta_refresh_unavailable 503 تحديث معاينة المشاركة غير مهيأ. أعد مشاركة الرابط من Facebook بدلًا من ذلك.
theme_write_disabled 409 تحرير القالب غير ممكّن لهذا التطبيق. استخدم تضمين تطبيق القالب بدلًا من إصلاح ملف القالب.
scope_required 403 يفتقد FastOG إلى إذن من Shopify. وافق على النطاقات المطلوبة باستخدام consent_url في الاستجابة، ثم أعد محاولة الإصلاح.

جسر Wix

يُوقَّع جسر Wix بواسطة تطبيق Wix، وليس بجلسة تاجر، لذا تُوجَّه إخفاقاته إلى مطوّر التطبيق. ما زال كل ردّ يحمل code وrequest_id؛ ومعرّف طلب الجسر هو المعرّف الوارد في المغلّف الموقَّع.

الرمز HTTP ما يعنيه وما ينبغي فعله
invalid_bridge_signature 401 لم ينجح التحقق من توقيع جسر Wix. أعد إنشاء الطلب باستخدام السر المشترك والمسار الدقيق وطابع زمني عمره أقل من خمس دقائق.
invalid_bridge_body 400 جسم مغلّف الجسر مشوّه. أرسل body ككائن JSON ورمّز كل رقم داخله كسلسلة نصية، حتى يتطابق التوقيع القانوني.
replayed_bridge_request 401 سبق استخدام طلب الجسر هذا. أنشئ request_id جديدًا لكل استدعاء يُعدّل البيانات.
wix_site_not_installed 403 FastOG غير مثبّت على موقع Wix هذا. ثبّت تطبيق FastOG على الموقع، ثم أعد فتحه.
wix_site_not_provisioned 422 لا يملك موقع Wix بيانات اعتماد توقيع بعد. أعد تثبيت تطبيق FastOG حتى يُجهَّز الموقع بمفتاح API.
invalid_page_type 422 نوع الصفحة ليس من الأنواع التي يغطيها FastOG على Wix. أرسل أحد أنواع الصفحات التي يوفّرها Studio.
rule_not_found 404 لا توجد قاعدة بهذا المعرّف. حدّث القائمة؛ فقد حُذفت القاعدة أو تنتمي إلى موقع آخر.
invalid_target_id 422 معرّف هدف Wix غير صالح لنوع الصفحة هذا. أرسل المعرّف الذي يوفّره تطبيق Wix لنوع الصفحة هذا.
invalid_preview 422 حمولة المعاينة مشوّهة. اقرأ كائن details لمعرفة الحقل الذي أخفق.
invalid_rule 422 حمولة قاعدة الغلاف مشوّهة. اقرأ كائن details؛ فحقل template مطلوب، ويجب أن تكون الكتل الاختيارية كائنات.
invalid_sync 422 حمولة المزامنة مشوّهة. اقرأ كائن details؛ ويجب أن يتوافق target_type وtarget_id.
invalid_regenerate_url 422 عنوان URL المطلوب إعادة توليده مفقود. أرسل عنوان URL للصفحة في url.
invalid_regenerate_host 422 عنوان URL لا ينتمي إلى مضيف FastOG. أرسل عنوان URL لغلاف على fastog.com.
ai_presets_unsupported 422 لم تعد تُولَّد مجموعات الأغلفة المصمَّمة بالذكاء الاصطناعي. اختر أحد المظاهر المنسّقة بدلًا من ذلك.
original_tags_required 422 وسوم البيانات الوصفية الأصلية مطلوبة. أرسل original_tags (أو current_tags) حتى تتمكن عملية إلغاء التثبيت من استعادة بيانات الموقع الوصفية.
invalid_restored 422 حمولة المفاتيح المستعادة مشوّهة. أرسل restored كمصفوفة من مفاتيح البيانات الوصفية.
invalid_seo_target 422 نوع هدف SEO غير معروف. استخدم site أو pattern أو item في المسار.
invalid_seo_payload 422 حمولة بيانات SEO الوصفية مشوّهة. أرسل target_id وcurrent_tags وfastog_url كعنوان URL مطلق من نوع http(s).
sync_failed 500 أخفقت مزامنة البيانات الوصفية إلى Wix. أعد المحاولة؛ وإذا استمر الإخفاق، فتحقق من إمكانية الوصول إلى الموقع ومن أن التطبيق ما زال مثبّتًا.
invalid_tier 422 تلك الخطة ليست من الخطط التي يبيعها FastOG على Wix. أرسل starter أو pro أو scale كفئة.

واجهة العرض التجريبي

العرض التجريبي هو وحدة تحكم المبيعات المخصّصة للمالك فقط، وليس نقطة نهاية للتاجر.

الرمز HTTP ما يعنيه وما يجب فعله
url_required 422 لم يُرسَل أي URL. الصق رابط المتجر أو المنتج قبل قراءة البطاقة.
unreadable_url 422 تعذّرت قراءة تلك الصفحة. تحقّق من أن الرابط عام وكامل؛ فلا يمكن قراءة صفحة خلف تسجيل الدخول.
no_api_key 422 لا يتوفر أي مفتاح API لتوقيع الأغلفة. أنشئ مفتاح API (أو أدخل مفتاحًا صالحًا)؛ ويحتوي الاستجابة على رابط إلى صفحة مفاتيح API.
no_presets 500 لم تُضبط أي إعدادات مسبقة للأغلفة. اضبط إعدادًا مسبقًا واحدًا على الأقل على الخادم.

رموز محررات القواعد النطاقية

تُترجم محررات القواعد النطاقية (لوحة إدارة Shopify وWooCommerce Studio) هذه الرموز بنفسها إلى لغة التاجر نفسها، لذا تحمل استجاباتها error وcode دون hint — إذ لن يؤدي وصف إنجليزي ثانٍ إلا إلى الانحراف عن الوصف المترجم الذي يراه التاجر فعليًا:

scope_already_defined، scoped_rule_limit_reached، scoped_rules_not_on_plan، scope_value_required، scope_value_too_long، unknown_scope_type، base_rule_required، scoped_rules_product_only، cannot_delete_base_rule.


ما زلت عالقًا؟

  • افتح صفحة Render Logs في لوحة التحكم — تُدرج كل نتيجة (نجاح + رفض) مع error_code وحالة HTTP والمعاملات المطلوبة.
  • نفّذ php artisan og:diagnose على URL موقّع لتتبّع المسار كاملًا ومعرفة المرحلة التي تفشل.
  • راجع الوثائق في الشريط الجانبي الخاصة بالإطار الذي تستخدمه (Next.js، Express، SvelteKit، ...).

جرّبه مجانًا — لا حاجة للتسجيل

معاينة واختبار صور OG الديناميكية في ثوانٍ.

افتح أداة اختبار OG المجانية

A BeCaSimulations site