> ## Documentation Index
> Fetch the complete documentation index at: https://ayrshare.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# رموز أخطاء Ayrshare

> رموز الأخطاء المُعادة الخاصة بـ Ayrshare.

ستتضمن واجهة REST API استجابة بقائمة الأخطاء إن وُجدت.

<Info>
  للأخطاء رمز حالة مُعاد 400 أو 401 أو 402 أو 403 أو 404 أو 429 أو 500 أو 502 أو 503 أو 504. النجاح له رمز حالة
  مُعاد 200. راجع [هنا](/errors/errors-http) للتفاصيل.
</Info>

قد يُعيد كل استدعاء API أخطاءً مختلفة بحسب الطلب المحدد وأي مشكلات تُواجه في الشبكة الاجتماعية.
ستحتوي استجابة الخطأ على تفاصيل حول ما حدث من خلل خلال استدعاء API.

على سبيل المثال، منشور يعتبره Twitter وFacebook تكرارًا سيُعيد الاستجابة التالية.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "post",
      "status": "error",
      "code": 110,
      "message": "Status is a duplicate.",
      "post": "Today is a great day",
      "platform": "twitter"
    },
    {
      "action": "post",
      "status": "error",
      "code": 107,
      "message": "Facebook Error: This status update is identical to the last one you posted.
        Try posting something different, or delete your previous update.",
      "platform": "facebook"
    }
  ],
  "postIds": [],
  "id": "6APU4qqI7XO7JM3BOy6B"
}
```

يُرجى ملاحظة:

<ul class="custom-bullets">
  <li>
    يحتوي حقل `errors` على مصفوفة الأخطاء، خطأ واحد لكل شبكة اجتماعية واجهت خطأً.
  </li>

  <li>يشير `action` إلى نوع الخطأ المُعاد.</li>

  <li>
    سيكون حقل `status` على المستوى الأعلى "error" إذا فشل استدعاء API. على سبيل المثال، لاستدعاء /post
    إذا نجحت جميع عمليات النشر على الشبكات الاجتماعية، فسيكون حقل `status` "success"، وإلا
    فسيكون حقل status "error".
  </li>

  <li>يحتوي حقل `code` على رمز خطأ Ayrshare المرجعي.</li>
  <li>حقل `message` هو التفاصيل المحددة للخطأ.</li>
</ul>

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

يجب أن تتعامل مع أي استجابات خطأ وتتخذ الإجراء المناسب. حدث خطأ إذا:

<ul class="custom-bullets">
  <li>كان رمز إرجاع الاستجابة ليس `200`</li>
  <li>كانت حالة استجابة JSON `error`</li>
</ul>

على سبيل المثال، إذا أزال المستخدم رابط Facebook — غيّر كلمة المرور أو أزال وصول Ayrshare — ستحدث الاستجابة التالية عند النشر مع رمز استجابة `400 Bad Request`.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "post",
      "status": "error",
      "code": 161,
      "message": "Facebook authorization error. This can occur if your Facebook security changes. Try unlinking and re-linking Facebook or contact us for assistance.",
      "platform": "facebook"
    }
  ],
  "postIds": [],
  "id": "gh7SyTpeD2CQAMxWk3oh",
  "post": "A great Facebook Posts"
}
```

قد يكون الإجراء إشعار المستخدم عبر لوحة التحكم أو الرسائل النصية أو البريد الإلكتروني.

مثال آخر إذا كانت صورة Instagram المنشورة بأبعاد أو نسبة خاطئة مع رمز استجابة `400 Bad Request`:

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "post",
      "status": "error",
      "code": 138,
      "message": "Instagram Error: There was an issue posting to Instagram. The submitted image with aspect ratio ('1440/2158',) cannot be published. Please submit an image with a valid aspect ratio.",
      "platform": "instagram"
    }
  ],
  "postIds": [],
  "id": "Jxe2nMM3FmEvMXFSY3g4",
  "post": "Is this a good image?"
}
```

قد يكون الإجراء إعادة إرسال الصور بالنسبة الصحيحة.

### رموز الأخطاء الخاصة بـ Instagram

توفر رموز الأخطاء التالية تفاصيل محددة حول إخفاقات النشر على Instagram، وتحل محل الخطأ العام 138 حيثما أمكن.

**الرمز 435 — حد معدل Instagram (HTTP 429)**

تخضع حسابات Instagram الاحترافية (Business / Creator) لحد متحرك مدته 24 ساعة يبلغ 50 منشورًا في [واجهة Meta لنشر المحتوى](https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-user/content_publishing_limit/) (لا يمكن للحسابات الشخصية النشر عبر API إطلاقًا وبالتالي لا تصل إلى هذا الحد أبدًا). عند تجاوز الحد، تُعيد Meta خطأ حدّ معدل. يُظهر Ayrshare أيضًا `code: 435` عندما تُعيد نقطة نهاية Meta للنشر HTTP 429 مباشرةً أو عندما يشير رمز الخطأ الفرعي الأساسي (`1390008`) إلى تقييد نشر / تعليق.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "rate limit",
      "status": "error",
      "code": 435,
      "message": "Instagram rate limit reached. Please wait before retrying your post.",
      "details": "Retry-After: 3600",
      "platform": "instagram"
    }
  ]
}
```

**الإجراء:** انتظر حتى تُعاد نافذة حد المعدل قبل إعادة المحاولة. عندما توفر Meta ترويسة `Retry-After`، تُمرَّر القيمة (بالثواني) في حقل `details` — انتظر ذلك على الأقل قبل إعادة الإرسال.

**الرمز 436 — انتهاء مهلة معالجة وسائط Instagram (HTTP 400)**

