> ## Documentation Index
> Fetch the complete documentation index at: https://generaltranslation.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Guide d’intégration

export const Button = ({href, children}) => {
  return <div className="not-prose group">
    <a href={href}>
      <button className="flex items-center space-x-2.5 py-1 px-4 bg-primary-dark dark:bg-white text-white dark:text-gray-950 rounded-full group-hover:opacity-[0.9] font-medium">
        <span>
          {children}
        </span>
        <svg width="3" height="24" viewBox="0 -9 3 24" class="h-6 rotate-0 overflow-visible"><path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg>
      </button>
    </a>
  </div>;
};

Cette page présente les outils et concepts clés pour intégrer les endpoints de gestion des Publications dans votre système.

***

<div id="helpful-tools">
  ## Outils pratiques
</div>

Avant d’aborder certains concepts clés qui vous aideront à intégrer cet endpoint, nous vous recommandons de vous familiariser avec les éléments suivants :

<div id="postman">
  ### Postman
</div>

Postman est un excellent outil que vous pouvez utiliser pour tester un endpoint. Chaque requête Postman inclut tous les paramètres de chemin et de corps de requête afin de vous aider à comprendre rapidement les options qui s’offrent à vous. Pour en savoir plus sur nos collections Postman, veuillez consulter notre page ["Utiliser Postman"](/fr/tutorials/postman-getting-started).

<div id="code-samples">
  ### Exemples de code
</div>

