Passer au contenu principal
Ce guide présente les concepts clés nécessaires pour intégrer les endpoints de recherche de publications à votre application.

Authentification

Tous les points de terminaison de la X API v2 nécessitent une authentification. Choisissez la méthode qui correspond à votre cas d’utilisation :
MéthodeIdéal pourPeut accéder aux métriques privées ?
OAuth 2.0 App-OnlyServeur à serveur, données publiquesNon
OAuth 2.0 Authorization Code with PKCEApplications destinées aux utilisateursOui (pour les Publications de l’utilisateur autorisé)
OAuth 1.0a User ContextAnciennes intégrationsOui (pour les Publications de l’utilisateur autorisé)

Authentification App-only

Pour les données publiques de Publications, utilisez un jeton Bearer :
cURL
curl "https://api.x.com/2/tweets/1234567890" \
  -H "Authorization: Bearer $BEARER_TOKEN"

Authentification en contexte utilisateur

Pour accéder aux métriques privées, authentifiez-vous au nom de l’auteur de la Publication :
Les champs suivants nécessitent une authentification en contexte utilisateur :
  • tweet.fields.non_public_metrics
  • tweet.fields.promoted_metrics
  • tweet.fields.organic_metrics
  • media.fields.non_public_metrics
  • media.fields.promoted_metrics
  • media.fields.organic_metrics

Champs et expansions

X API v2 retourne par défaut un volume minimal de données. Utilisez les paramètres fields et expansions pour demander précisément les données dont vous avez besoin.

Réponse par défaut

{
  "data": {
    "id": "1234567890",
    "text": "Hello world!",
    "edit_history_tweet_ids": ["1234567890"]
  }
}

Champs disponibles

ChampDescription
created_atHorodatage de création de la Publication
author_idID utilisateur de l’auteur
public_metricsNombre de J’aime, retweets, réponses, citations
entitiesHashtags, mentions, URLs, cashtags
attachmentsClés de média, ID de sondage
conversation_idIdentifiant de fil
context_annotationsCatégories de sujets/entités
in_reply_to_user_idUtilisateur auquel on répond
langLangue détectée
sourceClient utilisé pour publier
possibly_sensitiveIndicateur de contenu sensible
reply_settingsQui peut répondre
ChampDescription
username@handle
nameNom affiché
profile_image_urlURL de l’avatar
verifiedStatut de vérification
descriptionBiographie
public_metricsNombre d’abonnés/abonnements
created_atDate de création du compte
ChampDescription
urlURL du média
preview_image_urlURL de la miniature
typephoto, video, animated_gif
duration_msDurée de la vidéo
height, widthDimensions
alt_textTexte pour l’accessibilité

Exemple avec des champs

cURL
curl "https://api.x.com/2/tweets/1234567890?\
tweet.fields=created_at,public_metrics,entities&\
expansions=author_id,attachments.media_keys&\
user.fields=username,verified&\
media.fields=url,type" \
  -H "Authorization: Bearer $BEARER_TOKEN"

Modifications de Publications

Les Publications peuvent être modifiées jusqu’à 5 fois dans les 30 minutes suivant leur création.

Comment ça fonctionne

  • Chaque modification crée un nouvel identifiant de Publication
  • edit_history_tweet_ids contient toutes les versions (de la plus ancienne à la plus récente)
  • L’endpoint renvoie toujours la version la plus récente

Exemple de réponse

{
  "data": {
    "id": "1234567893",
    "text": "Hello world! (edited twice)",
    "edit_history_tweet_ids": [
      "1234567890",
      "1234567891",
      "1234567893"
    ]
  }
}
Les Publications récupérées après expiration de leur fenêtre de modification de 30 minutes représentent la version finale. Pour les cas d’usage en temps réel, gardez à l’esprit que les Publications récemment publiées peuvent encore être modifiées.

Gestion des erreurs

Erreurs courantes

StatutErreurSolution
400Requête invalideVérifiez le format des paramètres
401Non autoriséVérifiez vos informations d’authentification
403Accès interditVérifiez les autorisations de l’App
404IntrouvablePublication supprimée ou inexistante
429Trop de requêtesPatientez puis réessayez (voir les limites de taux)

Publications supprimées ou protégées

Si une Publication est supprimée ou provient d’un compte protégé que vous ne suivez pas :
  • La recherche d’une seule Publication renvoie un code d’état HTTP 404
  • La recherche de plusieurs Publications omet cette Publication des résultats et renvoie un tableau errors
{
  "data": [
    { "id": "1234567890", "text": "Available post" }
  ],
  "errors": [
    {
      "resource_id": "1234567891",
      "resource_type": "tweet",
      "title": "Not Found Error",
      "detail": "Could not find tweet with id: [1234567891]."
    }
  ]
}

Bonnes pratiques

Regrouper les requêtes

Utilisez l’endpoint multi-Publications pour récupérer jusqu’à 100 Publications en une seule fois, et ainsi réduire le nombre d’appels API.

Ne demander que les champs nécessaires

Indiquez uniquement les champs dont vous avez besoin afin de minimiser la taille des réponses et le temps de traitement.

Mettre les réponses en cache

Mettez en cache les données des Publications en local pour réduire les requêtes répétées pour un même contenu.

Gérer les modifications

Pour les applications en temps réel, envisagez de récupérer à nouveau les Publications après la fenêtre d’édition de 30 minutes.

Prochaines étapes

Référence de l’API

Documentation complète de l’endpoint

Dictionnaire de données

Tous les objets et champs disponibles

Exemples de code

Exemples de code fonctionnels

Gestion des erreurs

Gérez les erreurs proprement