استغرقت Instagram وقتًا طويلًا لمعالجة الوسائط المُحمَّلة. يمكن أن يحدث هذا مع ملفات الفيديو الكبيرة أو خلال فترات الحمل العالي على خوادم Meta.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "post",
      "status": "error",
      "code": 436,
      "message": "Instagram media processing timed out. Please try posting again.",
      "retryAvailable": true,
      "platform": "instagram"
    }
  ]
}
```

**الإجراء:** أعد محاولة المنشور باستخدام نقطة نهاية [retry post](/apis/post/retry-post). إذا استمرت المشكلة، حاول تقليل حجم ملف الوسائط.

**الرمز 447 — Instagram Trial Reels: graduationStrategy مفقود (HTTP 400)**

يُعاد عندما يُقدَّم `instagramOptions.trialParams` على طلب [`/post`](/apis/post/post) لكن `graduationStrategy` مفقود أو `null` أو سلسلة فارغة. تتطلب Trial reels استراتيجية تخرّج صريحة — راجع [Trial Reels](/apis/post/social-networks/instagram#trial-reels).

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "post",
      "status": "error",
      "code": 447,
      "message": "Instagram trial reels require instagramOptions.trialParams.graduationStrategy (\"MANUAL\" or \"SS_PERFORMANCE\").",
      "platform": "instagram"
    }
  ]
}
```

**الإجراء:** عيّن `instagramOptions.trialParams.graduationStrategy` إلى `"MANUAL"` أو `"SS_PERFORMANCE"` وأعد المحاولة، أو أزل `trialParams` إن لم تكن تنوي نشر trial reel.

**الرمز 448 — Instagram Trial Reels: graduationStrategy غير صالح (HTTP 400)**

يُعاد عندما يكون `graduationStrategy` موجودًا لكنه ليس بالضبط `"MANUAL"` أو `"SS_PERFORMANCE"`. الفحص حساس لحالة الأحرف — القيم مثل `"manual"` أو `"ss_performance"` تُرفض. يعكس حقل `details` المدخل المرفوض (مقتطعًا إلى 64 حرفًا) للمساعدة في التصحيح.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "post",
      "status": "error",
      "code": 448,
      "message": "Invalid Instagram graduationStrategy. Must be \"MANUAL\" or \"SS_PERFORMANCE\".",
      "details": "Received: manual",
      "platform": "instagram"
    }
  ]
}
```

**الإجراء:** أرسل `graduationStrategy` كـ `"MANUAL"` أو `"SS_PERFORMANCE"` بالضبط (بأحرف كبيرة، نوع نصي).

**الرمز 449 — Instagram Trial Reels: وسائط غير متوافقة (HTTP 400)**

يُعاد عندما لا يكون شكل الوسائط أو المنشور مؤهلًا لـ trial reel. يجب أن تكون trial reels فيديو `.mp4` أو `.mov` واحد — carousels (أكثر من URL واحد) وStories (`instagramOptions.stories: true`) والامتدادات غير الفيديو كلها مرفوضة. يوضح حقل `details` أي حالة فرعية أُطلقت.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "post",
      "status": "error",
      "code": 449,
      "message": "Instagram trial reels must be a single video (.mp4 or .mov) — carousels and stories are not supported.",
      "details": "Carousels are not supported.",
      "platform": "instagram"
    }
  ]
}
```

**الإجراء:** أرسل عنوان URL واحد لفيديو `.mp4` أو `.mov` بدون علامة `stories: true`. احذف إدخالات `mediaUrls` الإضافية، أو أزل `trialParams` إذا كنت تنوي منشور carousel/story عاديًا.

**الرمز 258 — خطأ حالة حساب Instagram (HTTP 400)**

فشل عام في حالة حساب Instagram برسالة أساسية "Error with Instagram." يظهر هذا عندما ترفض Meta الطلب بسبب حالة حساب Instagram المتصل وليس بسبب محتوى المنشور.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "post",
      "status": "error",
      "code": 258,
      "message": "Error with Instagram.",
      "platform": "instagram"
    }
  ]
}
```

عندما يكون `error_subcode` الأساسي لـ Meta هو `2207085`، تُعيّن الاستجابة أيضًا `relink: true` و`retryAvailable: true`، وتوجّه الرسالة المستخدم إلى إلغاء ربط حساب Instagram وإعادة ربطه، مع منح جميع الأذونات:

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "post",
      "status": "error",
      "code": 258,
      "message": "Error with Instagram. Please unlink and relink your Instagram account, granting all permissions, then retry.",
      "relink": true,
      "retryAvailable": true,
      "platform": "instagram"
    }
  ]
}
```

