> ## 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.

# تعيين الجدولة التلقائية

> أعد جدولة تلقائية للنشر بتوفير أوقات الإرسال

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} />

أعد جدولة نشر تلقائية بتوفير أوقات الإرسال. سيُرسَل المنشور تلقائيًا في أول وقت متاح. إذا لم يعد هناك أوقات متاحة اليوم، فسيُستخدم أول وقت متاح غدًا، وهكذا.

<Note>
  إذا كنت تريد فقط جدولة منشور لتاريخ مستقبلي، يُرجى مراجعة المعامل `scheduleDate`
  في [/post](/apis/post/post).
</Note>

استخدم الجدولة التلقائية بضبط معامل autoSchedule في /post على `true`، وحدّد `title` إذا رغبت في استخدام جدول معيّن. مثال: عيّن الأوقات إلى 13:05Z و20:14Z بتوقيت UTC، وضع `autoSchedule: true` في المنشور. سيُجدوَل المنشور في أول وقت متاح بين 13:05Z أو 20:14Z.

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

<HeaderAPI />

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

<ParamField body="schedule" type="array" required>
  مصفوفة من السلاسل النصية للأوقات المجدولة للنشر التلقائي. تُعامَل المصفوفة كمجموعة، فتُزال التكرارات.

  التنسيق: ISO-8601 UTC. مثال: `["13:05Z", "22:14Z"]`. غير مطلوب إذا تم توفير `setStartDate`.
</ParamField>

<ParamField body="title" type="string" default="default">
  يمكنك إنشاء عدة جداول نشر مختلفة بتخصيص عنوان فريد لكل واحد. يجب أن يحتوي العنوان على أحرف أبجدية رقمية فقط — الرموز الخاصة مثل `*` و`~` و`/` و`[` أو `]` غير مسموح بها.

  إذا حدّدت `title` في /post عبر autoScheduleTitle، فسيُستخدم ذلك الجدول.
</ParamField>

<ParamField body="setStartDate" type="string">
  عيّن تاريخ بدء محددًا لبدء الجدولة التلقائية، وقدّم تاريخ ووقتًا بتنسيق ISO-8601 UTC. مثال: `2021-07-08T12:30:00Z`. سيُطبَّق وقت البدء على "title" المقدَّم أو سيستخدم العنوان الافتراضي إن لم يُقدَّم.

  ستصدر المنشورات الجديدة اعتبارًا من تاريخ البدء فصاعدًا. لا تتأثر المنشورات المجدولة مسبقًا.
</ParamField>

<ParamField body="daysOfWeek" type="array" default={[0,6]}>
  حدّد أي أيام الأسبوع ينبغي إرسال المنشور فيها. القيم من 0 إلى 6 (الأحد – السبت). على سبيل المثال `[1, 3]` ستنشر المنشورات فقط أيام الاثنين والأربعاء.
</ParamField>

<ParamField body="excludeDates" type="array">
  استبعد تواريخ معينة من الجدولة التلقائية. مثال: `["2026-01-01"]` لاستبعاد رأس السنة.

  ملاحظة: تُستبعَد فقط المنشورات التي تُجدوَل تلقائيًا بعد تعيين `excludeDates`.
</ParamField>

<RequestExample>
  ```javascript cURL theme={"system"}
  curl \
  -H "Authorization: Bearer API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"schedule": ["13:05Z", "20:14Z"], "title": "Instagram Schedule"}' \
  -X POST https://api.ayrshare.com/api/auto-schedule/set
  ```

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

  fetch("https://api.ayrshare.com/api/auto-schedule/set", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Authorization: `Bearer ${API_KEY}`
    },
    body: JSON.stringify({
      schedule: ["13:05Z", "20:14Z"], // required
      title: title // optional
    })
  })
    .then((res) => res.json())
    .then((json) => console.log(json))
    .catch(console.error);
  ```

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

  $API_KEY = "API_KEY";

  $data = [
  'schedule' => ["13:05Z", "20:14Z"], // required
  'title' => "Instagram Schedule" // optional
  ];

  $ch = curl_init();

  curl_setopt_array($ch, [
      CURLOPT_URL => "https://api.ayrshare.com/api/auto-schedule/set",
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_POSTFIELDS => json_encode($data),
  CURLOPT_HTTPHEADER => [
  "Content-Type: application/json",
  "Authorization: Bearer " . $API_KEY
  ]
  ]);

  $response = curl_exec($ch);

  if (curl_errno($ch)) {
      echo 'Error: ' . curl_error($ch);
  } else {
  $json = json_decode($response, true);
  print_r($json);
  }

  curl_close($ch);

  ```

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

  namespace AutoSchedulePOSTRequest_csharp
  {
      class AutoSchedule
      {
          private static readonly HttpClient client = new HttpClient();

          static async Task Main(string[] args)
          {
              string API_KEY = "API_KEY";
              string url = "https://api.ayrshare.com/api/auto-schedule/set";

              client.DefaultRequestHeaders.Add("Authorization", "Bearer " + API_KEY);

              var payload = new
              {
                  schedule = new[] { "13:05Z", "20:14Z" },
                  title = "Instagram Schedule"
              };

              try
              {
                  var content = new StringContent(
                      System.Text.Json.JsonSerializer.Serialize(payload),
                      System.Text.Encoding.UTF8,
                      "application/json"
                  );

                  HttpResponseMessage response = await client.PostAsync(url, content);
                  response.EnsureSuccessStatusCode();
                  string responseBody = await response.Content.ReadAsStringAsync();
                  Console.WriteLine(responseBody);
              }
              catch (HttpRequestException e)
              {
                  Console.WriteLine($"Error: {e.Message}");
              }
          }
      }
  }
  ```

  ```go Go theme={"system"}
  package main

  import (
  	"bytes"
  	"encoding/json"
  	"log"
  	"net/http"
  )

  func main() {
  	message := map[string]interface{}{
  		"schedule": []string{"13:05Z", "20:14Z"},
  		"title": "Instagram Schedule"
  	}

  	bytesRepresentation, err := json.Marshal(message)
  	if err != nil {
  		log.Fatalln(err)
  	}

  	req, _ := http.NewRequest("POST", "https://api.ayrshare.com/api/auto-schedule/set",
  		bytes.NewBuffer(bytesRepresentation))

  	req.Header.Add("Content-Type", "application/json; charset=UTF-8")
  	req.Header.Add("Authorization", "Bearer API_KEY")

  	res, err := http.DefaultClient.Do(req)
  	if err != nil {
  		log.Fatal("Error:", err)
  	}

  	res.Body.Close()
  }
  ```
</RequestExample>

<ResponseExample>
  ```javascript 200: تم تعيين الجدول theme={"system"}
  {
      status: "success",
      message: "Auto schedule set.",
      title: "Instagram Schedule",
  }
  ```
</ResponseExample>
