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

# Copy a Post

> Copy an existing post to new social media platforms

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

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", "business", "enterprise"]} maxPackRequired={false} />

<XByoNotice />

Copy an existing post to new social media platforms with the same content and settings. This endpoint allows you to reuse successful posts across different platforms or with different configurations.

Please be sure to add your `API_KEY`, and the `PROFILE_KEY` if copying to a User Profile, in the [Authorization header](/apis/overview#authorization).
The API Key can be found in the Ayrshare Developer Dashboard under the API Key page.

## Header Parameters

<HeaderAPI />

## Body Parameters

<ParamField body="postId" type="string" required>
  The ID of the existing post to copy. This is the Ayrshare Post ID returned from the original
  `/post` endpoint.
</ParamField>

<ParamField body="platforms" type="array" required>
  Social media platforms to post the copied content to. Accepts an array of Strings with values: `bluesky`, `facebook`, `gmb`, `instagram`, `linkedin`, `pinterest`, `reddit`, `snapchat`, `telegram`, `threads`, `tiktok`, `twitter`, or `youtube`.

  Please note: use `facebook` for Facebook Pages, and `gmb` for Google Business Profile.

  The platforms specified here will override the original post's platforms - you must explicitly choose which platforms to copy to.
</ParamField>

<ParamField body="scheduleDate" type="string">
  The datetime to schedule the copied post. Accepts a UTC date time.

  For example, use format `YYYY-MM-DDThh:mm:ssZ` and send as `2026-07-08T12:30:00Z`.
  Please see [utctime](https://www.utctime.net/) for more examples.

  If not provided, the post will be published immediately.
</ParamField>

<ParamField body="blueskyOptions" type="object">
  Override the original post's Bluesky settings. See [Bluesky
  details](/apis/post/social-networks/bluesky).
</ParamField>

<ParamField body="faceBookOptions" type="object">
  Override the original post's Facebook settings. See [Facebook
  details](/apis/post/social-networks/facebook).
</ParamField>

<ParamField body="gmbOptions" type="object">
  Override the original post's Google Business Profile settings. See [Google Business Profile
  details](/apis/post/social-networks/google).
</ParamField>

<ParamField body="instagramOptions" type="object">
  Override the original post's Instagram settings. See [Instagram
  details](/apis/post/social-networks/instagram).
</ParamField>

<ParamField body="linkedInOptions" type="object">
  Override the original post's LinkedIn settings. See [LinkedIn
  details](/apis/post/social-networks/linkedin).
</ParamField>

<ParamField body="pinterestOptions" type="object">
  Override the original post's Pinterest settings. See [Pinterest
  details](/apis/post/social-networks/pinterest).
</ParamField>

<ParamField body="redditOptions" type="object">
  Override the original post's Reddit settings. See [Reddit
  details](/apis/post/social-networks/reddit).
</ParamField>

<ParamField body="snapChatOptions" type="object">
  Override the original post's Snapchat settings. See [Snapchat
  details](/apis/post/social-networks/snapchat).
</ParamField>

<ParamField body="telegramOptions" type="object">
  Override the original post's Telegram settings. See [Telegram
  details](/apis/post/social-networks/telegram).
</ParamField>

<ParamField body="threadsOptions" type="object">
  Override the original post's Threads settings. See [Threads
  details](/apis/post/social-networks/threads).
</ParamField>

<ParamField body="tikTokOptions" type="object">
  Override the original post's TikTok settings. See [TikTok
  details](/apis/post/social-networks/tiktok).
</ParamField>

<ParamField body="twitterOptions" type="object">
  Override the original post's X/Twitter settings. See [X/Twitter
  details](/apis/post/social-networks/x-twitter).
</ParamField>

<ParamField body="youTubeOptions" type="object">
  Override the original post's YouTube settings. See [YouTube
  details](/apis/post/social-networks/youtube).
</ParamField>