**الإجراء:** للحالة الفرعية `2207085`، اطلب من المستخدم إلغاء ربط حساب Instagram وإعادة ربطه في [Social Accounts](https://app.ayrshare.com/social-accounts)، مع منح جميع الأذونات المطلوبة، ثم إعادة محاولة المنشور. لأخطاء حالة الحساب الأخرى، تحقق من أن حساب Instagram في وضع جيد لدى Meta وأعد المحاولة.

#### إعادة المحاولة متاحة

أحيانًا تواجه الشبكات الاجتماعية خطأً غير قابل للاسترداد، مثل مشكلات الخادم لديها، ويفشل الاستدعاء في نهاية المطاف حتى بعد العديد من المحاولات.
في تلك الحالات، سيحدد نظامنا ما إذا كان الخطأ قابلًا للإعادة، وإذا كان الأمر كذلك، فسيكون حقل `retryAvailable` `true`.

```json theme={"system"}
{
  "retryAvailable": true
}
```

يمكنك بعد ذلك إعادة الاستدعاء بنفس الحمولة.
إذا كانت منشورًا، يمكنك استخدام نقطة نهاية [retry post](/apis/post/retry-post).

### أخطاء مفاتيح X/Twitter BYO

رموز الأخطاء التالية خاصة بعمليات مفاتيح X/Twitter BYO (Bring Your Own):

**الرمز 272 - فشل التحقق من هوية BYO Twitter (HTTP 400)**

لم يتمكن Ayrshare من تأكيد هويتك على X/Twitter باستخدام مفاتيح المستهلك BYO وعلامات OAuth المخزّنة وقت الربط. يختلف شكل الاستجابة بحسب الاستدعاء الذي أطلقها؛ يُطابق كلا الشكلين نفس الحالات الفرعية الثلاث أدناه. تحقق من أي منها ينطبق بتسجيل الدخول إلى [x.com](https://x.com) بالحساب الذي يملك BYO Developer App.

مسار النشر يُصدر استجابة موجزة:

```json theme={"system"}
{
  "status": "error",
  "code": 272,
  "message": "Failed to verify BYO Twitter identity",
  "platform": "twitter"
}
```

يُصدر مسار التحليلات رسالة أطول وذاتية التوثيق وقد يتضمن حقل `details` يحمل نص خطأ X الأصلي:

```json theme={"system"}
{
  "action": "post",
  "status": "error",
  "code": 272,
  "message": "There is an issue authorizing your X/Twitter account. Login to x.com to verify your account status and then try unlinking Twitter and relinking on the social accounts page.",
  "resolution": {
    "relink": true,
    "platform": "twitter"
  },
  "details": "The user used for authentication is suspended"
}
```

عند حضوره، يعكس `details` تلميح جانب X ويُعدّ الإشارة الأكثر موثوقية لأي حالة فرعية أدناه تنطبق.

**الحساب موقوف.** تسجيل الدخول إلى x.com يعرض إشعار إيقاف. **الإجراء:** اتصل بدعم X. لن تُعيد إعادة الربط الوصول حتى تُعيد X تفعيل الحساب.

**الحساب مقفل.** تسجيل الدخول إلى x.com يعرض تحدي فتح (CAPTCHA، تحقق هاتف، إلخ). **الإجراء:** أكمل تحدي الفتح على x.com، ثم أعد الطلب. لا يلزم إعادة الربط.

**عدم تطابق الهوية أو المفتاح.** حسابك X في وضع جيد على x.com، لكن مفاتيح المستهلك BYO تنتمي إلى تطبيق X Developer مختلف عن علامات OAuth المخزّنة وقت الربط. **الإجراء:** أعد ربط X ضمن Social Accounts وصرّح بنفس حساب X الذي يملك BYO Developer App.

**الرمز 416 — نفاد أرصدة X (HTTP 402)**

لا يوجد لحساب X Developer الخاص بك أي أرصدة API مُحمَّلة. تتطلب جميع استدعاءات X API أرصدة.

```json theme={"system"}
{
  "status": "error",
  "code": 416,
  "message": "Your enrolled account does not have any credits to fulfill this request. Purchase credits at console.x.com.",
  "platform": "twitter"
}
```

**الإجراء:** اذهب إلى [console.x.com](https://console.x.com) → Billing → Credits واشترِ أرصدة. حتى \$5 كافية لمئات استدعاءات API.

**الرمز 417 — أذونات تطبيق OAuth 1.0a (HTTP 403)**

لا يمتلك X Access Token الأذونات الصحيحة للعملية المطلوبة.

```json theme={"system"}
{
  "status": "error",
  "code": 417,
  "message": "Your client app is not configured with the appropriate oauth1 app permissions. Set app to 'Read and write and Direct message', then regenerate your Access Token.",
  "platform": "twitter"
}
```

قد ترى أيضًا ترويسة الاستجابة `x-access-level: read`، والتي تؤكد أن Access Token الخاص بك تم توليده بأذونات للقراءة فقط.

**الإجراء:** في X Developer Console، حدّث أذونات تطبيقك إلى **Read and write and Direct message**، ثم أعد توليد Access Token تحت Keys and tokens. سيرث الرمز الجديد الأذونات المُحدَّثة. راجع [دليل إعداد مفاتيح X BYO](/dashboard/connect-social-accounts/x-twitter-byo-keys#troubleshooting) للتفاصيل.

**الرمز 419 - بيانات اعتماد BYO مفقودة (HTTP 400)**

تتطلب عمليات X/Twitter بيانات اعتماد API الخاصة بـ BYO في ترويسات الطلب. يُعيد Ayrshare الرمز 419 عندما تكون كلتا الترويستين مفقودتين، وكذلك عندما يكون واحد فقط من الزوج موجودًا. تختلف سلسلة `message` بحسب أي ترويسة/ترويسات مفقودة.

عندما يكون كل من `X-Twitter-OAuth1-Api-Key` و`X-Twitter-OAuth1-Api-Secret` مفقودَين:

```json theme={"system"}
{
  "action": "x_credentials_required",
  "status": "error",
  "code": 419,
  "message": "X/Twitter operations require your own API credentials. Missing: X-Twitter-OAuth1-Api-Key, X-Twitter-OAuth1-Api-Secret. Please provide your X Developer App credentials in the request headers. See https://docs.ayrshare.com/x-api-setup for setup instructions.",
  "resolution": {
    "docs": "https://docs.ayrshare.com/x-api-setup"
  },
  "platform": "twitter"
}
```

عندما يكون واحد فقط من الزوج موجودًا (مثلًا، المفتاح دون السر):

```json theme={"system"}
{
  "action": "x_credentials_required",
  "status": "error",
  "code": 419,
  "message": "You provided X-Twitter-OAuth1-Api-Key but not X-Twitter-OAuth1-Api-Secret. OAuth 1.0a requires both. Missing: X-Twitter-OAuth1-Api-Secret. See https://docs.ayrshare.com/x-api-setup for setup instructions.",
  "resolution": {
    "docs": "https://docs.ayrshare.com/x-api-setup"
  },
  "platform": "twitter"
}
```

**الإجراء:** أرسل كلًا من `X-Twitter-OAuth1-Api-Key` و`X-Twitter-OAuth1-Api-Secret` على كل طلب مُوجَّه إلى X. إذا قدّمت أحدهما دون الآخر، فسيُرفض الطلب بنفس الرمز. راجع [مرجع ترويسات مفاتيح X BYO](/dashboard/connect-social-accounts/x-twitter-byo-keys#header-reference) للقائمة الكاملة للترويسات.

**الرمز 423 — OAuth القديم لـ X/Twitter لم يعد مدعومًا (HTTP 403)**

يُعاد عندما يعتمد طلب X/Twitter على مسار OAuth القديم (غير BYO)، الذي لم يعد مدعومًا. يتطلب وصول X API الآن بيانات اعتماد X Developer App الخاصة بك، المُقدَّمة عبر ترويسات الطلب.

```json theme={"system"}
{
  "status": "error",
  "code": 423,
  "message": "X (Twitter) API access now requires your own API credentials. Include X-Twitter-OAuth1-Api-Key and X-Twitter-OAuth1-Api-Secret headers in your request. Setup guide: https://docs.ayrshare.com/dashboard/connect-social-accounts/x-twitter-byo-keys",
  "platform": "twitter"
}
```

**الإجراء:** هيّئ X Developer App وأرسل ترويسات `X-Twitter-OAuth1-Api-Key` و`X-Twitter-OAuth1-Api-Secret` في كل طلب مُوجَّه إلى X. راجع [دليل إعداد مفاتيح X BYO](/dashboard/connect-social-accounts/x-twitter-byo-keys) لخطوات الإعداد الكاملة.

### أخطاء تحسين التسميات التوضيحية

**الرمز 441 — فشل تحسين التسمية التوضيحية (HTTP 502)**

يُعاد عندما يفشل تحسين تسمية توضيحية (مثل [`shortenLinks`](/apis/post/post)) لمنصة واحدة أو أكثر أثناء تحضير منشور. تظهر كل منصة متأثرة في مصفوفة `errors` مع `source: "handlePostAdditions"` و`code: 441`.

عندما تفشل بعض المنصات فقط، تُنشر المنصات الأخرى بنجاح وتظهر نتائجها في `postIds`. في تلك الحالة يكون `status` على المستوى الأعلى `"error"` لكن `postIds` غير فارغ — يجب أن يعامل العملاء `status` و`errors[]` كمتكاملَين وليس متنافيَين.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "platform": "twitter",
      "status": "error",
      "source": "handlePostAdditions",
      "code": 441,
      "message": "Caption enhancement failed for twitter. <underlying error>. Post was not sent to this platform."
    }
  ],
  "postIds": [
    {
      "status": "success",
      "id": "...",
      "postUrl": "...",
      "platform": "bluesky"
    }
  ],
  "id": "..."
}
```

إذا فشل **جميع** المنصات في التحسين، تكون الاستجابة `code: 441` على المستوى الأعلى مع HTTP `502` ولا يُنشأ أي منشور:

```json theme={"system"}
{
  "status": "error",
  "action": "post",
  "code": 441,
  "message": "Caption enhancement failed. See error details for affected platforms.",
  "errors": [
    {
      "platform": "twitter",
      "status": "error",
      "source": "handlePostAdditions",
      "code": 441,
      "message": "Caption enhancement failed for twitter. <underlying error>"
    }
  ]
}
```

**الإجراء:** إخفاقات تحسين التسميات التوضيحية عابرة عادةً (خدمة الاختصار أو التحسين الأساسية أعادت خطأً).

* **إذا كان `postIds` غير فارغ** (نشرت بعض المنصات بنجاح)، **لا** تعِد إرسال مجموعة المنصات الكاملة — سيؤدي ذلك إلى تكرار المنشور على المنصات الناجحة. بدلًا من ذلك، افحص `errors[]` لتحديد المنصات الفاشلة وأعد الطلب مع تلك المنصات فقط، أو اعتمد على تدفق إعادة المحاولة الآمن من التكرار لديك.
* **إذا كان `postIds` فارغًا أو مفقودًا** (فشل تام وقت الجدولة/النشر)، أعد إرسال الطلب الكامل بأمان.
* إذا استمر الفشل، أرسل المنشور بدون علامة التحسين (مثلًا، احذف `shortenLinks`) أو اتصل بالدعم.

### أخطاء جلب الوسائط / وصول الزاحف

**الرمز 440 — لم تتمكن الشبكة الاجتماعية من تنزيل الوسائط (HTTP 400)**

يُعاد عندما لا يستطيع زاحف نشر المنصة تنزيل `mediaUrl` الذي قدّمته — الأسباب الأكثر شيوعًا هي أن `robots.txt` أو قاعدة WAF / bot-fight تحجب الزاحف (مثل `facebookexternalhit` من Meta). تأتي سلسلة `details` من المنصة الأعلى، وغالبًا ما تكون نص الخطأ 2207052 من Meta/Instagram.

```json theme={"system"}
{
  "status": "error",
  "errors": [{
    "action": "post",
    "code": 440,
    "message": "The social network could not download media from this URL (for example Instagram/Meta error 2207052). Ensure the file is publicly reachable by the platform's crawlers (e.g. facebookexternalhit), via media bucket's robots.txt file, not only in a browser.",
    "details": "Media download has failed.: The media could not be fetched from the provided URI...",
    "platform": "instagram",
    "status": "error"
  }],
  "postIds": [],
  "id": "..."
}
```

**الرمز 138 — جلب وسائط Instagram محجوب (HTTP 400)**

الرمز الاحتياطي لإخفاقات جلب وسائط Instagram عندما تكون الاستجابة الأعلى أقل تحديدًا من تلك التي تُطلق الرمز 440. تحتوي سلسلة `details` عادةً على `"Restricted by robots.txt"` أو `"HTTP error code 403"`. يُستخدم الرمز 138 أيضًا لمشكلات نسبة العرض / التنسيق وأخطاء Instagram عامة أخرى، لذا يمكن التعرف على النسخة الخاصة بجلب الوسائط عبر سلسلة `details`.

```json theme={"system"}
{
  "status": "error",
  "errors": [{
    "retryAvailable": true,
    "status": "error",
    "code": 138,
    "details": "Media download has failed.: The media could not be fetched from the provided URI. Video download failed with: HTTP error code 403. Restricted by robots.txt",
    "action": "post",
    "platform": "instagram",
    "message": "Instagram Error: Instagram cannot process your post at this time. Please try your post again."
  }],
  "postIds": [],
  "id": "..."
}
```

**الرمز 379 — خطأ نشر Threads**

يُعاد عندما يفشل النشر على Threads. غالبًا ما يكون السبب هو نفس مشكلة جلب الوسائط الخاصة بالرموز 440 / 138 عند النشر على كلا المنصتين بنفس `mediaUrl`. لا تُعيد Threads API سلاسل تفاصيل، لذا يتطلب التشخيص عادةً التحقق من وجود 440 أو 138 مصاحب لـ Instagram في نفس النشر.

```json theme={"system"}
{
  "status": "error",
  "errors": [{
    "status": "error",
    "code": 379,
    "message": "Error posting to Threads.",
    "action": "post",
    "platform": "threads"
  }],
  "postIds": [],
  "id": "..."
}
```

**الإجراء:** راجع [Meta Media Crawler Blocked](/help-center/technical-support/meta_media_crawler_blocked) لاستكشاف الأخطاء الكامل، بما في ذلك مقتطفات `robots.txt` وأمر تحقق.

### حد معدل تحليلات Facebook

**الرمز 444 — حد معدل تحليلات صفحة Facebook (HTTP 429)**

يُعاد عندما تكون صفحة Facebook قد تجاوزت حد معدل Meta لكل صفحة على نقطة نهاية التحليلات. خطأ Meta الأساسي هو `80001` ("There have been too many calls to this Page account."). تبقى الصفحة مرتبطة ويستمر النشر بالعمل — تُقيَّد فقط تفرعات التحليلات لتلك الصفحة.

عند اكتشاف التقييد لمنشور واحد في استجابة [`/history/facebook`](/apis/history/history-platform) أو [analytics](/apis/analytics/social)، يحمل كل منشور متأثر `code: 444` عند `facebook.code` مع `errCode: 80001`:

```json theme={"system"}
{
  "status": "error",
  "facebook": {
    "action": "rate limit",
    "status": "error",
    "code": 444,
    "errCode": 80001,
    "message": "Facebook Page has hit its per-Page rate limit on the analytics endpoint. Please wait a few minutes and retry.",
    "pageId": "...",
    "id": "..."
  },
  "httpErrorCode": 444,
  "lastUpdated": "...",
  "nextUpdate": "..."
}
```

**الإجراء:** انتظر بضع دقائق وأعد المحاولة. تُحلّ نافذة حد المعدل لكل صفحة من Meta عادةً خلال ساعة دون أي إجراء على الصفحة. **لا** تطلب من المستخدم إعادة ربط الحساب — هذا تقييد عابر من جانب Meta وليس فشل تصريح.

<Warning>
  إذا كنت تتعامل مع هذه الحالة سابقًا كـ `code: 161` ("Facebook authorization error … unlink and re-link")، فحدّث تكاملك للتعرف على `code: 444` وأعد المحاولة مع تراجع تصاعدي بدلًا من بدء تدفق إعادة ربط. تم تصحيح تصنيف `161` في أبريل 2026.
</Warning>

### التحقق من هوية Meta

**الرمز 326 — مطلوب التحقق من هوية Meta (HTTP 403)**

يُعاد عندما تتطلب Meta تحققًا إضافيًا من الهوية للحساب المتصل قبل قبول الطلب. ينطبق ذلك عبر منصات Meta — Facebook وInstagram وFacebook Groups وThreads وMessenger. إعادة توصيل الحساب **لا** تحل هذا؛ يجب إكمال التحقق من جانب Meta.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "post",
      "status": "error",
      "code": 326,
      "message": "Meta is requesting additional identity verification for this account. Complete it at https://www.facebook.com/business-support-home and then retry. Reconnecting the account will not resolve this.",
      "platform": "facebook"
    }
  ]
}
```

**الإجراء:** اطلب من مالك الحساب إكمال التحقق من هوية Meta في [Meta Business Support](https://www.facebook.com/business-support-home)، ثم أعد الطلب. **لا** تطلب من المستخدم إعادة ربط الحساب — إعادة الربط لن تُزيل هذا المطلب.

### تقييد حساب Facebook

**الرمز 476 — تقييد حساب Facebook (HTTP 400)**

يُعاد عندما يفشل منشور إلى Facebook لأن Meta وضعت تقييدًا على الحساب (رموز Meta الفرعية `2424009` و`1404078`، أو صياغة التقييد من Meta عندما لا يحمل الخطأ رمزًا فرعيًا). هذا تقييد على مستوى الحساب، وليس عارضًا مؤقتًا في النشر — إنه **غير قابل للإعادة** ولا يحمل علامة `retryAvailable`. إعادة إرسال نفس المنشور لن تنجح حتى يُحل التقييد مع Meta. يبقى الحساب مرتبطًا بـ Ayrshare؛ لا يلزم إعادة ربط.

لا تُعيد Meta سبب التقييد المحدد عبر API، لذا يجب على العميل التحقق من صفحة حالة حساب Meta مباشرةً لرؤية السبب والاستئناف. عندما تقدم Meta نصها الخاص، يعرضه Ayrshare في حقل `details`. يُرسل Ayrshare أيضًا بريدًا إلكترونيًا إخطاريًا لمالك الحساب عند اكتشاف التقييد.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "post",
      "status": "error",
      "code": 476,
      "message": "There is a Facebook restriction on your account. Log in to Facebook, click your profile picture (top-right), open the Help section and select Account Status. Meta's support assistant there surfaces the specific restriction reason (which the API doesn't return) and lets you appeal.",
      "details": "...",
      "platform": "facebook"
    }
  ]
}
```

**الإجراء:** سجّل الدخول إلى Facebook، انقر على صورة ملفك الشخصي (أعلى اليمين)، افتح قسم Help وحدد **Account Status**. يعرض مساعد الدعم من Meta هناك سبب التقييد المحدد ويتيح لك الاستئناف. نظرًا لأن التقييد تفرضه Meta على مستوى الحساب، فإن هذا الرمز غير قابل للإعادة — لا تُبنِ منطق إعادة المحاولة التلقائية حوله؛ حُل التقييد مع Meta أولًا.

### أخطاء تحويل تنسيق الصورة

يحوّل Ayrshare تلقائيًا صور WebP وHEIC وAVIF إلى JPEG قبل النشر على المنصات التي لا تقبلها (Instagram وLinkedIn وTikTok وGoogle My Business وThreads وSnapchat لـ WebP؛ جميع المنصات لـ HEIC وAVIF). يعمل التحويل بشفافية وقت الإرسال. تُطلق الأخطاء الثلاثة أدناه فقط عندما لا يستطيع خط التحويل نفسه الإكمال؛ إذا كانت الصورة المصدر بالفعل بتنسيق مدعوم، فلن تُحاول أي تحويل ولن تظهر هذه الرموز.

**الرمز 450 — فشل تحويل تنسيق الصورة (HTTP 400)**

نُزّلت الصورة لكن لم يُتمكن من إعادة ترميزها كـ JPEG. الأسباب الأكثر شيوعًا ملف مصدر تالف، أو تنسيق داخلي غير متوقع داخل الحاوية، أو صورة تتجاوز الحد الأقصى لحجم التحويل.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "image conversion",
      "status": "error",
      "code": 450,
      "message": "The image format could not be converted. The source image may be corrupt or inaccessible. Please verify the media URL and try again.",
      "platform": "instagram"
    }
  ]
}
```

