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

# Delete a Post

> Delete a post using the post ID

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

export const PlansAvailable = ({plans = [], maxPackRequired}) => {
  let displayPlans = plans;
  if (plans && plans.length === 1) {
    const lowerCasePlan = plans[0].toLowerCase();
    if (lowerCasePlan === "basic") {
      displayPlans = ["Basic", "Premium", "Business", "Enterprise"];
    } else if (lowerCasePlan === "business") {
      displayPlans = ["Business", "Enterprise"];
    } else if (lowerCasePlan === "premium") {
      displayPlans = ["Premium", "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>;
};

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

<XByoNotice />

Delete a post using the post ID returned from the [/post](/apis/post/post) endpoint.
You can delete both published and scheduled posts, but there are some differences based on the social network `platform`:

<ul class="custom-bullets">
  <li>Scheduled posts can be deleted for all social networks `platforms`.</li>

  <li>
    Published posts can be deleted for all social networks `platforms` except
    for Instagram and TikTok. Instagram and TikTok do not provide API support
    for deleting published posts. If you need to delete a published post on
    these platforms, you must do so manually using their respective mobile apps.
  </li>

  <li>
    Facebook does not permit deleting image stories via their API (video stories
    can be deleted). If you need to delete an image story, please go to the
    Facebook mobile app and perform the deletion manually.
  </li>
</ul>

<Info>
  Instagram and TikTok do not support delete via their APIs. Please go to the
  Instagram or TikTok mobile apps to delete the posts.

  Facebook does not support image story deletion via its API. Please go to the
  Facebook mobile app to delete stories.
</Info>

## Header Parameters

<HeaderAPI noProfileKey={false} />

## Body Parameters

<ParamField path="id" type="string" required>
  Ayrshare Post ID of the post to delete.

  Not required if `bulk` or `deleteAllScheduled` parameter sent.

  If the post is scheduled and still `pending`, the scheduled posts will be deleted and not sent to the networks.

  If the post has already been sent to the networks, the post will be deleted from the networks.
</ParamField>

<ParamField path="bulk" type="array">
  Array of Strings post Ids to bulk delete.

  Required if `id` or `deleteAllScheduled` parameter not sent.
</ParamField>

<ParamField path="deleteAllScheduled" type="boolean" default={false}>
  If `true` will delete all scheduled posts still in a pending state, i.e. posts that have not yet been published to the networks, for the User Profile.

  The `id` or `bulk` parameters are ignored if set to `true`.

  <Tip>
    This will delete all scheduled posts, so be sure to use this with caution.
  </Tip>
</ParamField>

<ParamField path="markManualDeleted" type="boolean" default={false}>
  If `true`, the post will mark as deleted in Ayrshare and Ayrshare will not try to delete the post at the networks.

  A common use case for this is when the post was manually deleted at the networks and you want to mark it as deleted in Ayrshare.

  Prior to marking the post as deleted, please ensure that the post was already manually deleted on the social networks.
</ParamField>

<RequestExample>
  ```bash cURL theme={"system"}
  curl \
  -H "Authorization: Bearer API Key" \
  -H 'Content-Type: application/json' \
  -d '{"id": "Post ID"}' \
  -X DELETE https://api.ayrshare.com/api/post
  ```

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

  fetch("https://api.ayrshare.com/api/post", {
        method: "DELETE",
        headers: {
          "Content-Type": "application/json",
          "Authorization": `Bearer ${API_KEY}`
        },
        body: JSON.stringify({ id }),
      })
        .then((res) => res.json())
        .then((json) => console.log(json))
        .catch(console.error);
  ```

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

  payload = {'id': 'Post ID'}
  headers = {'Content-Type': 'application/json',
          'Authorization': 'Bearer API_KEY'}

  r = requests.delete('https://api.ayrshare.com/api/post',
      json=payload,
      headers=headers)

  print(r.json())
  ```

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

  $apiUrl = 'https://api.ayrshare.com/api/post';
  $apiKey = 'API_KEY';  // Replace 'API_KEY' with your actual API key
  $postId = '7NFVK0QIXET5rCUS9tmf'; // Replace with your actual post ID

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

  $data = json_encode(['id' => $postId]);

  $curl = curl_init($apiUrl);
  curl_setopt_array($curl, [
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_CUSTOMREQUEST => 'DELETE',
      CURLOPT_HTTPHEADER => $headers,
      CURLOPT_POSTFIELDS => $data
  ]);

  $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.Text;
  using System.Threading.Tasks;

  namespace DeletePOSTRequest_csharp
  {
      class Delete
      {
          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/post";

              // Set up request headers
              client.DefaultRequestHeaders.Add("Authorization", "Bearer " + API_KEY);

              // Prepare JSON content
              string json = "{\"id\" : \"Post ID\"}";
              var content = new StringContent(json, Encoding.UTF8, "application/json");

              try
              {
                  // Create and send DELETE request with content
                  var request = new HttpRequestMessage
                  {
                      Method = HttpMethod.Delete,
                      RequestUri = new Uri(url),
                      Content = content
                  };

                  HttpResponseMessage response = await client.SendAsync(request);
                  response.EnsureSuccessStatusCode();

                  // Read response
                  string responseBody = await response.Content.ReadAsStringAsync();
                  Console.WriteLine(responseBody);
              }
              catch (HttpRequestException e)
              {
                  Console.WriteLine($"Error: {e.Message}");
              }
          }
      }
  }
  ```
</RequestExample>

<ResponseExample>
  ```javascript 200: Success theme={"system"}
  {
      "twitter": {
          "action": "delete",
          "status": "success",
          "id": "1288900099663775749" // Twitter Social Post ID
      },
      "facebook": {
          "action": "delete",
          "status": "success",
          "id": "104920007983682_108683297607743" // Facebook Social PostID
      },
      "status": "success"
  }
  ```

  ```json 200: Success with markManualDeleted theme={"system"}
  {
    "status": "success",
    "id": "p8Ee6xDPx8PRxsjtDXf3" // Ayrshare Post ID
  }
  ```

  ```json 400: ID Not Found theme={"system"}
  {
    "action": "delete",
    "status": "error",
    "code": 114,
    "message": "Delete id not found.",
    "id": "IdpUOyihLEpIx0d0N9mI" // Ayrshare Post ID used for delete, comment, analytics, etc.
  }
  ```

  ```json 400: Post Already Deleted theme={"system"}
  {
    "action": "delete",
    "status": "error",
    "code": 383,
    "message": "The post is already deleted.",
    "id": "p8Ee6xDPx8PRxsjtDXf3" // Ayrshare Post ID
  }
  ```

  ```json 400: Mark Manual Deleted Error theme={"system"}
  {
    "action": "delete",
    "status": "error",
    "code": 382,
    "message": "The post was not manually deleted at the social network. By using the markManualDeleted option, you are responsible for deleting the post at the social network. Please delete the post and try again.",
    "id": "DD3fA2DC4qe2T48hSdgs",
    "markManualDeleted": true
  }
  ```
</ResponseExample>
