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

# سجل المنشورات

> سجل منشورات Ayrshare

export const XByoNotice = () => <Info>
  <strong>Targeting X/Twitter?</strong> Starting March 31, 2026, all X operations require your own API credentials. After linking X via OAuth, include these 2 headers in your request:
  <br /><br />
  <code>X-Twitter-OAuth1-Api-Key</code> — Your API Key (Consumer Key)<br />
  <code>X-Twitter-OAuth1-Api-Secret</code> — Your API Key Secret (Consumer Secret)
  <br /><br />
  <strong>One-time setup per Ayrshare account.</strong> You create one X Developer App and reuse the same API Key and Secret across every sub-profile / end-user you link. You do <em>not</em> create a new app per customer.
  <br /><br />
  Not linked yet? See the <a href="/dashboard/connect-social-accounts/x-twitter-byo-keys">full setup guide</a> to connect your X account.
  <br /><br />
  Your keys are never logged or stored by Ayrshare.
</Info>;

export const PlansAvailable = ({plans = [], maxPackRequired}) => {
  let displayPlans = plans;
  if (plans && plans.length === 1) {
    const lowerCasePlan = plans[0].toLowerCase();
    if (lowerCasePlan === "business") {
      displayPlans = ["Launch", "Business", "Enterprise"];
    } else if (lowerCasePlan === "premium") {
      displayPlans = ["Premium", "Launch", "Business", "Enterprise"];
    }
  }
  return <Note>
Available on {displayPlans.length === 1 ? "the " : ""}
{displayPlans.join(", ").replace(/\b\w/g, l => l.toUpperCase())}{" "}
{displayPlans.length > 1 ? "plans" : "plan"}.

{maxPackRequired && <span onClick={() => window.open('https://www.ayrshare.com/docs/additional/maxpack', '_self')} className="flex items-center mt-2 cursor-pointer">
 <span className="px-1.5 py-0.5 rounded text-sm" style={{
    backgroundColor: '#C264B6',
    color: 'white',
    fontSize: '12px'
  }}>
   Max Pack required
 </span>
</span>}
</Note>;
};

export const HeaderAPI = ({noProfileKey, profileKeyRequired}) => <>
    <ParamField header="Authorization" type="string" required>
      <a href="/apis/overview#authorization">API Key</a> of the Primary Profile.
      <br />
      <br />
      Format: <code>Authorization: Bearer API_KEY</code>
    </ParamField>
    {!noProfileKey && (profileKeyRequired ? <ParamField header="Profile-Key" type="string" required>
          <a href="/apis/overview#profile-key-format">Profile Key</a> of a User Profile.
          <br />
          <br />
          Format: <code>Profile-Key: PROFILE_KEY</code>
        </ParamField> : <ParamField header="Profile-Key" type="string">
          <a href="/apis/overview#profile-key-format">Profile Key</a> of a User Profile.
          <br />
          <br />
          Format: <code>Profile-Key: PROFILE_KEY</code>
        </ParamField>)}
  </>;

<PlansAvailable plans={["premium"]} maxPackRequired={false} />

<XByoNotice />

احصل على سجل بالمنشورات المُرسَلة عبر Ayrshare، بترتيب تنازلي (من الأحدث إلى الأقدم).

يمكنك عبر نقطة النهاية هذه استرجاع المنشورات من نطاق تاريخي محدد، أو حسب الحالة، أو الشبكة الاجتماعية، أو آخر n يومًا.

قيم حقول `status` في السجل:

<ul class="custom-bullets">
  <li>
    `awaiting approval`: منشورات في انتظار الموافقة عبر [سير عمل الموافقة](/apis/post/overview#approval-workflow).
  </li>

  <li>
    `deleted`: تم حذف المنشور. ملاحظة: تُعاد المنشورات المحذوفة فقط عند استخدام مُصفّي الاستعلام status. راجع أدناه.
  </li>

  <li>`error`: حدث خطأ مع شبكة اجتماعية واحدة أو أكثر.</li>
  <li>`paused`: منشور مجدول تم إيقافه مؤقتًا.</li>
  <li>`pending`: لم تتم معالجة المنشور بعد. عادةً منشور مجدول.</li>
  <li>`success`: أُرسل المنشور بنجاح إلى جميع الشبكات الاجتماعية.</li>
</ul>

معلومات إضافية:

<ul class="custom-bullets">
  <li>
    يُعاد [معرّف منشور Ayrshare](/apis/overview#ayrshare-post-id) في حقل `id` بالاستجابة.
  </li>

  <li>
    لاسترجاع منشورات نشأت خارج Ayrshare، مثل المنشورات المُنشأة يدويًا مباشرةً على الشبكة الاجتماعية، استخدم نقطة نهاية [history platform](/apis/history/history-platform).
  </li>

  <li>
    إذا كان مطلوبًا منشور فردي فقط، فاستخدم نقطة نهاية [سجل المنشور حسب المعرّف](/apis/history/get-history-id).
  </li>

  <li>
    تُخزَّن نتائج JSON لنقطة نهاية السجل مؤقتًا لمدة دقيقة واحدة إذا كانت `limit` أكبر من القيمة الافتراضية 25.
  </li>
</ul>

## معاملات الترويسة

<HeaderAPI />

## معاملات الاستعلام

<ParamField query="limit" type="number" default={25}>
  يُعيد آخر <em>n</em> منشور. مثلًا، إذا أردت فقط أحدث منشور، اضبط `limit=1`.
  إن لم يُقدَّم، فسيُعيد جميع السجلات ضمن `lastDays`.

  الافتراضي: `25` منشورًا. القيمة القصوى: `1000`.
</ParamField>

<ParamField query="platforms" type="array">
  التصفية حسب منصات الشبكات الاجتماعية. قيم المنصات: `bluesky` و`facebook` و`gmb` و`instagram`
  و`linkedin` و`pinterest` و`reddit` و`snapchat` و`telegram` و`threads` و`tiktok` و`twitter`
  و`youtube`. ملاحظة: تستخدم منطق `OR`: `["facebook", "instagram"]` يُعيد منشورات من أيٍّ منهما.
</ParamField>

<ParamField query="startDate" type="string">
  يُعيد المنشورات من تاريخ البداية هذا وشاملًا له. تاريخ البداية للسجل بتنسيق ISO 8601.
  على سبيل المثال، استخدم التنسيق `YYYY-MM-DDThh:mm:ssZ` وأرسل بصيغة `2026-07-08T12:30:00Z`. راجع
  [utctime](https://www.utctime.net/) لمزيد من الأمثلة.
</ParamField>

<ParamField query="endDate" type="string">
  يُعيد المنشورات حتى تاريخ النهاية هذا وشاملًا له. تاريخ النهاية للسجل بتنسيق ISO 8601. على سبيل
  المثال، استخدم التنسيق `YYYY-MM-DDThh:mm:ssZ` وأرسل بصيغة `2026-07-08T12:30:00Z`. راجع
  [utctime](https://www.utctime.net/) لمزيد من الأمثلة.
</ParamField>

<ParamField query="lastDays" type="number" default={30}>
  يُعيد منشورات آخر n يومًا بناءً على تاريخ النشر، أي `scheduleDate`. الافتراضي 30 يومًا.

  <ul class="custom-bullets">
    <li>سيتم تجاهل `lastDays` إذا تم توفير `startDate` و`endDate`.</li>
    <li>إذا كانت القيمة صفرًا 0 فسيُعيد سجل المنشورات بالكامل.</li>
    <li>إذا كانت القيمة أكبر من 0، فسيُعيد منشورات آخر n يومًا.</li>

    <li>
      مثلًا، `lastDays=5` يُعيد منشورات آخر 5 أيام و`lastDays=0` يُعيد كل المنشورات
      وفق `limit`.
    </li>
  </ul>
</ParamField>

<ParamField query="status" type="string">
  التصفية حسب الحالة الحالية للمنشور. القيم الصالحة: `success` و`error` و`processing` و`pending` و`paused` و`deleted` و`awaiting approval`.
  تشير `processing` إلى أن المنشور يجري إرساله حاليًا. تشير `pending` إلى أن المنشور مُجدوَل للنشر في تاريخ لاحق.

  <Info>
    لا تُعاد المنشورات المحذوفة افتراضيًا. تُعاد فقط عند تعيين مُصفّي الاستعلام status إلى `status=deleted`.
  </Info>
</ParamField>

<ParamField query="type" type="string">
  نوع المنشور المراد استرجاعه، إما منشورات أُرسلت فورًا أو منشورات مجدولة باستخدام حقل
  `scheduleDate`. القيم: `immediate` أو `scheduled`.
</ParamField>

<ParamField query="autoRepostId" type="string">
  عند إنشاء إعادة نشر تلقائية، يُخصَّص معرّف لتتبع تلك السلسلة من المنشورات.
  استرجع المنشورات حسب معرّف إعادة النشر التلقائية أو استخدم القيمة `all` للحصول على جميع عمليات إعادة النشر التلقائية.
</ParamField>

<RequestExample>
  ```bash cURL theme={"system"}
  curl \
  -H "Authorization: Bearer API_KEY" \
  -X GET https://api.ayrshare.com/api/history?startDate=2025-01-01T12:30:00Z&endDate=2025-03-01T12:30:00&limit=100
  ```

  ```javascript JavaScript theme={"system"}
  const API_KEY = "API_KEY";

  fetch("https://api.ayrshare.com/api/history?startDate=2025-01-01T12:30:00Z&endDate=2025-03-01T12:30:00&limit=100", {
        method: "GET",
        headers: {
          "Authorization": `Bearer ${API_KEY}`
        }
      })
        .then((res) => res.json())
        .then((json) => console.log(json))
        .catch(console.error);
  ```

  ```python Python theme={"system"}
  import requests

  headers = {'Authorization': 'Bearer API_KEY'}

  r = requests.get('https://api.ayrshare.com/api/history?startDate=2025-01-01T12:30:00Z&endDate=2025-03-01T12:30:00&limit=100', headers=headers)

  print(r.json())
  ```

  ```php PHP theme={"system"}
  <?php

  $apiUrl = 'https://api.ayrshare.com/api/history?startDate=2025-01-01T12:30:00Z&endDate=2025-03-01T12:30:00&limit=100';
  $apiKey = 'API_KEY';  // Replace 'API_KEY' with your actual API key

  $headers = [
      'Content-Type: application/json',
      'Authorization: Bearer ' . $apiKey,
  ];

  $curl = curl_init($apiUrl);
  curl_setopt_array($curl, [
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_HTTPHEADER => $headers
  ]);

  $response = curl_exec($curl);

  if ($response === false) {
      echo 'Curl error: ' . curl_error($curl);
  } else {
      echo json_encode(json_decode($response), JSON_PRETTY_PRINT);
  }

  curl_close($curl);

  ```

  ```csharp C# theme={"system"}
  using System;
  using System.Net.Http;
  using System.Threading.Tasks;

  namespace HistoryGETRequest_csharp
  {
  class History
  {
      static async Task Main(string[] args)
      {
          string API_KEY = "API_KEY";
          string url = "https://api.ayrshare.com/api/history?startDate=2025-01-01T12:30:00Z&endDate=2025-03-01T12:30:00&limit=100";

          using (var client = new HttpClient())
          {
              client.DefaultRequestHeaders.Add("Authorization", "Bearer " + API_KEY);

              try
              {
                  var response = await client.GetStringAsync(url);
                  Console.WriteLine(response);
              }
              catch (HttpRequestException ex)
              {
                  Console.WriteLine($"Error: {ex.Message}");
              }
          }
      }
  }
  }
  ```
</RequestExample>

<ResponseExample>
  ```json 200: نجاح theme={"system"}
  {
    "history": [
      {
          "errors": [],
          "post": "This is the  post I sent",
          "platforms": [
              "twitter",
              "facebook"
          ],
          "postIds": [
              {
                  "status": "success",
                  "id": "1288968500063775749",    // Twitter Social Post ID
                  "platform": "twitter"
              },
              {
                  "id": "104923907983682_108683297607743", // Facebook Social Post ID
                  "status": "success",
                  "platform": "facebook"
              }
          ],
          "urls": [],
          "type": "now",
          "notes": "Approved by John Smith",  // Reference notes set via /post
          "created": "2022-05-20T17:25:06Z",
          "status": "deleted",
          "scheduleDate": {    // In a future release changed to "scheduleDate": "2020-11-05T12:21:29Z"
              "_seconds": 1604578889,
              "_nanoseconds": 211000000,
              "utc": "2020-11-05T12:21:29Z"
          },
          "id": "rhn6u7wwz2WxGv6MZGK9" // Ayrshare Top-Level Post ID
      },
      {
          "status": "success",
          "platforms": [
              "twitter",
              "facebook"
          ],
          "created": "2022-05-20T17:25:06Z",
          "post": "Sometimes we need to take a break for lunch.",
          "scheduleDate": {    // In a future release changed to "scheduleDate": "2020-11-05T12:21:29Z"
              "_seconds": 1604578889,
              "_nanoseconds": 211000000,
              "utc": "2020-11-05T12:21:29Z"
          },
          "type": "now",
          "postIds": [
              {
                  "platform": "twitter",
                  "id": "1288890036000983105", // Twitter Social Post ID
                  "status": "success"
              },
              {
                  "id": "104923907983682_108329970009742", // Facebook Social Post ID
                  "status": "success",
                  "platform": "facebook",
                  "isVideo": true // Video post
              }
          ],
          "errors": [],
          "urls": [],
          "id": "wWIY0OEirdNeYSJYm1Xa" // Ayrshare Post ID
      },
      {   // Awaiting approval post - Approved by user
          "approved": true,
          "approvedBy": "9abf1426d6ce9122ef11c7222e1",
          "approvedDate": "2025-06-06T12:28:12Z",
          "created": "2025-06-06T12:27:56Z",
          "errors": [],
          "id": "sujQsrXtroJU0NEOlY38",
          "mediaUrls": [],
          "platforms": [
              "twitter"
          ],
          "post": "I failed my way to success. - Thomas Edison",
          "postIds": [
              {
                  "status": "success",
                  "id": "193096515330813",
                  "postUrl": "https://twitter.com/RetiretyHQ/status/19309651533081",
                  "platform": "twitter"
              }
          ],
          "profileTitle": "Primary Profile",
          "refId": "9abf1426d6ce9122ef11c7222e1",
          "requiresApproval": true,
          "scheduleDate": "2025-06-06T12:27:56Z",
          "shortenLinks": false,
          "status": "success",
          "type": "now"
      },
      {   // Awaiting approval post - Rejected by user
          "approved": false,
          "created": "2025-06-06T12:23:48Z",
          "id": "XL5xHeNK8HGTg07qxzmd",
          "mediaUrls": [],
          "platforms": [
              "twitter"
          ],
          "post": " Honesty is the first chapter in the book of wisdom. - Thomas Jefferson",
          "profileTitle": "Primary Profile",
          "refId": "9abf1426d6ce9122ef11c72bd62eddw2",
          "rejectedBy": "9abf1426d6ce9122ef11c7222e1",
          "rejectedDate": "2025-06-06T12:23:58Z",
          "requiresApproval": true,
          "scheduleDate": "2025-06-06T12:23:48Z",
          "shortenLinks": false,
          "status": "awaiting approval",
          "type": "now"
      }
          
     ],
      "refId": "9abf1426d6ce9122ef11c72bd62e59807c5cc083",
      "count": 100,
      "lastUpdated": "2025-04-05T22:44:14.209Z",
      "nextUpdate": "2025-04-05T22:45:14.209Z"
  }
  ```

  ```json 400: لم يُعثر على السجل theme={"system"}
  {
    "action": "history",
    "status": "error",
    "code": 221,
    "message": "History not found for the past 30 days. Please see the docs on how to retrieve additional history. .../ayrshare.com/rest-api/endpoints/history#list-history-of-sent-and-scheduled-posts"
  }
  ```
</ResponseExample>