**الإجراء:** افتح `mediaUrl` المصدر مباشرةً في متصفح للتأكد من عرضه. إذا فُتح، أعد تصدير الصورة إلى JPEG أو PNG نظيف وأعد المحاولة.

**الرمز 451 — فشل تنزيل الصورة للتحويل (HTTP 400)**

لم يتمكن خط التحويل من جلب الصورة المصدر. الأسباب النموذجية تشمل استجابة 4xx/5xx من الأصل، أو انتهاء مهلة الشبكة، أو سلسلة إعادة توجيه تتجاوز حد القفزات، أو URL يُحل إلى عنوان غير عام (محجوب بحارس SSRF). يحمل حقل `details`، عند حضوره، سلسلة السبب الأساسي.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "image conversion",
      "status": "error",
      "code": 451,
      "message": "The image could not be downloaded for format conversion.",
      "details": "HTTP 403 from origin",
      "platform": "linkedin"
    }
  ]
}
```

**الإجراء:** تأكد من أن `mediaUrl` قابل للوصول عامًا (بدون تصريح، بدون حجوبات `robots.txt`، يُحل عبر HTTPS). إذا أعاد الـ URL توجيهًا، تأكد من أن الوجهة النهائية عامة أيضًا وليست على شبكة خاصة.

**الرمز 452 — فشل تحميل الصورة المُحوَّلة (HTTP 500)**

نجح التحويل لكن Ayrshare لم يتمكن من تخزين JPEG المُحوَّل مؤقتًا في حاوية التخزين المؤقتة. هذا فشل داخلي في جانب Ayrshare وقابل للإعادة.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "image conversion",
      "status": "error",
      "code": 452,
      "message": "An error occurred uploading the converted image. Please try again.",
      "platform": "tiktok"
    }
  ]
}
```

