الأخطاء

احصل على مفتاح API

كل خطأ يأتي مع حالة HTTP وغلاف JSON نفسه. code هو العقد الذي تقرؤه شيفرتك؛ أما message فمكتوبة للبشر وقد تتغير.

json
{
  "error": {
    "code": "invalid_request",
    "message": "The request is invalid",
    "details": [
      { "field": "targets[0].text", "code": "required", "message": "targets[0].text is required" }
    ],
    "docUrl": "https://www.sofia-post.com/developers/errors#invalid_request",
    "requestId": "2aab5943-6333-4caf-8478-25a85ebd4abf"
  }
}
  • يوضح details أكثر: الحقل المرفوض، وسبب الشبكة، ونافذة الحد المستنفدة.
  • يقود docUrl إلى شرح الرمز في هذه الصفحة.
  • يعرّف requestId الطلب: أعطه للدعم.

رموز الأخطاء

الحالةالرمزالمعنى
400invalid_requestالجسم أو الاستعلام أو معامل غير صالح. تفصيل واحد لكل حقل مرفوض: field وcode (required وis_string وmax…) وmessage.
400invalid_jsonالجسم ليس JSON صالحًا.
400invalid_cursorالمؤشر لم تُعدْه Sofia API.
400webhook_url_invalidعنوان webhook ليس https، أو يقود إلى عنوان خاص.
400webhook_event_invalidحدث webhook غير معروف.
400application_name_invalidالإعدادات › API: اسم العميل مفقود أو طويل جدًا.
400application_profile_invalidالإعدادات › API: حقل في ملف العميل غير صالح؛ وتذكره التفاصيل.
400logo_invalidالإعدادات › API: الشعار مرفوض (180×180 px على الأقل، بصيغة PNG أو JPEG أو WebP، و2 MB كحد أقصى).
401invalid_tokenالرمز مفقود أو غير معروف أو منتهي أو ملغى، أو أن الشخص الذي وراءه فقد الصلاحيات التي يحملها. راجع الترويسة WWW-Authenticate.
401unauthorizedالمصادقة مطلوبة.
402subscription_requiredالكتابة الحية (بما فيها التجربة الجافة) تتطلب اشتراكًا نشطًا أو فترة تجريبية.
403insufficient_scopeالرمز يفتقر إلى نطاق نقطة النهاية؛ ويسميه التفصيل.
403insufficient_roleدورك في مساحة العمل هذه لا يسمح بهذا الإجراء.
403live_mode_requiredكتابة حقيقية برمز اختبار.
403route_closed_to_applicationsنقطة النهاية هذه غير مفتوحة للتطبيقات.
403forbiddenالوصول مرفوض.
403session_requiredالإعدادات › API: يتطلب هذا الإجراء جلسة Sofia وليس رمزًا.
403impersonation_forbiddenالإعدادات › API: هذا الإجراء مرفوض في جلسة مستعارة.
403workspace_owner_requiredوحده مالك مساحة العمل (Workspace) يستطيع فعل ذلك.
403workspace_member_requiredأنت لست عضوًا في مساحة العمل (Workspace) هذه.
404route_not_foundلا توجد نقطة نهاية تجيب عن هذه الطريقة وهذا المسار.
404establishment_not_foundمنشأة غير معروفة، أو خارج متناول الرمز.
404media_not_foundوسائط غير معروفة، أو خارج متناول الرمز.
404post_not_foundمنشور غير معروف، أو خارج متناول الرمز.
404webhook_not_foundwebhook غير معروف، أو يخص تطبيقًا آخر.
404not_foundالمورد غير موجود.
404application_not_foundالإعدادات › API: عميل غير معروف.
404grant_not_foundتفويض غير معروف أو ملغى بالفعل.
404personal_key_not_foundالإعدادات › API: مفتاح شخصي غير معروف.
405method_not_allowedهذه الطريقة غير مسموح بها على نقطة النهاية هذه.
409post_in_flightشبكة ترسل المنشور: أعد محاولة الحذف بعد قليل.
409post_not_editableأرسلت شبكة المنشور بالفعل: لم يعد قابلًا للتعديل.
409account_already_connectedهذه الشبكة متصلة بالفعل بالمنشأة.
409webhook_limit_reachedلدى التطبيق بالفعل 10 webhooks.
409idempotency_in_progressالطلب الأول بهذا Idempotency-Key لا يزال قيد التنفيذ.
409conflictيتعارض الطلب مع الحالة الحالية للمورد.
409scope_removal_forbiddenالإعدادات › API: يمكن إضافة صلاحية إلى عميل لكن لا يمكن إزالتها.
409public_client_has_no_secretالإعدادات › API: العميل العام ليس له سر.
413payload_too_largeالملف أكبر من حد الرفع.
415unsupported_media_typeنوع محتوى غير مدعوم.
422post_refusedشبكة أو المنشأة أو باقتك سترفض المنشور. تفصيل واحد لكل سبب، لكل منها message خاصة به.
422media_import_refusedتعذّر استيراد الوسائط من هذا الرابط؛ ويذكر التفصيل السبب.
422media_upload_refusedالملف المرفوع ليس صورة أو فيديو مدعومًا.
422platform_not_offeredهذه الشبكة غير متاحة للربط.
422idempotency_key_reusedاستُخدم هذا Idempotency-Key مع جسم مختلف.
422unprocessable_entityالطلب مفهوم لكن لا يمكن معالجته.
429rate_limit_exceededنافذة حد المعدل ممتلئة: انتظر انقضاء Retry-After.

أسباب رفض المنشور

يسرد post_refused كل سبب في details[].code:

الرمزالمعنى
unsupported_platformهذه الشبكة غير مدعومة.
duplicate_platformذُكرت الشبكة نفسها مرتين.
unsupported_formatهذه الشبكة لا تقدم هذه الصيغة.
caption_too_longالنص طويل جدًا (max، actual).
too_many_hashtagsهاشتاغات كثيرة جدًا (max، actual).
too_many_mentionsإشارات كثيرة جدًا (max، actual).
too_many_thread_postsالسلسلة طويلة جدًا (max، actual).
too_many_mediaوسائط كثيرة جدًا (max، actual).
media_mix_refusedلا يمكن الجمع بين الصور والفيديوهات على هذه الشبكة.
media_requiredتتطلب هذه الشبكة صورة أو فيديو.
media_type_refusedهذه الشبكة لا تقبل هذا النوع من الوسائط.
scheduled_in_pastscheduledAt في الماضي.
scheduled_at_invalidالمنشور المجدول يحتاج إلى scheduledAt في المستقبل.
account_not_connectedلا يوجد حساب متصل على هذه الشبكة لهذه المنشأة.
account_ambiguousعدة حسابات متصلة على هذه الشبكة: سمِّ أحدها بـ accountId.
media_not_foundالوسائط ليست في مكتبة هذه المنشأة.
media_url_invalidيجب أن يكون رابط الوسائط عنوان https عامًا.
platform_unavailableهذه الشبكة غير مفتوحة على Sofia بعد.
publication_quota_exceededبلغت حصة النشر في باقتك.

التعامل مع الأخطاء

  • تفرّع بحسب code، لا بحسب message أبدًا.
  • أعد محاولة 429 بعد Retry-After، و5xx بتراجع أسّي (exponential backoff).
  • لا تعد محاولة 4xx دون تغيير أبدًا: أصلح الطلب أولًا.
  • سجّل requestId مع كل فشل.