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

# Copier une publication

> Copiez une publication existante vers de nouvelles plateformes de réseaux sociaux

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

<XByoNotice />

Copiez une publication existante vers de nouvelles plateformes de réseaux sociaux, en conservant le même contenu et les mêmes paramètres. Ce point de terminaison vous permet de réutiliser des publications ayant obtenu de bons résultats sur différentes plateformes ou avec différentes configurations.

Veillez à ajouter votre `API_KEY` et la `PROFILE_KEY` si vous copiez vers un User Profile, dans l'[en-tête Authorization](/apis/overview#authorization).
L'API Key se trouve dans le Ayrshare Developer Dashboard, à la page API Key.

## Paramètres d'en-tête

<HeaderAPI />

## Paramètres du corps

<ParamField body="postId" type="string" required>
  ID de la publication existante à copier. Il s'agit de l'Ayrshare Post ID renvoyé par le point de terminaison
  `/post` d'origine.
</ParamField>

<ParamField body="platforms" type="array" required>
  Plateformes de réseaux sociaux sur lesquelles publier le contenu copié. Accepte un tableau de chaînes avec les valeurs suivantes : `bluesky`, `facebook`, `gmb`, `instagram`, `linkedin`, `pinterest`, `reddit`, `snapchat`, `telegram`, `threads`, `tiktok`, `twitter` ou `youtube`.

  Remarque : utilisez `facebook` pour les Pages Facebook, et `gmb` pour Google Business Profile.

  Les plateformes spécifiées ici remplacent celles de la publication d'origine — vous devez choisir explicitement les plateformes vers lesquelles copier.
</ParamField>

<ParamField body="scheduleDate" type="string">
  Date et heure de planification de la publication copiée. Accepte une date-heure UTC.

  Par exemple, utilisez le format `YYYY-MM-DDThh:mm:ssZ` et envoyez `2026-07-08T12:30:00Z`.
  Consultez [utctime](https://www.utctime.net/) pour plus d'exemples.

  Si non fourni, la publication sera diffusée immédiatement.
</ParamField>

<ParamField body="blueskyOptions" type="object">
  Remplacez les paramètres Bluesky de la publication d'origine. Voir les [détails
  Bluesky](/apis/post/social-networks/bluesky).
</ParamField>

<ParamField body="faceBookOptions" type="object">
  Remplacez les paramètres Facebook de la publication d'origine. Voir les [détails
  Facebook](/apis/post/social-networks/facebook).
</ParamField>

<ParamField body="gmbOptions" type="object">
  Remplacez les paramètres Google Business Profile de la publication d'origine. Voir les [détails
  Google Business Profile](/apis/post/social-networks/google).
</ParamField>

<ParamField body="instagramOptions" type="object">
  Remplacez les paramètres Instagram de la publication d'origine. Voir les [détails
  Instagram](/apis/post/social-networks/instagram).
</ParamField>

<ParamField body="linkedInOptions" type="object">
  Remplacez les paramètres LinkedIn de la publication d'origine. Voir les [détails
  LinkedIn](/apis/post/social-networks/linkedin).
</ParamField>

<ParamField body="pinterestOptions" type="object">
  Remplacez les paramètres Pinterest de la publication d'origine. Voir les [détails
  Pinterest](/apis/post/social-networks/pinterest).
</ParamField>

<ParamField body="redditOptions" type="object">
  Remplacez les paramètres Reddit de la publication d'origine. Voir les [détails
  Reddit](/apis/post/social-networks/reddit).
</ParamField>

<ParamField body="snapChatOptions" type="object">
  Remplacez les paramètres Snapchat de la publication d'origine. Voir les [détails
  Snapchat](/apis/post/social-networks/snapchat).
</ParamField>

<ParamField body="telegramOptions" type="object">
  Remplacez les paramètres Telegram de la publication d'origine. Voir les [détails
  Telegram](/apis/post/social-networks/telegram).
</ParamField>

<ParamField body="threadsOptions" type="object">
  Remplacez les paramètres Threads de la publication d'origine. Voir les [détails
  Threads](/apis/post/social-networks/threads).
</ParamField>

<ParamField body="tikTokOptions" type="object">
  Remplacez les paramètres TikTok de la publication d'origine. Voir les [détails
  TikTok](/apis/post/social-networks/tiktok).
</ParamField>

<ParamField body="twitterOptions" type="object">
  Remplacez les paramètres X/Twitter de la publication d'origine. Voir les [détails
  X/Twitter](/apis/post/social-networks/x-twitter).
</ParamField>

<ParamField body="youTubeOptions" type="object">
  Remplacez les paramètres YouTube de la publication d'origine. Voir les [détails
  YouTube](/apis/post/social-networks/youtube).
</ParamField>

<ParamField body="shortenLinks" type="boolean">
  Remplacez le paramètre de raccourcissement de liens de la publication d'origine.

  [Max Pack requis](/additional/maxpack) pour le raccourcissement de liens.
</ParamField>

<ParamField body="autoHashtag" type="object">
  Remplacez les paramètres de hashtags automatiques de la publication d'origine. Voir [auto
  hashtags](/apis/post/overview#auto-hashtags) pour plus de détails.
</ParamField>

<ParamField body="disableComments" type="boolean">
  Remplacez les paramètres de commentaires de la publication d'origine. Disponible uniquement pour Instagram, LinkedIn et TikTok.
</ParamField>

<ParamField body="firstComment" type="object">
  Remplacez les paramètres de premier commentaire de la publication d'origine. Voir [premier
  commentaire](/apis/post/overview#first-comment) pour plus de détails.
</ParamField>

<ParamField body="notes" type="string">
  Ajoutez de nouvelles notes à la publication copiée. Elles remplaceront toute note issue de la publication d'origine. Les notes sont
  fournies à titre de référence uniquement et n'affectent pas le contenu de la publication.
</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>