**الإجراء:** أعد محاولة المنشور. إذا استمر الخطأ عبر عدة محاولات، اتصل بالدعم مع `mediaUrl` والطابع الزمني التقريبي.

### أخطاء تحميل YouTube العابرة

توفر رموز الأخطاء التالية إشارات محددة لإخفاقات تحميل YouTube العابرة عادةً والآمنة للإعادة. تتضمن كلتا الاستجابتين `retryAvailable: true`، بحيث يمكن للتكاملات التفرّع على تلك القيمة المنطقية بدلًا من رمز حالة HTTP.

معظم استجابات `code: 176` السابقة لتحميلات YouTube تُوَّجّه الآن إلى **453** (انتهاء مهلة عابر) أو **454** (خدمة غير متوفرة عابرة)، وكلاهما مع `retryAvailable: true`. إذا كان تكاملك يُصفّي على HTTP 500 لإعادة تحميلات YouTube، فبدّل إلى التصفية على حقل `retryAvailable` في جسم الاستجابة.

**الرمز 453 — انتهت مهلة تحميل YouTube (HTTP 504)**

يُعاد عندما تنتهي مهلة خط استيعاب YouTube من Google أثناء قبول التحميل. عادةً ما يكون هذا عابرًا ويحل نفسه في غضون دقيقة أو دقيقتين.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "post",
      "status": "error",
      "code": 453,
      "message": "YouTube upload timed out (Google ingest). This is typically transient; please retry in 1–2 minutes.",
      "retryAvailable": true,
      "platform": "youtube"
    }
  ]
}
```

**الإجراء:** أعد محاولة المنشور بعد 1-2 دقيقة مع تراجع تصاعدي. تفرّع على حقل `retryAvailable` في جسم الاستجابة بدلًا من حالة HTTP لاكتشاف الإخفاقات القابلة للإعادة. يمكنك استخدام نقطة نهاية [retry post](/apis/post/retry-post) لإعادة إرسال نفس الحمولة.

**الرمز 454 — خدمة تحميل YouTube غير متوفرة مؤقتًا (HTTP 503)**

يُعاد عندما تعيد نقطة نهاية تحميل YouTube حالة 5xx، أو عندما يُعاد تعيين الاتصال بـ YouTube أو تنتهي مهلته على مستوى المقبس (`ECONNRESET`، `ETIMEDOUT`، `ESOCKETTIMEDOUT`). هذه الحالات عابرة.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "post",
      "status": "error",
      "code": 454,
      "message": "YouTube upload service temporarily unavailable. Please retry.",
      "retryAvailable": true,
      "platform": "youtube"
    }
  ]
}
```