<ParamField body="shortenLinks" type="boolean">
  Override the original post's link shortening setting.

  [Max Pack required](/additional/maxpack) for link shortening.
</ParamField>

<ParamField body="autoHashtag" type="object">
  Override the original post's auto hashtag settings. See [auto
  hashtags](/apis/post/overview#auto-hashtags) for details.
</ParamField>

<ParamField body="disableComments" type="boolean">
  Override the original post's comment settings. Only available for Instagram, LinkedIn, and TikTok.
</ParamField>

<ParamField body="firstComment" type="object">
  Override the original post's first comment settings. See [first
  comment](/apis/post/overview#first-comment) for details.
</ParamField>

<ParamField body="notes" type="string">
  Add new notes to the copied post. These will replace any notes from the original post. Notes are
  for reference only and do not affect the post content.
</ParamField>

<RequestExample>
  ```bash cURL theme={"system"}
  curl \
  -H "Authorization: Bearer API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "postId": "RhrbDtYh7hdSMc67zC8H",
    "platforms": ["twitter", "facebook", "linkedin"],
    "scheduleDate": "2026-07-08T12:30:00Z"
  }' \
  -X POST https://api.ayrshare.com/api/post/copy
  ```

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

  fetch("https://api.ayrshare.com/api/post/copy", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Authorization: `Bearer ${API_KEY}`
    },
    body: JSON.stringify({
      postId: "RhrbDtYh7hdSMc67zC8H", // required
      platforms: ["twitter", "facebook", "linkedin"], // required
      scheduleDate: "2026-07-08T12:30:00Z", // optional
      faceBookOptions: {
        link: "https://example.com/new-link"
      }
    })
  })
    .then((res) => res.json())
    .then((json) => console.log(json))
    .catch(console.error);
  ```

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

  payload = {
      'postId': 'RhrbDtYh7hdSMc67zC8H',
      'platforms': ['twitter', 'facebook', 'linkedin'],
      'scheduleDate': '2026-07-08T12:30:00Z',
      'faceBookOptions': {
          'link': 'https://example.com/new-link'
      }
  }
  headers = {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer API_KEY'
  }

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

  print(r.json())
  ```

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

  $curl = curl_init();
  $data = [
      "postId" => "RhrbDtYh7hdSMc67zC8H",
      "platforms" => ["twitter", "facebook", "linkedin"],
      "scheduleDate" => "2026-07-08T12:30:00Z",
      "faceBookOptions" => [
          "link" => "https://example.com/new-link"
      ]
  ];

  curl_setopt_array($curl, [
      CURLOPT_URL => 'https://api.ayrshare.com/api/post/copy',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_POSTFIELDS => json_encode($data),
      CURLOPT_HTTPHEADER => [
          'Authorization: Bearer API_KEY',
          'Content-Type: application/json'
      ],
  ]);

  $response = curl_exec($curl);
  curl_close($curl);
  echo $response;
  ```

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

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

  func main() {
  	message := map[string]interface{}{
  		"postId":       "RhrbDtYh7hdSMc67zC8H",
  		"platforms":    []string{"twitter", "facebook", "linkedin"},
  		"scheduleDate": "2026-07-08T12:30:00Z",
  		"faceBookOptions": map[string]interface{}{
  			"link": "https://example.com/new-link",
  		},
  	}

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

  	req, _ := http.NewRequest("POST", "https://api.ayrshare.com/api/post/copy",
  		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()
  }
  ```

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

  namespace PostCopyRequest_csharp
  {
    class PostCopy
    {
      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/copy";

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

              string json = "{\"postId\" : \"RhrbDtYh7hdSMc67zC8H\","
                  + "\"platforms\" : [ \"twitter\", \"facebook\", \"linkedin\" ],"
                  + "\"scheduleDate\" : \"2026-07-08T12:30:00Z\"}";
              var content = new StringContent(json, Encoding.UTF8, "application/json");

              try
              {
                  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}");
              }
          }
      }
  }
  ```

  ```ruby Ruby theme={"system"}
  require 'httparty'

  res = HTTParty.post("https://api.ayrshare.com/api/post/copy",
      headers: {Authorization: "Bearer API_KEY"},
      body: {
          postId: "RhrbDtYh7hdSMc67zC8H",
          platforms: ['twitter', 'facebook', 'linkedin'],
          scheduleDate: '2026-07-08T12:30:00Z',
          faceBookOptions: {
              link: 'https://example.com/new-link'
          }
      }).body

  puts res
  ```
</RequestExample>

<ResponseExample>
  ```json 200: Success - Immediate Post theme={"system"}
  {
     "status": "success",
     "copiedFrom": "RhrbDtYh7hdSMc67zC8H",
     "originalPost": "Today is a great day!",
     "errors": [],
     "postIds": [
         {
             "status": "success",
             "id": "1288899996423983106",
             "platform": "twitter",
             "postUrl": "https://x.com/handle/status/1288899996423983106"
         },
         {
             "status": "success",
             "id": "104923907983682_108329000309743",
             "platform": "facebook", 
             "postUrl": "https://www.facebook.com/104923907983682_108329000309743"
         },
         {
             "status": "success",
             "id": "urn:li:share:7282181682126807042",
             "postUrl": "https://www.linkedin.com/feed/update/urn:li:share:7282181682126807042",
             "owner": "urn:li:organization:77682157",
             "platform": "linkedin"
         }
     ],
     "id": "KpwxFmNj3kgQLa92vE5T"
  }
  ```

  ```json 200: Success - Scheduled Post theme={"system"}
  {
    "status": "scheduled",
    "scheduleDate": "2025-05-28T14:32:00Z",
    "id": "KpwxFmNj3kgQLa92vE5T",
    "refId": "7a8e2f15c94d73a6e2bf89dd4c847b9f2e3a6d18",
    "copiedFrom": "RhrbDtYh7hdSMc67zC8H",
    "originalPost": "Today is a great day!"
  }
  ```

  ```json 400: Bad Request theme={"system"}
  {
    "status": "error",
    "errors": [
      {
        "action": "post",
        "status": "error",
        "code": 156,
        "message": "Threads is not linked. Please confirm the linkage on the Social Accounts page in the dashboard. https://www.ayrshare.com/docs/dashboard/connect-social-accounts/overview",
        "platform": "threads"
      }
    ],
    "postIds": [],
    "id": "KpwxFmNj3kgQLa92vE5T",
    "refId": "7a8e2f15c94d73a6e2bf89dd4c847b9f2e3a6d18"
  }
  ```

  ```json 400: Bad Request - Missing Platforms theme={"system"}
  {
    "status": "error",
    "code": 163,
    "message": "Missing, empty, or not valid platforms parameter. Please verify sending an array of valid platforms. https://www.ayrshare.com/docs/apis/post",
    "details": "platforms parameter is required for copying posts"
  }
  ```

  ```json 400: Bad Request - Duplicate or Similar Content theme={"system"}
  {
    "status": "error",
    "errors": [
      {
        "action": "post",
        "status": "error",
        "code": 137,
        "message": "Duplicate or similar content posted within the same two day period. The social networks prohibit duplicate content and ban accounts that do not comply. https://www.ayrshare.com/docs/help-center/technical-support/dealing_with_duplicate_posts#dealing-with-duplicate-posts",
        "details": "Duplicate found in user profile: \"Primary Profile\", post id: e5ELaDhKjhJBU1z6dbud, and refId: 5da3de47a8e3b1d8c2bd319350aa7d4e85d4ec74",
        "verifyCheck": true,
        "platform": "twitter"
      }
    ],
    "postIds": [],
    "id": "KpwxFmNj3kgQLa92vE5T",
    "refId": "7a8e2f15c94d73a6e2bf89dd4c847b9f2e3a6d18"
  }
  ```
</ResponseExample>