Vous souhaitez commencer à utiliser cet endpoint en utilisant votre langage de programmation préféré ? Nous proposons plusieurs exemples de code que vous pouvez utiliser comme point de départ sur notre [page GitHub](https://github.com/xdevplatform/Twitter-API-v2-sample-code).

<div id="third-party-libraries">
  ### Bibliothèques tierces
</div>

Profitez de l'une des [bibliothèques tierces](/fr/x-api/tools-and-libraries/overview) mises à disposition par la communauté pour vous aider à démarrer. Vous pouvez trouver une bibliothèque compatible avec les endpoints v2 en recherchant le tag de version approprié.

<div id="key-concepts">
  ## Concepts clés
</div>

<div id="authentication">
  ### Authentification
</div>

Tous les endpoints de X API v2 exigent que vous authentifiiez vos requêtes à l’aide d’un ensemble d’identifiants, également appelés clés et jetons.

Ces endpoints spécifiques nécessitent l’utilisation du [contexte utilisateur OAuth 1.0a](/fr/resources/fundamentals/authentication), ce qui signifie que vous devez utiliser un ensemble de clés d’API et de jetons d’accès utilisateur pour effectuer une requête réussie. Les jetons d’accès doivent être associés à l’utilisateur pour le compte duquel vous effectuez la requête. Si vous souhaitez générer un ensemble de jetons d’accès pour un autre utilisateur, celui-ci doit autoriser ou authentifier votre App à l’aide du [flux OAuth à 3 volets](/fr/resources/fundamentals/authentication#obtaining-access-tokens-using-3-legged-oauth-flow).

Veuillez noter qu’OAuth 1.0a peut être difficile à utiliser. Si vous ne connaissez pas cette méthode d’authentification, nous vous recommandons d’utiliser une [bibliothèque](/fr/x-api/tools-and-libraries/overview), un outil comme Postman, ou OAuth 2.0 pour authentifier vos requêtes.

[OAuth 2.0 Authorization Code avec PKCE](/fr/resources/fundamentals/authentication#oauth-2-0-authorization-code-flow-with-pkce-2) permet un meilleur contrôle sur le scope d’une application et sur les flux d’autorisation sur plusieurs appareils. OAuth 2.0 vous permet de choisir des scopes précis et granulaires qui vous donnent des autorisations spécifiques au nom d’un utilisateur.

Pour activer OAuth 2.0 pour votre App, vous devez l’activer dans les paramètres d’authentification de celle-ci, accessibles dans la section des paramètres de l’App de la Console de développement.

<div id="developer-console-projects-and-developer-apps">
  ### Console de développement, Projets et Apps développeur
</div>

Pour obtenir un jeu d’identifiants d’authentification qui fonctionneront avec les endpoints de X API v2, vous devez disposer d’un [compte développeur](/fr/resources/fundamentals/developer-portal), configurer un [Projet](/fr/resources/fundamentals/developer-apps) dans ce compte, puis créer une [App développeur](/fr/resources/fundamentals/developer-apps) dans ce Projet. Vous pourrez ensuite trouver vos clés et jetons au sein de votre App développeur.

<div id="rate-limits">
  ### Limites de taux
</div>

Chaque jour, des dizaines de milliers de développeurs envoient des requêtes vers l’X API. Pour aider à gérer le volume important de ces requêtes, des [limites de taux](https://developer.x.com/x-api/fundamentals/rate-limits) sont appliquées à chaque endpoint, ce qui limite le nombre de requêtes que vous pouvez effectuer pour le compte de votre App ou pour le compte d’un utilisateur authentifié.

Ces endpoints sont soumis à des limites de taux au niveau utilisateur, ce qui signifie que l’utilisateur authentifié pour lequel vous effectuez la requête ne peut appeler l’endpoint qu’un certain nombre de fois, toutes Apps de développeur confondues. Il existe une limite de taux utilisateur de 200 requêtes par tranche de 15 minutes pour la méthode POST. La méthode DELETE a une limite de taux de 50 requêtes par tranche de 15 minutes. De plus, il existe une limite de [300 requêtes par période de 3 heures](https://blog.x.com/developer/en_us/topics/tools/2018/new-developer-requirements-to-protect-our-platform), y compris les Publications créées via `manage Posts` ou `manage Retweets`.

<div id="source-labels">
  ### Libellés de source
</div>

Le nom de votre App et l’URL de votre site web seront affichés comme [libellé de source](https://help.x.com/en/using-twitter/how-to-tweet#source-labels) dans les métadonnées de toute Publication créée de manière programmatique par votre application. Si vous modifiez le cas d’utilisation d’une App X, veillez à mettre à jour ce cas d’utilisation dans ces paramètres afin de garantir votre conformité aux [Conditions d’utilisation pour les développeurs](https://developer.x.com/content/developer-twitter/en/developer-terms/agreement-and-policy).

<div id="profile-settings">
  ### Paramètres de profil
</div>

Vous ne pouvez ajouter un lieu à des Publications que si la géolocalisation est activée dans les paramètres de votre profil. Si vous n'avez pas activé la géolocalisation, vous pouvez quand même ajouter un paramètre de lieu dans le corps de votre requête, mais il ne sera pas associé à votre Publication. Il en va de même pour l'identification d'utilisateurs sur les images. Si l'utilisateur que vous identifiez n'a pas activé l'identification sur les photos, son nom n'apparaîtra pas dans la liste des utilisateurs identifiés, même si la Publication est bien créée.

<div id="adding-media-to-a-post">
  ### Ajout de médias à une Publication
</div>

Il n’existe actuellement aucun moyen d’effectuer un téléversement complet de médias en utilisant la v2 de la X API. Cependant, vous pouvez joindre à une Publication des médias déjà téléversés. Vous pouvez utiliser des id de média qui ont déjà été [téléversés à l'aide de l'endpoint media v1](https://developer.x.com/en/docs/twitter-api/v1/media/upload-media/api-reference/post-media-upload) ou via [X Media Studio](https://media.x.com/en/articles/products/2018/media-studio). Ces id de média doivent être les vôtres ou ceux d'un utilisateur authentifié.

***

<div id="code-examples">
  ## Exemples de code
</div>

<div id="create-a-post">
  ### Créer une publication
</div>

<CodeGroup dropdown>
  ```bash cURL theme={null}
  curl -X POST "https://api.x.com/2/tweets" \
    -H "Authorization: OAuth ..." \
    -H "Content-Type: application/json" \
    -d '{"text": "Hello world!"}'
  ```

  ```python Python SDK theme={null}
  from xdk import Client
  from xdk.oauth1_auth import OAuth1

  oauth1 = OAuth1(
      api_key="YOUR_API_KEY",
      api_secret="YOUR_API_SECRET",
      access_token="YOUR_ACCESS_TOKEN",
      access_token_secret="YOUR_ACCESS_TOKEN_SECRET"
  )

  client = Client(auth=oauth1)

  # Créer une publication
  response = client.posts.create(text="Hello world!")
  print(f"Publication créée : {response.data.id}")
  ```

  ```javascript JavaScript SDK theme={null}
  import { Client, OAuth1 } from "@xdevplatform/xdk";

  const oauth1 = new OAuth1({
    apiKey: "YOUR_API_KEY",
    apiSecret: "YOUR_API_SECRET",
    accessToken: "YOUR_ACCESS_TOKEN",
    accessTokenSecret: "YOUR_ACCESS_TOKEN_SECRET",
  });

  const client = new Client({ oauth1 });

  // Créer une publication
  const response = await client.posts.create({ text: "Hello world!" });
  console.log(`Publication créée : ${response.data?.id}`);
  ```
</CodeGroup>

<div id="create-a-reply">
  ### Créer une réponse
</div>

<CodeGroup dropdown>
  ```bash cURL theme={null}
  curl -X POST "https://api.x.com/2/tweets" \
    -H "Authorization: OAuth ..." \
    -H "Content-Type: application/json" \
    -d '{"text": "Voici une réponse !", "reply": {"in_reply_to_tweet_id": "1234567890"}}'
  ```

  ```python Python SDK theme={null}
  from xdk import Client
  from xdk.oauth1_auth import OAuth1

  oauth1 = OAuth1(
      api_key="YOUR_API_KEY",
      api_secret="YOUR_API_SECRET",
      access_token="YOUR_ACCESS_TOKEN",
      access_token_secret="YOUR_ACCESS_TOKEN_SECRET"
  )

  client = Client(auth=oauth1)

  # Créer une réponse
  response = client.posts.create(
      text="Voici une réponse !",
      reply={"in_reply_to_tweet_id": "1234567890"}
  )
  print(f"Réponse créée : {response.data.id}")
  ```

  ```javascript JavaScript SDK theme={null}
  import { Client, OAuth1 } from "@xdevplatform/xdk";

  const oauth1 = new OAuth1({
    apiKey: "YOUR_API_KEY",
    apiSecret: "YOUR_API_SECRET",
    accessToken: "YOUR_ACCESS_TOKEN",
    accessTokenSecret: "YOUR_ACCESS_TOKEN_SECRET",
  });

  const client = new Client({ oauth1 });

  // Créer une réponse
  const response = await client.posts.create({
    text: "Voici une réponse !",
    reply: { inReplyToTweetId: "1234567890" },
  });
  console.log(`Réponse créée : ${response.data?.id}`);
  ```
</CodeGroup>

<div id="delete-a-post">
  ### Supprimer une publication
</div>

<CodeGroup dropdown>
  ```bash cURL theme={null}
  curl -X DELETE "https://api.x.com/2/tweets/1234567890" \
    -H "Authorization: OAuth ..."
  ```

  ```python Python SDK theme={null}
  from xdk import Client
  from xdk.oauth1_auth import OAuth1

  oauth1 = OAuth1(
      api_key="YOUR_API_KEY",
      api_secret="YOUR_API_SECRET",
      access_token="YOUR_ACCESS_TOKEN",
      access_token_secret="YOUR_ACCESS_TOKEN_SECRET"
  )

  client = Client(auth=oauth1)

  # Supprimer une publication
  response = client.posts.delete("1234567890")
  print(f"Supprimé : {response.data.deleted}")
  ```

  ```javascript JavaScript SDK theme={null}
  import { Client, OAuth1 } from "@xdevplatform/xdk";

  const oauth1 = new OAuth1({
    apiKey: "YOUR_API_KEY",
    apiSecret: "YOUR_API_SECRET",
    accessToken: "YOUR_ACCESS_TOKEN",
    accessTokenSecret: "YOUR_ACCESS_TOKEN_SECRET",
  });

  const client = new Client({ oauth1 });

  // Supprimer une publication
  const response = await client.posts.delete("1234567890");
  console.log(`Supprimé : ${response.data?.deleted}`);
  ```
</CodeGroup>

**Prochaines étapes**

[Référence de l’API](/fr/x-api/posts/manage-tweets#manage-tweets-api-reference-index)