**الإجراء:** أعد محاولة المنشور مع تراجع تصاعدي. تفرّع على حقل `retryAvailable` في جسم الاستجابة بدلًا من حالة HTTP لاكتشاف الإخفاقات القابلة للإعادة. يمكنك استخدام نقطة نهاية [retry post](/apis/post/retry-post) لإعادة إرسال نفس الحمولة.

### أخطاء صور YouTube المصغّرة الرمز 307

يُعاد الرمز `307` عندما لا يمكن تطبيق `thumbNail` مخصص لـ YouTube. عندما ينشر الفيديو نفسه بنجاح، فإن هذا **لا** يُفشل المنشور — تبقى نتيجة YouTube بحالة `status: "success"` ويظهر الفشل بشكل إضافي في مصفوفة `warnings` (`feature: "thumbnail"`، `code: 307`). يُحتفظ بالكائن الفرعي القديم `thumbnail` للتوافق العكسي.

السبب الأكثر شيوعًا هو **قناة YouTube غير مُتحقّق منها**. عندما لم تُكمل قناة التحقق الهاتفي، يُعيد YouTube `403` أعلى مع الرسالة العامة `"The authenticated user doesn't have permissions to upload and set custom video thumbnails"`. تبدو تلك الصياغة مثل مشكلة OAuth، لكنها عمليًا مشكلة تحقق دائمًا تقريبًا، لذا تحقق من القناة أولًا. إعادة ربط حساب YouTube هو سبب ثانوي.

```json theme={"system"}
{
  "status": "success",
  "id": "<videoId>",
  "thumbnail": {
    "action": "post",
    "status": "error",
    "code": 307,
    "message": "Your YouTube channel must be verified to set a custom thumbnail. Verify your channel at https://www.youtube.com/verify (phone verification). If your channel is already verified, try unlinking and re-linking your YouTube account to restore permissions.",
    "details": "<upstream message>"
  },
  "warnings": [
    {
      "feature": "thumbnail",
      "code": 307,
      "message": "Your YouTube channel must be verified to set a custom thumbnail. Verify your channel at https://www.youtube.com/verify (phone verification). If your channel is already verified, try unlinking and re-linking your YouTube account to restore permissions.",
      "details": "<upstream message>"
    }
  ]
}
```

يتحقق Ayrshare أيضًا من الصورة المصغّرة قبل النشر حيثما أمكن: يجب أن يكون الملف **PNG أو JPG/JPEG**، و**2 ميجابايت أو أقل**، ومُقدَّمًا من **URL يمكن الوصول إليه**.

**لا** تُفشل مشكلة الصورة المصغّرة المنشور أبدًا — يُنشر الفيديو دائمًا ويظهر الفشل دائمًا كإدخال `warnings` غير قاتل (يبقى `status` على المستوى الأعلى `"success"`). يصح ذلك بغض النظر عن متى تُكتشف المشكلة:

* **مُلتقطة قبل التحميل.** عندما يستطيع التحقق قبل النشر أن يجزم أن الصورة المصغّرة غير صالحة (نوع ملف خاطئ، أكثر من 2 ميجابايت مؤكدًا، أو URL غير قابل للوصول)، يتخطى Ayrshare الصورة المصغّرة، لا يزال ينشر الفيديو، ويُبلّغ عن السبب الدقيق في `warnings` — لذا تتجنب محاولة تحميل محكوم عليها بالفشل وتحصل على رسالة أوضح من تلك التي يُعيدها المزود.
* **مُلتقطة بعد التحميل.** عندما يمكن اكتشاف الفشل فقط بمجرد أن يعالج YouTube الطلب (مثلًا 403 القناة غير المُتحقّق منها، أو 413 لصورة كبيرة الحجم)، فإن الفيديو مباشر بالفعل ويظهر الفشل في نفس مصفوفة `warnings`.

في كلتا الحالتين، تبدو الاستجابة مثل مثال `status: "success"` + `warnings` الموضّح سابقًا في هذا القسم.

**الإجراء:** تحقق من قناة YouTube الخاصة بك على [https://www.youtube.com/verify](https://www.youtube.com/verify) (تحقق هاتفي). إذا كانت قناتك مُتحقّقة بالفعل ولا تزال الصور المصغّرة تفشل، فألغِ ربط حساب YouTube وأعد ربطه في [Social Accounts](https://app.ayrshare.com/social-accounts) وامنح جميع الأذونات. راجع [YouTube Thumbnail Not Applied (Unverified Channel)](/help-center/technical-support/youtube_thumbnail_unverified_channel) لدليل استكشاف الأخطاء الكامل.

### أخطاء النشر على Reddit

**الرمز 442 — Subreddit محظور على Reddit (HTTP 400)**

يُعاد عندما يُحظر الحساب من النشر على الـ subreddit المستهدف. **لا** يمكن إعادة المحاولة — لن ينجح المنشور إذا أُعيد إرساله كما هو. تتضمن الرسالة اسم الـ subreddit المتأثر (مثل `r/news`).

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "post",
      "status": "error",
      "code": 442,
      "message": "You've been banned from posting to r/news. This post will not succeed on retry — remove it from your target subreddits.",
      "platform": "reddit"
    }
  ]
}
```

**الإجراء:** أزل الـ subreddit المحظور من الـ subreddits المستهدفة. إعادة محاولة المنشور دون تغيير لن تنجح.

**الرمز 443 — كلمة غير مسموح بها في عنوان Reddit (HTTP 400)**

يُعاد عندما يرفض subreddit المنشور لأن عنوانه يحتوي على كلمة غير مسموح بها. عدّل العنوان قبل إعادة المحاولة — إعادة الإرسال كما هو لن تنجح. تتضمن الرسالة اسم الـ subreddit المتأثر (مثل `r/news`).

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "post",
      "status": "error",
      "code": 443,
      "message": "r/news rejected this post because the title contains a disallowed word. Edit the title before retrying — retrying as-is will not succeed.",
      "platform": "reddit"
    }
  ]
}
```

**الإجراء:** عدّل عنوان المنشور لإزالة الكلمة غير المسموح بها، ثم أعد المحاولة.

### أخطاء الاعتدال

**الرمز 438 — مدخل الاعتدال مرفوض (HTTP 400)**

يُعاد بواسطة [`POST /validate/moderation`](/apis/post/post) عندما يرفض مزود الذكاء الاصطناعي المدخل المُقدَّم — على سبيل المثال، نوع ملف غير مدعوم. هذه مشكلة مدخلات مع الطلب، وليست فشل معالجة عابر.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "moderation",
      "status": "error",
      "code": 438,
      "message": "There was an issue with the AI processing."
    }
  ]
}
```

**الإجراء:** تحقق من أن مدخل الاعتدال صالح ويستخدم نوع ملف مدعوم، ثم أعد الإرسال.

<Note>
  قارن الرمز 438 مع **الرمز 331**. يغطي الرمز 331 نفس سيناريو الاعتدال لكنه يمثّل فشل معالجة حقيقيًا من جانب المزود (HTTP 500، الرسالة "There was an issue with the AI processing. Please try again."). الرمز 331 فشل عابر من جانب الخادم يمكنك إعادة محاولته، بينما يشير الرمز 438 إلى أن المدخل نفسه رُفض ويجب تصحيحه قبل إعادة المحاولة.
</Note>

### أخطاء تحليلات LinkedIn

**الرمز 475 — أعد ربط ملف LinkedIn للحصول على التحليلات (HTTP 403)**

يُعاد بواسطة [`POST /analytics/post`](/apis/analytics/post) و[`POST /analytics/social`](/apis/analytics/social) لملف LinkedIn شخصي (عضو) رُبط قبل شحن تحليلات الأعضاء. تفتقر هذه الملفات إلى نطاقات تحليلات أعضاء LinkedIn (`r_member_postAnalytics`، `r_member_profileAnalytics`)، لذا يرفض LinkedIn طلب التحليلات. لا يتأثر النشر.

```json theme={"system"}
{
  "action": "authorization",
  "status": "error",
  "code": 475,
  "message": "Your LinkedIn profile is missing the analytics permissions. Please re-link your LinkedIn profile to enable analytics.",
  "resolution": {
    "relink": true,
    "platform": "linkedin"
  }
}
```

**الإجراء:** اطلب من مالك الحساب إعادة ربط ملف LinkedIn الخاص به في [Social Accounts](https://app.ayrshare.com/social-accounts) لمنح نطاقات التحليلات الجديدة، ثم أعد محاولة طلب التحليلات. بعد إعادة الربط، انتظر بضع دقائق قبل أن يُمسح الخطأ: يُخزّن Ayrshare هذا الخطأ مؤقتًا لفترة قصيرة كما يُخزّن LinkedIn أيضًا أذونات الرمز، لذا يمكن لملف تمت إعادة ربطه أن يستمر في إعادة الرمز `475` لمدة تصل إلى \~5-10 دقائق قبل نجاح التحليلات.

### أخطاء تعليقات TikTok

**الرمز 288 — تعليق TikTok مؤجل / المنشور لا يزال في المعالجة (HTTP 400)**

يعالج TikTok الفيديوهات بشكل غير متزامن، لذا فإن `id` للمنشور المُنشور حديثًا هو `"pending"` حتى يحل webhook `post.publish.publicly_available` من TikTok معرّف الفيديو الحقيقي. يُرفض طلب [get-comments](/apis/comments/get-comments) أو تعليق أو رد على منشور لا يزال في المعالجة (أو `id` هو `"failed"`) قبل أي استدعاء لـ TikTok ويُعاد الرمز 288 بدلًا من فشل عام.

```json theme={"system"}
{
  "status": "error",
  "errors": [
    {
      "action": "get",
      "status": "error",
      "code": 288,
      "message": "TikTok video is still processing; the action is deferred until the post is live.",
      "platform": "tiktok"
    }
  ]
}
```

**الإجراء:** انتظر حتى ينتهي TikTok من المعالجة، ثم أعد المحاولة. استمع إلى [`tikTokPublished` Scheduled Action webhook](/apis/webhooks/actions#scheduled-action) أو استعلم [/history](/apis/history/overview) حتى يصبح `id` المنشور معرّف الفيديو الرقمي المحلول. يُنشر [تعليق أول](/apis/post/overview#first-comment) تلقائيًا بمجرد أن يُحل المنشور، لذا لا يلزم إعادة محاولته. لمنشور `"failed"` بدلًا من ذلك تُشير الرسالة إلى أن الفيديو فشل في النشر ولن يُنفَّذ الإجراء.

### ترجمة رسالة الخطأ

يمكن ترجمة رسالة استجابة خطأ API تلقائيًا إلى اللغة التي تختارها.
هذا مفيد إذا أردت عرض الخطأ مباشرةً لمستخدمك بلغته المفضلة.

راجع هنا إذا أردت [اختيار لغة صفحة الربط الاجتماعي](/multiple-users/manage-user-profiles#set-language-for-the-social-linking-page).

في الترويسة، ضمّن:

```json theme={"system"}
"Translate-Error-Message": "Language_Code"
```

حيث `Language_Code` هو أحد [رموز اللغات](/iso-codes/language) المتاحة.

على سبيل المثال، سيؤدي التالي إلى ترجمة الخطأ إلى الفرنسية.

```json theme={"system"}
"Translate-Error-Message": "fr" // Translate to French
```

سيكتشف نظامنا تلقائيًا لغة رسالة الخطأ.
