Passer au contenu principal

Présentation

Enterprise Ceci est une API Enterprise disponible uniquement dans nos niveaux d’accès gérés. Pour utiliser cette API, vous devez d’abord ouvrir un compte auprès de notre équipe commerciale Enterprise. En savoir plus L’API Engagement donne accès aux métriques d’impressions et d’engagement des Posts. Bien que la plupart des métriques et des endpoints nécessitent une authentification via le Contexte utilisateur OAuth 1.0a, vous pouvez accéder aux métriques publiques Favorite, Retweet, Reply et Video Views en utilisant l’OAuth 2.0 Bearer Token et l’endpoint /totals. Remarque : Vous pouvez constater des différences entre les données présentées sur certains tableaux de bord web de X et les données renvoyées par l’API Engagement. Ces différences tiennent au fait que les tableaux de bord web affichent généralement uniquement les engagements et/ou impressions survenus dans l’intervalle de temps sélectionné. Par exemple, un tableau de bord web peut afficher l’engagement sur des Posts durant un mois calendaire, tandis que l’API Engagement peut afficher des engagements qui dépassent la durée de ce mois mais restent dans l’intervalle de temps demandé. Dans ces cas, l’API Engagement doit être considérée comme la source de référence.  

Endpoints de requête

L’API Engagement comporte trois endpoints :

Totaux actuels : [/totals]

  • Les requêtes renvoient une métrique totale pour les impressions et une métrique totale pour les engagements pour les Posts souhaités
  • Limité aux métriques suivantes : Impressions, Engagements, Favoris, Réponses, Retweets, Quote Tweets et Vues vidéo
  • Prend en charge la récupération des métriques Impressions et Engagements pour les Posts créés au cours des 90 derniers jours à l’aide du Contexte utilisateur OAuth 1.0a
  • Prend en charge la récupération des métriques Favoris, Retweets, Quote Tweets, Réponses et Vues vidéo pour n’importe quel Post à l’aide de l’OAuth 2.0 Bearer Token
  • Les résultats sont basés sur le total actuel d’impressions et d’engagements au moment où la requête est effectuée
  • Idéal pour alimenter un tableau de bord et pour calculer les taux d’engagement sur une variété de @handles
  • Prend en charge les demandes de métriques pour jusqu’à 250 Posts par requête  

Dernières 28 heures : [/28hr]

  • Les requêtes peuvent renvoyer une métrique totale pour les impressions, une métrique totale pour les interactions, ainsi qu’une ventilation des métriques d’interaction individuelles survenues au cours des dernières 28 heures
  • Les données peuvent être regroupées par ID de Post, et sous forme de séries temporelles agrégées, par jour ou par heure
  • Idéal pour suivre les performances du contenu récemment créé
  • Prend en charge toutes les métriques disponibles
  • Permet de demander des métriques pour jusqu’à 25 Posts par requête  

Historique : [/historical]

  • Les requêtes peuvent renvoyer les impressions, les engagements et une ventilation des métriques d’engagement individuelles pour la dernière année, en fonction de l’heure d’engagement (et non de l’heure de création du Post).
  • Les requêtes prennent en charge des paramètres de date de début et de date de fin, offrant la flexibilité de cibler une période spécifique d’une durée maximale de 4 semaines.
  • Les données d’engagement des Posts sont limitées aux 365 derniers jours.
  • Les données peuvent être regroupées par ID de Post et, sous forme de séries chronologiques agrégées, par jour ou par heure.
  • Idéal pour évaluer les performances récentes par rapport à une référence historique ou établir un historique des performances d’un @handle.
  • Prend en charge toutes les métriques disponibles.
  • Prend en charge la demande de métriques pour jusqu’à 25 Posts par requête.

Métriques disponibles

Le tableau ci-dessous décrit les types de métriques accessibles via l’API Engagement. Veuillez consulter notre page Interprétation des métriques pour en savoir plus sur les métriques ci-dessous.
MétriqueDisponibilité de l’endpointContexte utilisateur requisDescription
impressionsTousOuiNombre de fois où le Post a été affiché. Cette métrique n’est disponible que pour les Posts publiés au cours des 90 derniers jours.
engagementsTousOuiNombre de fois où un utilisateur a interagi avec le Post. Cette métrique n’est disponible que pour les Posts publiés au cours des 90 derniers jours.
favoritesTousOui - /28hrs & /Historical

Non - /totals
Nombre de fois où le Post a été ajouté aux favoris.
retweetsTousOui - /28hrs & /Historical

Non - /totals
Nombre de fois où le Post a été retweeté.
quote_tweets/totalsNon - /totalsNombre de fois où un Post a été retweeté avec un commentaire (également appelé citation).
repliesTousOui - /28hrs & /Historical

Non - /totals
Nombre de fois où le Post a reçu une réponse.
video_viewsTousOui - /28hrs & /Historical

Non - /totals
Nombre de fois où une vidéo du Post donné a été visible à 50 % pendant au moins deux secondes.

Les vues vidéo ne sont disponibles que pour les Posts datant de 1800 jours ou moins. Si vous tentez de demander les vues vidéo pour des Posts de plus de 1800 jours, vous recevrez l’objet suivant dans votre réponse, accompagné d’un objet séparé contenant les autres métriques demandées :

“unsupported_for_video_views_tweet_ids”: [“TWEET_ID”]

Remarque : Vous pourriez constater une différence entre la métrique de vues vidéo affichée sur les plateformes détenues et exploitées par X (application mobile et site web) et le nombre que vous recevez via les endpoints /28hr et /historical.

_ Les vues vidéo affichées dans l’interface utilisateur X et avec l’endpoint /totals affichent les vues vidéo agrégées sur tous les Posts dans lesquels la vidéo donnée a été publiée. Cela signifie que la métrique affichée dans l’interface utilisateur inclut les vues combinées de toute instance où la vidéo a été retweetée ou republiée dans des Posts séparés. Cette métrique n’inclut pas les vues vidéo sur les GIF.
_ Les vues vidéo fournies par les endpoints /28hr et /historical incluent uniquement les vues générées par le Post spécifique pour lequel vous récupérez les métriques. Cette métrique n’inclut pas les vues vidéo sur les GIF.
media_views/28hr /historicalOuiNombre total de vues (lecture automatique et clic) de vos médias comptabilisées sur les vidéos, GIF et images.
media_engagements

(anciennement Media Clicks)
/28hr /historicalOuiNombre de fois où des médias tels qu’une image ou une vidéo du Post ont été cliqués.
url_clicks/28hr /historicalOuiNombre de fois où une URL du Post a été cliquée.
hashtag_clicks/28hr /historicalOuiNombre de fois où un hashtag du Post a été cliqué.
detail_expands/28hr /historicalOuiNombre de fois où le Post a été cliqué pour afficher plus de détails.
permalink_clicks/28hr /historicalOuiNombre de fois où le lien permanent vers le Post (la page web individuelle dédiée à ce Post) a été cliqué.
app_install_attempts/28hr /historicalOuiNombre de fois où un événement d’installation d’App s’est produit à partir du Post.
app_opens/28hr /historicalOuiNombre de fois où un événement d’ouverture d’App s’est produit à partir du Post.
email_tweet/28hr /historicalOuiNombre de fois où le Post a été partagé par e-mail.
user_follows/28hr /historicalOuiNombre de fois où l’utilisateur (auteur du Post) a été suivi à partir de ce Post.
user_profile_clicks/28hr /historicalOuiNombre de fois où le profil de l’utilisateur (auteur du Post) a été cliqué à partir de ce Post.

Regroupements d’engagement

Les regroupements permettent d’organiser de manière personnalisée les métriques d’engagement renvoyées. Vous pouvez inclure au maximum 3 regroupements par requête. Vous pouvez choisir de regrouper les métriques selon une ou plusieurs des valeurs suivantes : Les trois endpoints prennent en charge :
  • tweet.id
  • engagement.type  
Les endpoints /28hr et /historical peuvent fournir des métriques sous forme de séries temporelles et prennent donc en charge :
  • engagement.day
  • engagement.hour
Pour en savoir plus sur les regroupements, veuillez consulter la page Engagement API Grouping dans la section Guides.

Guides

Guide de prise en main pour les développeurs

Introduction

Cette documentation a pour objectif d’initier les développeurs à l’intégration avec l’API Engagement. Nous commencerons par expliquer pourquoi intégrer, puis nous approfondirons les aspects techniques du « comment ».
Que fournit l’API Engagement ?
  • L’API Engagement fournit des données d’impressions et d’engagement pour les Posts appartenant à n’importe quel compte X sur les 90 derniers jours, à condition que ce compte ait autorisé votre App à demander des métriques en son nom à l’aide de l’OAuth à 3 étapes. Cette solution puissante et facile à mettre en œuvre donne un accès immédiat aux impressions et aux engagements approfondis, comme les clics sur des URL, les clics sur des hashtags, et bien plus encore.
  • L’API Engagement fournit des métriques agrégées totales pour les favoris, les Retweets, les Quote Tweets, les réponses et les vues vidéo de n’importe quel Post. Elle peut être utilisée pour obtenir efficacement des données d’engagement de base sur un Post ou un ensemble de Posts.
  • L’API Engagement apporte une valeur nouvelle aux plateformes d’écoute sociale, de marketing et de publication en permettant aux clients de mesurer le ROI sur X en évaluant efficacement les performances du contenu à l’aide de plus de 15 métriques de performance.
  • L’API Engagement est une API de type requête/réponse qui permet aux développeurs d’envoyer des requêtes avec des ID de Post, les métriques souhaitées et une plage temporelle, pour lesquelles l’API renvoie instantanément des data.  
Pourquoi intégrer ? Exemples de cas d’usage
  • Comprendre la portée globale de votre contenu pour savoir combien de personnes le voient. Voir combien de personnes regardent des vidéos, cliquent sur des liens, sur des hashtags ou installent mes Apps.
  • Générer des métriques d’engagement à la fois totales et en séries temporelles.
  • Comprendre les métriques d’engagement de base (likes, Retweets, Quote Tweets, réponses) pour tout Post public.
  • Utiliser ces métriques pour déterminer quels types de Posts fonctionnent afin que je puisse en publier plus souvent et obtenir davantage d’impressions et d’engagements pour mon contenu.
  • Automatiser des actions marketing (par exemple Retweeter du contenu depuis un autre compte que je possède) chaque fois que l’un de mes Posts atteint 100 likes, ou un autre seuil.
  • Établir des repères et comparer mes campagnes entre elles comme outil de tests A/B.
  • Analyser quels types de contenu trouvent un écho auprès de mon service client afin de déterminer comment et quand répondre.
  • Afficher des analyses pour le contenu publié depuis ma plateforme.  
L’Engagement API a été lancée en 2016 et a été la première X API à fournir ces métriques d’engagement approfondies à grande échelle. L’Engagement API est facile à utiliser et permet aux clients d’automatiser le processus. Voici une étude de cas décrivant un exemple d’intégration : Maintenant que nous avons exploré les « pourquoi » de l’Engagement API, passons aux détails techniques.

Intégrer l’API Engagement

Introduction à l’API
L’API Engagement est une API RESTful simple qui reçoit des requêtes encodées en JSON et renvoie des métriques d’engagement encodées en JSON. Les requêtes se composent de trois parties principales (suivez les liens pour plus de détails) :
  • Tableau d’ID de Post.
  • Tableau spécifiant les types de métriques d’intérêt. Ces types incluent, par exemple, « impressions », « retweets », « hashtag_clicks » et « user_follows ».
  • Regroupements d’engagement, une structure JSON indiquant la façon dont vous souhaitez organiser les données d’engagement dans la réponse de l’API.
Dans de nombreux cas, les types d’engagement et les regroupements restent relativement constants d’une requête à l’autre, seuls les ID de Post étant mis à jour. L’API Engagement propose trois endpoints :
  • Totals - Fournit des totaux globaux des engagements pour les Posts. Certaines métriques sont disponibles pour tous les Posts, tandis que d’autres ne le sont que pour les 90 derniers jours.
  • 28 hour - Fournit des métriques d’engagement sous forme de série temporelle sur les 28 dernières heures.
  • Historical - Fournit des métriques d’engagement sous forme de série temporelle pour jusqu’à quatre semaines consécutives pour des Posts publiés depuis le 1er septembre 2014.
L’endpoint /totals permet de demander des métriques pour jusqu’à 250 Posts par requête. Les endpoints /28hour et /historical prennent en charge 25 par requête. Après avoir abordé l’accès à l’API Engagement, nous passerons en revue la création d’une requête API, proposerons une vue d’ensemble d’OAuth et fournirons des liens vers d’autres ressources techniques.
Accès à l’API
Si vous lisez ce document, vous avez très probablement déjà obtenu l’accès à l’Engagement API. Dans le cas contraire, veuillez contacter votre account manager Enterprise ou demander un accès Enterprise ici. La première étape consiste à créer une X App à l’aide d’un compte développeur approuvé via le developer portal. Votre account manager aura besoin de l’id numérique de l’App associée pour vous accorder l’accès. Si vous devez demander un compte développeur, vous pouvez le faire ici.
Effectuer une requête
La bonne nouvelle, c’est qu’envoyer des requêtes à l’Engagement API est simple. Pour notre requête, nous demanderons le nombre total de Retweets, de Quote Tweets, de likes et de réponses pour les deux Posts @XDevelopers suivants :
1/ Aujourd’hui, nous partageons notre vision de l’avenir de la plateforme X API 
https://t.co/XweGngmxlP
— Twitter Dev (@TwitterDev) 6 avril 2017
Ne manquez pas les Posts à propos de votre Post. Désormais sur iOS, vous pouvez voir les Retweets avec commentaire, réunis en un seul endroit. pic.x.com/oanjZfzC6y — X (@X) 12 mai 2020
La première étape consiste à construire la requête API en JSON, composée de ces deux ID de Post placés dans un tableau, d’un tableau des types d’engagement qui nous intéressent, et d’un objet JSON « groupings » nommé de façon personnalisée qui indique comment nous voulons que les métriques soient organisées dans la réponse. Voici à quoi ressemble notre requête :
{
  "tweet_ids": [
    1260294888811347969, 850006245121695744
  ],
  "engagement_types": [
    "retweets", "quote_tweets", "favorites", "replies"
  ],
  "groupings": {
    "engagement-types-by-id": {
      "group_by": [
        "Tweet.id", "engagement.type"
      ]
    }
  }
}
Pour récupérer ces métriques totales, nous envoyons cette requête JSON en POST à l’endpoint https://data-api.x.com/insights/engagement/totals. Nous incluons les en-têtes suivants pour indiquer que notre requête est au format JSON et qu’elle est compressée en Gzip (les corps de requête peuvent devenir volumineux) :
  • Content-Type: application/json
  • Accept-Encoding: gzip  
Lors de l’envoi des requêtes, nous nous authentifions via OAuth, sujet que nous approfondirons dans la section suivante. L’API renvoie la charge utile suivante :
{
  "grouping name": {
    "1260294888811347969": {
      "favorites": "17111",
      "quote_tweets": "3254",
      "replies": "1828",
      "retweets": "5218"
    },
    "850006245121695744": {
      "favorites": "492",
      "quote_tweets": "66",
      "replies": "42",
      "retweets": "324"
    }
  }
}
Notez que la réponse contient les métriques demandées selon la structure décrite par les définitions de « groupings », avec les métriques d’abord répertoriées par ID de Post, puis par type d’engagement au niveau suivant. C’était assez simple. Si vous découvrez l’authentification OAuth, consultez la section suivante.

Authentification avec OAuth

OAuth est une norme d’authentification très répandue dans l’industrie technologique. Si vous utilisez déjà OAuth (peut-être avec d’autres X API), vous utilisez probablement une bibliothèque OAuth spécifique à un langage qui masque tous les détails complexes. Si vous découvrez OAuth, consultez notre page OAuth avec la X API ou rendez-vous directement sur https://oauth.net pour en savoir plus. Nous vous recommandons ensuite de choisir une bibliothèque OAuth pour le langage d’intégration de votre choix et de commencer par là. Avec ces bibliothèques, l’authentification consiste généralement à configurer vos clés et jetons, à créer un objet HTTP, puis à effectuer des requêtes avec cet objet. Par exemple, dans l’écosystème Ruby, le pseudo-code suivant propose une approche pour créer une App compatible OAuth à l’aide de la gem Ruby « oauth » et effectuer une requête POST :
require 'oauth'

#Assembler la requête JSON (comme ci-dessus).
request = make_json_request()

#Construire un objet consumer d'App avec ma clé et mon secret de consumer d'App.
consumer = OAuth::Consumer.new(keys['consumer_key'], keys['consumer_secret'], {:site => 'https://data-api.x.com'})
#Construire un token utilisateur avec les tokens fournis par le compte accordant l'autorisation. Si vous effectuez une requête app-only (vérification des Tweets qui ne nécessitent pas d'autorisation avec l'endpoint /totals), cette étape peut être ignorée.
token = {:oauth_token => keys['access_token'], :oauth_token_secret => keys['access_token_secret']}

#Créer un objet App activé pour oauth.
app = OAuth::AccessToken.from_hash(consumer, token)
#Effectuer une requête POST.
result = app.post("/insights/engagement/totals", request, {"content-type" => "application/json", "Accept-Encoding" => "gzip"})
L’Engagement API prend en charge l’authentification en mode application uniquement et en contexte utilisateur. Si vous collectez des métriques d’engagement pour des Posts publics non détenus avec l’endpoint /totals, aucune autorisation utilisateur n’est requise et vous pouvez utiliser l’authentification en mode application uniquement. Dans ce cas, vous utiliserez uniquement votre clé et votre secret d’App pour vous authentifier. OAuth permet également à une App d’effectuer une requête API « au nom d’un autre utilisateur », en utilisant des jetons liés à cet utilisateur. Si vous générez des métriques d’Engagement pour des Posts détenus, c’est‑à‑dire des Posts publiés par un utilisateur pour lequel vous disposez de jetons utilisateur, vous effectuerez des requêtes avec un contexte utilisateur, c’est‑à‑dire en vous authentifiant avec vos clés d’App et des access tokens spécifiques à l’utilisateur. Ces access tokens utilisateur sont généralement fournis via le processus “Sign-in with X” ou obtenus directement auprès de l’utilisateur (veuillez noter que vous devez utiliser twurl si vous obtenez les jetons directement auprès de l’utilisateur). Une fois que l’utilisateur vous fournit ses jetons, ils n’expirent pas et peuvent être utilisés avec l’Engagement API pour effectuer des requêtes en son nom, tant que l’utilisateur ne réinitialise pas ses jetons ni ne change son mot de passe ; dans ce cas, il devra vous fournir de nouveaux jetons. Vous pouvez vérifier quelles métriques nécessitent quelle authentification via ce tableau.

Sélection d’un endpoint de l’API Engagement

L’API Engagement propose trois endpoints distincts :
  • Totals - fournit des totaux globaux de certaines métriques pour des Posts « owned » ou « unowned ». Certaines métriques sont disponibles pour tous les Posts, tandis que d’autres ne sont disponibles que pour les Posts publiés au cours des 90 derniers jours. Prend en charge 250 Posts par requête.
  • 28 hour - fournit des métriques d’engagement sous forme de séries temporelles pour des Posts « owned » des 28 dernières heures. Prend en charge 25 Posts par requête.
  • Historical - fournit des métriques d’engagement sous forme de séries temporelles pour jusqu’à quatre semaines consécutives pour des Posts « owned » publiés depuis le 1er septembre 2014. Prend en charge 25 Posts par requête.  
Chaque endpoint a ses propres caractéristiques. Que vous prévoyiez d’utiliser les trois ou que vous cherchiez à déterminer lequel correspond le mieux à votre cas d’usage, il est important d’en comprendre les différences. Ci-dessous, nous présentons quelques concepts clés, explorons plus en détail les trois endpoints, puis proposons des exemples de cas d’usage généralement associés à un endpoint spécifique. Notre objectif est que ces informations vous aident à intégrer plus efficacement les trois, ou à décider quel endpoint unique correspond le mieux à votre objectif.  

Concepts clés

Plusieurs concepts clés permettent d’illustrer les différentes fonctionnalités et les data fournies par les trois endpoints de l’API Engagement.  
Impressions et métriques d’engagement
Les impressions correspondent au nombre de fois qu’un Post donné a été affiché sur la plateforme X dans un contexte organique. Les impressions générées par des Posts vus dans un contexte sponsorisé ou payant ne sont pas incluses. Avant l’Engagement API, les impressions d’un Post ne représentaient qu’une mesure des vues potentielles. Elles étaient calculées en comptant les abonnés du compte de l’auteur et ceux de tout compte ayant Retweeté le contenu. Elles ne tenaient pas compte de la situation fréquente où un utilisateur ne voit pas réellement le Post. Les métriques d’impression générées par l’Engagement API constituent une mesure effective du nombre de fois qu’un Post a été rendu à l’affichage. Si un abonné à votre compte manque votre Post, cela ne compte pas comme une impression. L’Engagement API fournit des métriques sur 14 types de métriques d’engagement uniques types de métriques, chacun représentant une action distincte qu’un utilisateur peut effectuer lorsqu’un Post lui est présenté. Celles-ci incluent le Retweet, le like, la réponse, le clic sur des entités comme les #hashtags, les liens et les médias, l’abonnement à l’auteur et la consultation du profil de l’auteur. Toutes ces actions individuelles sont agrégées dans une seule métrique, Engagements.
Contenu X détenu et non détenu
L’Engagement établit une distinction claire entre les Posts détenus et non détenus. Les Posts détenus sont des Posts publiés depuis votre compte ou des Posts pour lesquels vous avez obtenu l’autorisation de demander des données d’engagement. Comme avec les autres X API, vous obtenez cette autorisation lorsque d’autres utilisateurs/comptes X partagent des access tokens qui vous permettent d’effectuer des requêtes API en leur nom. Une manière courante d’obtenir ces tokens est le processus « Sign in with X ». L’endpoint /totals fournit des données d’engagement pour les Posts détenus et non détenus. Pour les Posts non détenus, vous pouvez demander les métriques d’engagement publiquement visibles dans l’interface d’un Post : Like, Retweet et Reply. Pour ces métriques, ce que l’Engagement API apporte, c’est la capacité de les récupérer à grande échelle de manière automatisée. Pour les Posts détenus, l’endpoint /totals fournit également les métriques Impression et Engagement (total). Les endpoints /28hr et /historical fournissent des métriques uniquement pour les Posts détenus, ce qui signifie que vous devez transmettre le context utilisateur lors de l’envoi de la requête à ces endpoints.
Données d’engagement totales et en séries temporelles
L’endpoint /totals fournit, comme son nom l’indique, uniquement des totaux globaux pour ses types d’engagement. Ces chiffres représentent les totaux à jour depuis la publication du Post. Si un Post vient d’être publié et que vous interrogez ses métriques à plusieurs reprises, ces totaux évolueront généralement à chaque requête. Les endpoints /28hr et /historical peuvent fournir à la fois des totaux globaux et des séries temporelles. Lorsque vous demandez des séries temporelles, les métriques d’engagement peuvent être agrégées par jour ou par heure.    Consultez notre documentation sur les regroupements d’engagement pour savoir comment demander des séries temporelles avec les endpoints /28hr et /historical.

Endpoints et exemples de cas d’utilisation

Compte tenu des caractéristiques et des différences mentionnées ci‑dessus, chaque endpoint se prête généralement à des types d’usages distincts. Pour vous aider à déterminer quel endpoint sert le mieux votre cas d’usage, vous trouverez ci‑dessous quelques exemples de déclarations d’utilisateurs et l’endpoint qui y répond le mieux.
/totals
  • J’ai seulement besoin d’accéder à certains types de métriques (Impressions, Engagements, Favoris, Retweets, Quote Tweets, Réponses et Vues de la vidéo).
  • J’ai besoin d’accéder aux données d’engagement de base pour n’importe quel Post, pas seulement les Posts dont je suis propriétaire.
  • Je veux comparer les performances à celles d’un concurrent.
  • Je veux suivre les statistiques d’engagement de base pour un hashtag ou une campagne qui inclut des Posts qui ne m’appartiennent pas.
  • Je n’ai pas besoin de données ventilées par jour ou par heure ; j’ai seulement besoin du total actuel lorsque j’effectue une requête.
  • J’ai besoin d’une seule métrique à afficher dans un rapport ou un tableau de bord et je ne veux stocker aucune donnée.
  • Je veux afficher des données au chargement de la page et j’ai simplement besoin d’effectuer une requête et d’obtenir une réponse.
  • J’ai besoin d’accéder à des données pour des centaines de milliers ou des millions de Posts par jour via des requêtes GET.  
/28hr
  • J’ai besoin d’accéder aux 17 types de métriques.
  • Je veux afficher les data pour des Posts très récents publiés au cours des 28 dernières heures.
  • J’ai une tâche qui s’exécute une fois par jour pour obtenir les data qui m’intéressent et je n’ai besoin d’obtenir les data que pour la dernière journée.
  • J’ai besoin que les métriques soient ventilées par jour ou par heure.
  • Je veux afficher, dans un tableau de bord, des séries chronologiques de l’activité par heure.
  • J’ai besoin d’un niveau d’accès élevé pour des centaines de milliers de Posts par jour.
  • Je dispose de capacités de stockage, je peux actualiser les data une fois par jour et conserver un cumul continu.  
/historical
  • J’ai besoin d’accéder aux 17 types de métriques.
  • J’ai besoin d’obtenir des données historiques pour des Posts créés remontant jusqu’en septembre 2014.
  • Je souhaite présenter une analyse historique détaillée comparant des campagnes.
  • J’ai besoin que les métriques soient ventilées par jour ou par heure.
  • Je n’ai pas besoin d’un niveau d’accès élevé à l’API Engagement et j’ai seulement besoin d’obtenir des données pour quelques centaines ou quelques milliers de Posts par jour.

Caractéristiques clés de l’API d’engagement

  • API RESTful fournissant des données JSON et prenant en charge les requêtes POST avec des corps JSON.
  • Types de requêtes : Les apps clientes peuvent effectuer les types de requêtes suivants :
    • Engagements totaux — requête HTTP POST vers l’endpoint /totals
    • Engagements des dernières 28 heures — requête HTTP POST vers l’endpoint /28hr
    • Engagements historiques — requête HTTP POST vers l’endpoint /historical
  • Authentification OAuth :
    • Contexte utilisateur OAuth 1.0 : Toutes les métriques sont disponibles pour les Posts appartenant à un utilisateur ayant autorisé votre App via l’OAuth à 3 volets. Vous devez utiliser les Access Tokens de cet utilisateur lors de votre requête.
    • OAuth 2.0 Bearer Token : Certaines métriques (Retweets, Quote Tweets, Replies, Favorites et Video Views) sont disponibles pour tout Post public.
  • Métadonnées et structure de la requête : Les données de requête sont un objet JSON composé d’un tableau d’ID de Post, d’un tableau de types d’engagement et d’une structure de regroupement d’engagement.
  • Posts par requête :
    • endpoint /totals : 250 ID de Post
    • endpoint /28hr : 25 ID de Post
    • endpoint /historical : 25 ID de Post
  • Disponibilité des métriques d’engagement :
    • /totals — Totaux des métriques depuis la publication du Post. Impressions et Engagements sont disponibles pour les Posts publiés au cours des 90 derniers jours, tandis que Retweets, Quote Tweets, Replies, Favorites et Video Views sont disponibles pour tous les Posts.
    • /28hr — Les 28 dernières heures à partir du moment de la requête.
    • /historical — Toute période de 28 jours commençant le 1er septembre 2014.
  • Types de métriques : Chaque requête inclut un tableau de Types de métriques. Leur disponibilité dépend de l’endpoint et, pour l’endpoint /totals, du fait que les Posts soient autorisés par l’utilisateur.
    • endpoint /totals :
      • Tous les Posts : Favorites, Retweets, Quote Tweets, Replies et Video Views
      • Nécessite le Contexte utilisateur OAuth 1.0a : Impressions, Engagements, Favorites, Replies et Retweets
    • endpoints /28hr et /historical (nécessitent le Contexte utilisateur OAuth 1.0a avec l’Access Token du propriétaire du Post) : Impressions, Engagements, Favorites, Replies, Retweets, URL Clicks, Hashtag Clicks, Detail Click, Permalink Clicks, Media Clicks, App Install Attempts, App Opens, Post Emails, Video Views et Media Views
  • Regroupements d’engagement : Chaque requête inclut un tableau de Regroupements d’engagement. Grâce à ces regroupements, vous pouvez personnaliser l’organisation des métriques renvoyées. Jusqu’à trois regroupements peuvent être inclus dans chaque requête. Les métriques peuvent être organisées selon les valeurs suivantes :
    • Tous les endpoints : ID de Post, Type d’engagement
    • endpoints /28hr et /historical : Ces endpoints fournissent des séries chronologiques si ces regroupements supplémentaires sont spécifiés : Engagement Day, Engagement Hour
  • Attentes d’intégration : Votre équipe sera responsable de ce qui suit.
    • Créer et maintenir une app cliente capable d’envoyer des requêtes HTTP à l’API d’engagement qui renvoie des métriques d’engagement pour l’ID de Post inclus dans la requête.
  • Limitations
  • Les vues vidéo ne sont disponibles que pour les Posts âgés de 1 800 jours ou moins.

Authentification avec l’Engagement API

Veuillez noter : X doit activer l’accès à l’Engagement API pour votre App développeur avant que vous puissiez commencer à utiliser l’API. À cette fin, veillez à communiquer l’App ID que vous comptez utiliser à des fins d’authentification à votre chargé de compte ou à l’équipe d’assistance technique.
Deux méthodes d’authentification sont disponibles avec l’Engagement API : OAuth 1.0a et OAuth 2.0 Bearer Token. OAuth 2.0 Bearer Token (également appelé « application-only ») vous permet d’accéder aux métriques d’engagement publiques. Cette méthode d’authentification peut être utilisée pour obtenir les totaux des Favorites (alias likes), des Retweets, des Quote Tweets, des Replies et des vues vidéo pour tout Post public lors de requêtes vers le /totals endpoint. OAuth 1.0a (également appelé « user context ») vous permet d’effectuer des requêtes au nom d’un utilisateur et d’accéder aux métriques d’engagement privées qui lui appartiennent. Cette méthode d’authentification est requise pour :
  • Toutes les requêtes envoyées aux /28hr endpoint et /historical endpoint
  • L’accès à l’une des métriques privées suivantes : Impressions, Engagements, Media Views, Media Engagements, URL Clicks, Hashtag Clicks, Detail Expands, Permalink Clicks, App Install Attempts, App Opens, Email Post, User Follows et User Profile Clicks
Lorsque vous envoyez une requête avec OAuth 1.0a, vous devez inclure les Access Tokens (Access Token et Secret) de l’utilisateur qui possède le Post ou la ressource protégée visé(e). Si vous ne fournissez pas les Access Tokens utilisateur appropriés lors de la demande de données protégées, l’Engagement API renverra une erreur 403 Forbidden. L’Engagement API ne vous permettra pas de récupérer des données d’engagement pour les protected Posts, même si vous vous authentifiez au nom du propriétaire de ces Posts. Toute tentative en ce sens renverra une erreur 400 Bad Request, avec le message "Tweet ID(s) are unavailable". Si vous envoyez une requête au nom de votre propre compte X (autrement dit, le compte qui possède l’App développeur), vous pouvez générer les Access Tokens requis directement depuis le developer portal, sous l’onglet « Keys and tokens » de l’App développeur. Si vous effectuez une requête au nom d’un autre utilisateur, vous devrez utiliser le flux OAuth à 3 étapes pour obtenir les Access Tokens requis. La documentation suivante contient plus d’informations sur la procédure : OAuth 1.0a: how to obtain a user’s access tokens. Pour des exemples supplémentaires, y compris sur la façon de s’authentifier à l’aide d’OAuth 1.0a, consultez le code Python d’exemple XDevelopers pour l’Engagement API.

Modifications récentes de l’Engagement API

L’Engagement API fournit des métriques d’impressions et d’engagement précieuses qui vous permettent de suivre les performances de votre activité sur X. Dans le cadre de nos efforts continus pour permettre des décisions marketing fondées sur nos data, nous sommes heureux de partager des modifications récentes de l’Engagement API qui renforcent l’harmonisation des métriques sur l’ensemble de X.   Nous avons récemment déployé des changements pour moderniser l’Engagement API afin d’utiliser la même méthodologie d’agrégation des métriques que le tableau de bord Analytics de X (analytics.x.com). Nous avons adopté une approche réfléchie pour minimiser les changements incompatibles de l’API lors du déploiement de ces nouvelles métriques et avons publié le premier ensemble de modifications le 9 octobre 2017. Ces changements améliorent la cohérence entre tous les endroits où vous ou vos clients pouvez suivre vos performances sur X. Veuillez consulter le récapitulatif détaillé ci-dessous :
MetricChange
engagementsNous avons mis à jour les métriques qui entrent dans le calcul des engagements globaux afin d’assurer la cohérence avec le tableau de bord d’analytics des Posts. La métrique engagements mesure « le nombre de fois où des personnes ont interagi avec ce Post ».

Pour les Posts qui incluent des médias comme une vidéo ou un GIF, la métrique engagements n’inclura plus les vues de médias. Les vues de médias sont désormais accessibles via une nouvelle métrique, media_views.
media_clicks*Cette métrique a été remplacée par une nouvelle métrique appelée « media_engagements ».
video_viewsDepuis le 6 juillet 2018, cette métrique est disponible pour les Posts « non détenus » via l’endpoint /totals. Cela signifie que vous pouvez accéder aux vues vidéo pour tous les Posts en utilisant l’authentification App-only. 

Vous ne pouvez demander que des vues vidéo âgées de moins de 1800 jours. Si vous tentez de demander des vues vidéo pour un Post âgé de plus de 1800 jours, vous recevrez ce qui suit :

“unsupported_for_video_views_tweet_ids”: [“TWEET_ID”]

Veuillez noter que cela diffère de media_views en ce que video_views repose sur le standard MRC de 50 % de la vidéo visible pendant au moins deux secondes.

De plus, notez que vous pouvez constater un écart entre la métrique de vues vidéo affichée sur les plateformes détenues et exploitées par X (application mobile et site web) et le nombre que vous recevez via les endpoints /28hr et /historical.

* Les vues vidéo affichées dans l’interface utilisateur de X et celles fournies via l’endpoint /totals affichent le total des vues vidéo agrégé sur tous les Posts dans lesquels la vidéo donnée a été publiée. Autrement dit, la métrique affichée dans l’UI inclut les vues combinées de toute instance où la vidéo a été Retweetée ou republiée dans des Posts distincts.
* Les vues vidéo fournies par les endpoints /28hr et /historical n’incluent que les vues générées par le Post spécifique pour lequel vous récupérez des métriques.
media_viewsCela inclut toutes les vues (lecture automatique et clic) de vos médias, comptabilisées pour les vidéos, vines, GIF et images.

Veuillez noter que les Posts avec des images n’affichent pas la métrique media_views dans le tableau de bord d’analytics, mais elle sera renvoyée par l’Engagement API.
media_engagements*Cela inclut le nombre de clics sur vos médias pour les vidéos, vines, GIF et images. Cette métrique remplace media_clicks.
quote_tweetsDepuis le 7 juillet 2020, cette métrique est disponible pour les Posts « non détenus » via l’endpoint /totals. Cela signifie que vous pouvez accéder au nombre de Quote Posts pour tous les Posts en utilisant l’authentification App-only.

Interprétation des métriques

Remarque : Vous pouvez constater des écarts entre les données affichées sur certains tableaux de bord web de X et celles fournies par l’Engagement API. Ces différences s’expliquent par le fait que les tableaux de bord web affichent généralement uniquement les engagements et/ou les impressions survenus dans la plage temporelle sélectionnée. Par exemple, un tableau de bord web peut présenter les engagements sur des Posts au cours d’un mois calendaire, tandis que l’Engagement API peut inclure des engagements qui dépassent la durée de ce mois mais restent dans la plage temporelle demandée. Dans ces cas, l’Engagement API fait foi et doit être considérée comme la source de référence.  

Données d’impressions et d’engagement

L’Engagement API fournit des impressions et des données d’engagement organiques. Les impressions correspondent au nombre de fois où un Post donné a été affiché sur la plateforme X dans un contexte organique. Les impressions générées par des Posts vus dans un contexte promu ou payant ne sont pas incluses. Les engagements correspondent au nombre de fois où un Post donné a suscité une interaction de la part d’un utilisateur, à la fois dans un contexte organique et promu. Les engagements incluent, sans s’y limiter, les Retweets, Favoris, Réponses, clics sur URL, clics sur hashtag, clics sur mention et vues de média. Pour la liste complète des actions d’engagement incluses, veuillez consulter la section Engagement Data. Pour calculer un taux d’engagement de référence, utilisez le nombre total d’engagements divisé par le nombre total d’impressions pour un Post donné sur la période analysée. Les données d’impressions et d’engagement ne peuvent être récupérées que pour des Posts provenant de @handles détenus ou de @handles ayant autorisé votre application à consulter les détails de leurs Posts. En interne, l’Engagement API suit le nombre de @handles uniques ayant fait l’objet de requêtes par rapport à la limite contractuelle de @handles. Il est recommandé de suivre également l’utilisation des requêtes @handle côté client tout au long du mois.  

Métriques vidéo

Il existe plusieurs métriques qui représentent les impressions des médias sur X. La première est notre métrique de vues vidéo, qui s’appuie sur le standard du MRC selon lequel 50 % de la vidéo doit être visible pendant au moins deux secondes. La seconde est Media Views, qui inclut toutes les vues (lecture automatique et clic) de vos médias, comptabilisées sur les vidéos, Vines, GIFs et images. La métrique de vues vidéo est disponible pour les Posts détenus via les endpoints /28hour et /historical, ainsi que pour tous les Posts non détenus via l’endpoint /totals. Bien que la métrique de vues vidéo dans l’interface utilisateur de X utilise le même standard du MRC, veuillez noter qu’il peut exister un écart entre la métrique de vues vidéo affichée sur les plateformes détenues et exploitées par X (application mobile et site Web) et le nombre que vous recevez via les différents endpoints de l’Engagement API.
  • Les vues vidéo fournies par l’endpoint /totals et l’interface utilisateur de X affichent la vue vidéo agrégée sur tous les Posts dans lesquels la vidéo donnée a été publiée. Cela signifie que la métrique fournie via /totals et affichée dans l’UI de X inclut les vues combinées de toute instance où la vidéo a été Retweetée ou republiée dans des Posts distincts.
  • Les vues vidéo fournies par les endpoints /28hour et /historical de l’Engagement API n’incluent que les vues générées par le Post spécifique pour lequel vous récupérez des métriques.
Veuillez noter que nous ne fournissons pas de vues vidéo pour les Posts âgés de plus de 1 800 jours. À la place, nous fournissons un objet qui répertorie les Posts plus anciens que 1 800 jours. Vous recevrez toujours toutes les autres métriques pour les Posts demandés dans un objet séparé. Voici un exemple de réponse :
{
  "unsupported_for_video_views_tweet_ids": [
    "479311209565413376",
    "477139122520219648"
  ],
  "nom du groupement": {
    "479311209565413376": {
      "favoris": "69",
      "impressions": "1692",
      "retweets": "142",
      "vues_vidéo": "0"
    },
    "477139122520219648": {
      "favoris": "10",
      "impressions": "1023",
      "retweets": "6",
      "vues_vidéo": "0"
    },
    "1397568983931392004": {
      "favoris": "268",
      "impressions": "26803",
      "retweets": "56",
      "vues_vidéo": "17902"
    }
  }
}
La métrique Media Views est uniquement disponible pour les Posts appartenant au compte, via les endpoints /28hour et /historical.

Regroupements de l’API Engagement

Les regroupements permettent d’organiser de façon personnalisée les métriques d’engagement renvoyées. Vous pouvez inclure jusqu’à 3 regroupements par requête. Vous pouvez choisir de regrouper les métriques selon une ou plusieurs des valeurs suivantes : Les trois endpoints prennent en charge :
  • tweet.id
  • engagement.type  
Les endpoints /28hr et /historical peuvent fournir des métriques en séries temporelles et prennent donc en charge :
  • engagement.day
  • engagement.hour
Les regroupements sont appliqués séquentiellement, ce qui vous permet de modifier le format de résultat souhaité en changeant l’ordre de vos valeurs group_by. Les regroupements qui contiennent quatre valeurs group_by ne seront pris en charge que dans l’un des deux formats suivants :
"group_by": [
    "tweet.id",
    "engagement.type",
    "engagement.day",
    "engagement.hour"
  ]
OU
"group_by": [
    "engagement.type",
    "tweet.id",
    "engagement.day",
    "engagement.hour"
]
Par exemple, si vous souhaitez générer des totaux globaux par type de métrique, incluez la spécification « groupings » suivante dans votre requête (et consultez la page API Reference pour plus d’informations sur la composition des requêtes) :
{
  "engagement_types": [
    "favorites",
    "replies",
    "retweets"
  ],
  "groupings": {
    "Totaux généraux": {
      "group_by": [
        "engagement.type"
      ]
    }
  }
}
Avec ce regroupement, la réponse JSON de l’Engagement API inclura un attribut au niveau racine “Grand Totals” qui contient les totaux globaux par type de métriques :
{
  "Totaux généraux": {
    "favorites": "12",
    "replies": "2",
    "retweets": "2"
  }
}
Pour générer une série chronologique sur 4 heures de métriques pour un Post unique, regroupée par ID de Post, la spécification de regroupement suivante ferait partie de la requête :
{
  "start": "2016-02-10T17:00:00Z",
  "end": "2016-02-10T21:00:00Z",
  "tweet_ids": [
    "697506383516729344"
  ],
  "engagement_types": [
    "impressions",
    "engagements"
  ],
  "groupings": {
    "Tweets_MetricType_TimeSeries": {
      "group_by": [
        "tweet.id",
        "engagement.type",
        "engagement.hour"
      ]
    }
  }
}
Avec ce regroupement, la réponse JSON de l’API Engagement comprendra un attribut de niveau racine « Tweets_MetricType_TimeSeries », qui contient les métriques ventilées par ID de Post, puis par type de métrique, ainsi que la série chronologique horaire correspondante :
{
  "Tweets_MetricType_TimeSeries": {
    "697506383516729344": {
      "impressions": {
        "2016-02-10": {
          "17": "551",
          "18": "412",
          "19": "371",
          "20": "280"
        }
      },
      "engagements": {
        "2016-02-10": {
          "17": "8",
          "18": "6",
          "19": "3",
          "20": "0"
        }
      }
    }
  }
}

Foire aux questions

Enterprise

Engagement API

L’accès à l’Engagement API est fourni via un abonnement Enterprise. Veuillez remplir ce formulaire pour contacter notre équipe commerciale.
Si votre contrat inclut une limite du nombre de handles uniques pouvant être utilisés avec l’Engagement API, le système interne de X suivra le nombre d’utilisateurs authentifiés propriétaires de Posts qui sont interrogés avec l’Engagement API. Les clients doivent également suivre ce nombre unique côté client. Actuellement, il n’existe ni API d’usage ni interface pour vérifier l’utilisation des @handles pour l’Engagement API. Le système ne bloquera pas les dépassements si davantage de @handles sont demandés que ce qui est prévu au contrat. À la fin du mois de facturation, le nombre de @handles uniques interrogés est comparé au montant contractuel et un dépassement sera facturé conformément aux conditions du contrat.
Actuellement, il n’existe ni API d’usage ni interface pour vérifier l’utilisation des @handles pour l’Engagement API. Le système ne bloquera pas les dépassements si davantage de @handles sont demandés que ce qui est prévu au contrat. À la fin du mois de facturation, le nombre de @handles uniques interrogés est comparé au montant contractuel et un dépassement sera facturé conformément aux conditions du contrat.Le champ metadata engagements renvoyé dans la charge utile n’est pas égal à la somme de toutes les différentes métriques d’engagement. Pourquoi ?C’est attendu. Le champ metadata engagements peut ne pas toujours correspondre à la somme de toutes les métriques d’engagement individuelles renvoyées par l’API. En effet, le champ metadata engagements peut inclure des engagements supplémentaires qui n’ont pas de métriques spécifiques détaillées dans la charge utile. Autrement dit, additionner tous les totaux des différentes métriques d’engagement peut ne pas donner la valeur affichée dans le champ de métrique engagements renvoyé dans la charge utile.Vous pouvez considérer le champ metadata engagements comme tout clic ou interaction effectué sur le Post.  Le champ url_clicks dans la réponse renvoie un nombre alors que le Post n’a pas d’URL. Comment est-ce possible ?Cela peut s’expliquer par le fait qu’un Post contenant, par exemple, un hashtag (qui crée un lien vers une autre page) sera comptabilisé comme un clic d’URL si un utilisateur clique dessus.  
Il existe plusieurs raisons pour lesquelles vous pourriez ne pas pouvoir récupérer des données d’engagement pour un Post spécifique, notamment :
  • Le ou les ID de Post que vous avez demandés ne sont pas disponibles en fonction du jeton d’authentification que vous utilisez pour récupérer des données pour le compte d’un tiers.
  • Le ou les ID de Post que vous avez demandés, spécifiquement pour l’endpoint /totals, ne datent pas de 90 jours ou moins et ne sont donc pas disponibles pour renvoyer les impressions ou les métriques d’engagement.
  • Le ou les ID de Post que vous avez demandés ne sont plus disponibles, ce qui indique généralement qu’ils ont été supprimés ou ne sont plus accessibles publiquement pour une autre raison.
Veuillez consulter les différents messages d’erreur que vous êtes susceptible de recevoir dans l’un des cas ci-dessus.
Vous pouvez utiliser les informations x-per-minute-limit et x-per-minute-remaining renvoyées par l’en-tête de réponse lorsque vous effectuez une requête à l’Engagement API pour surveiller votre consommation.x-per-minute-limit vous indique votre allocation et x-per-minute-remaining vous indique le nombre d’appels restants.

Guide de dépannage des erreurs

Veuillez consulter nos consignes d’authentification pour l’Engagement API.
[
    Your account could not be authenticated. Reason: Unknown Authorization Type;
]
Assurez-vous de ne pas utiliser d’access tokens ni de secrets lorsque vous tentez de vous authentifier sur l’endpoint /totals. En effet, si vous incluez ces tokens et que vous cherchez à récupérer du contenu d’un Post non associé à ces tokens, vous obtiendrez probablement une erreur telle que :
[
    Forbidden to access tweets: 1054424731825229824;
]

Vous ne trouvez toujours pas ce que vous cherchez ?

Veuillez contacter l’assistance technique ; nous vous répondrons dans les meilleurs délais.

Référence de l’API

POST insights/engagement

Méthodes

MethodDescription
POST /insights/engagement/totalsRécupère le nombre total d’impressions et d’engagements pour un ensemble de Tweets.
POST /insights/engagement/historicalRécupère les impressions et les engagements pour un ensemble de Tweets sur une période allant jusqu’à 4 semaines, à partir du 1er septembre 2014.
POST /insights/engagement/28hrRécupère les impressions et les engagements pour un ensemble de Tweets sur les 28 dernières heures.

Authentification

L’Engagement API nécessite l’utilisation de HTTPS et prend en charge à la fois le User Context et l’Application-Only OAuth. La plupart des requêtes vers l’Engagement API exigent l’utilisation de l’OAuth « 3-Legged » (une version spécifique du User Context), ce qui signifie que vous utilisez la consumer key et la consumer secret de l’App qui a été enregistrée et approuvée pour l’accès à l’Engagement API par votre gestionnaire de compte Twitter, ainsi que l’access token et l’access token secret des propriétaires des Tweet pour appeler l’endpoint. Les requêtes suivantes nécessitent ce type d’OAuth :
  • Toute requête vers /totals pour obtenir les types de métriques Impressions et Engagements, limitées aux Tweets détenus
  • Toute requête vers /28hr
  • Toute requête vers /historical
Certaines requêtes vers l’Engagement API peuvent être effectuées en utilisant l’Application-Only OAuth, ce qui signifie que vous devez simplement fournir votre consumer key et votre consumer secret, ou un Jeton Bearer. La requête suivante peut être effectuée avec ce type d’OAuth :
  • Toute requête vers /totals pour obtenir les types de métriques Favorites, Replies, Retweets ou Video Views, qui peuvent être récupérés pour n’importe quel Tweet
Pour toute requête, vous devrez configurer une App Twitter et la clé API correspondante à l’aide de la console de gestion des apps disponible sur developer.x.com. Veuillez noter : vous pouvez consulter et modifier vos apps Twitter existantes via le tableau de bord des apps Twitter si vous êtes connecté à votre compte Twitter sur developer.x.com. Une fois votre App configurée, l’id de l’App devra être approuvé par votre représentant de compte afin que votre App puisse effectuer des requêtes vers l’Engagement API. Les access tokens doivent être utilisés pour représenter l’« utilisateur actuel », et les requêtes effectuées au nom d’un autre utilisateur doivent être signées avec un jeton valide. Assurez-vous d’encoder les caractères réservés de manière appropriée dans les URL et les corps de requête POST avant de préparer les chaînes de base de signature OAuth. Pour plus d’informations sur la mise en route avec OAuth, veuillez consulter les liens suivants :

POST /insights/engagement/totals

L’endpoint totals permet de récupérer le nombre total actuel d’impressions et d’engagements pour un ensemble pouvant compter jusqu’à 250 Tweets à la fois.
Méthode de requêteHTTP POST
URLhttps://data-api.x.com/insights/engagement/totals
Type de contenuapplication/json
CompressionGzip. Pour effectuer une requête avec la compression Gzip, envoyez un en-tête Accept-Encoding dans la requête de connexion.
L’en-tête doit ressembler à ceci :

Accept-Encoding: gzip
Format POSTLes requêtes peuvent être envoyées sous forme de requête POST où le corps est un objet JSON contenant une collection d’ID de Tweet et un regroupement souhaité. Le POST est formaté comme un tableau avec un objet tweets, engagements et groupings. Chaque requête peut contenir un maximum de 250 ID de Tweet.

Un exemple de corps POST ressemble à :


{
“tweet_ids”: [
“Tweet ID 1”,
“Tweet ID 2”,
“Tweet ID 3”
],
“engagement_types”: [
“impressions”,
“engagements”,
“favorites”,
“quote_tweets”
],
“groupings”: {
“grouping name”: {
“group_by”: [
“tweet.id”,
“engagement.type”
]
}
}
}
ID de TweetUn tableau qui inclut les ID de Tweet pour les Tweets dont les données d’engagement doivent être interrogées. Veuillez noter que vous ne pouvez demander des données que pour les Tweets créés par le @handle authentifié. Jusqu’à 250 Tweets peuvent être inclus par requête, et les ID de Tweet doivent être représentés sous forme de chaînes de caractères.
Types d’engagementUn tableau qui inclut les types de métriques d’engagement à interroger. L’endpoint Totals ne prend en charge que les types d’engagement suivants : impressions, engagements, favorites, retweets, quote_tweets, replies, video_views.
L’endpoint /totals prend en charge la possibilité de récupérer impressions et engagements pour les Tweets créés dans les 90 derniers jours, et favorites, retweets, quote_tweets, replies et video_views pour tout Tweet.
RegroupementsLes résultats de l’API Engagement peuvent être retournés dans différents groupes pour répondre au mieux à vos besoins. Vous pouvez inclure un maximum de 3 regroupements par requête.

Pour chaque regroupement, vous pouvez définir un nom de regroupement personnalisé pour faciliter la référence à ce type de regroupement dans votre application.

Une fois que vous avez défini un nom de regroupement, vous pouvez choisir de regrouper tweet.id et/ou engagement.type.

Les regroupements sont traités en série, de sorte que vous pouvez modifier le format de résultat souhaité en changeant l’ordre de vos valeurs group_by. Un exemple de regroupement qui affichera les métriques séparées par ID de Tweet et type de métrique ressemble à :


“groupings”: {
“my grouping name”: {
“group_by”: [
“tweet.id”,
“engagement.type”
]
}
}
Limite de taille POSTLes requêtes peuvent être effectuées pour un maximum de 250 ID de Tweet à la fois.
Format de réponseJSON. L’en-tête de votre requête doit spécifier le format JSON pour la réponse.
Limite de tauxVous serez soumis à une limite de taux par minute, comme spécifié dans votre contrat selon votre niveau d’accès.
Exemple de requête (métriques publiques)curl —request POST
—url https://data-api.x.com/insights/engagement/totals
—header ‘accept-encoding: gzip’
—header ‘authorization: Bearer ’
—header ‘content-type: application/json’
—data ’{
“tweet_ids”: [
“1070059276213702656”,“1021817816134156288”,“1067094924124872705”
],
“engagement_types”: [
“favorites”,“retweets”,“replies”,“quote_tweets”,“video_views”
],
“groupings”: {
“perTweetMetricsUnowned”: {
“group_by”: [
“tweet.id”,
“engagement.type”
]
}
}
}
—verbose
—compressed
Exemple de requêtecurl —request POST
—url https://data-api.x.com/insights/engagement/totals
—header ‘accept-encoding: gzip’
—header ‘authorization: OAuth oauth_consumer_key=“consumer-key-for-app”,oauth_nonce=“generated-nonce”,oauth_signature=“generated-signature”,oauth_signature_method=“HMAC-SHA1”, oauth_timestamp=“generated-timestamp”,oauth_token=“access-token-for-authed-user”, oauth_version=“1.0”’
—header ‘content-type: application/json’
—data ’{
“tweet_ids”: [
“1060976163948904448”,“1045709644067471360”
],
“engagement_types”: [
“favorites”,“replies”,“retweets”,“video_views”,“impressions”,“engagements”
],
“groupings”: {
“perTweetMetricsOwned”: {
“group_by”: [
“tweet.id”,
“engagement.type”
]
}
}
}’
—verbose
—compressed
Exemple de réponse (métriques publiques){
“perTweetMetricsUnowned”: {
“1021817816134156288”: {
“favorites”: “530”,
“quote_tweets”: “79”,
“replies”: “147”,
“retweets”: “323”,
“video_views”: “0”
},
“1067094924124872705”: {
“favorites”: “1360”,
“quote_tweets”: “29”,
“replies”: “56”,
“retweets”: “178”,
“video_views”: “5754512”
},
“1070059276213702656”: {
“favorites”: “69”,
“quote_tweets”: “5”,
“replies”: “7”,
“retweets”: “26”,
“video_views”: “0”
}
}
}
Exemple de réponse{
“perTweetMetricsOwned”: {
“1045709644067471360”: {
“engagements”: “2”,
“favorites”: “0”,
“impressions”: “47”,
“replies”: “0”,
“retweets”: “8”,
“quote_tweets”: “5”,
“video_views”: “0”
},
“1060976163948904448”: {
“engagements”: “4”,
“favorites”: “0”,
“impressions”: “148”,
“replies”: “1”,
“retweets”: “9”,
“quote_tweets”: “2”,
“video_views”: “0”
}
}
}
ID de Tweet non disponiblesPour les requêtes qui incluent des ID de Tweet devenus non disponibles (par exemple, supprimés), les données appropriées seront renvoyées pour tous les ID de Tweet disponibles, et les ID de Tweet non disponibles seront référencés dans un tableau appelé unavailable_tweet_ids. Par exemple :

{
“start”: “2015-11-17T22:00:00Z”,
“end”: “2015-11-19T02:00:00Z”,
“unavailable_tweet_ids”: [
“323456789”
],
“group1”: {
“423456789”: {
“favorites”: “67”,
“replies”: “8”,
“retweets”: “26”,
“quote_tweets”: “2”
}
}
}

POST /insights/engagement/28hr

L’endpoint « 28 heures » permet de récupérer les impressions et les engagements pour un ensemble allant jusqu’à 25 Tweets sur les 28 dernières heures. Cet endpoint permet également de demander des métriques pour l’ensemble des métriques individuelles prises en charge. Pour la liste complète des métriques prises en charge, consultez Disponibilité des métriques.
Méthode de requêteHTTP POST
URLhttps://data-api.x.com/insights/engagement/28hr
Type de contenuapplication/json
CompressionGzip. Pour effectuer une requête avec la compression Gzip, envoyez un en-tête Accept-Encoding dans la requête de connexion.
L’en-tête doit ressembler à ceci :

Accept-Encoding: gzip
Format POSTLes requêtes peuvent être envoyées sous forme de requête POST où le corps est un objet JSON contenant une collection d’ID de Tweet et un regroupement souhaité. Le POST est formaté comme un objet avec des propriétés tweet_ids, engagement_types et groupings. Chaque requête peut contenir un maximum de 25 ID de Tweet.

Un exemple de corps POST ressemble à :


{
“tweet_ids”: [
“Tweet ID 1”,
“Tweet ID 2”,
“Tweet ID 3”
],
“engagement_types”: [
“impressions”,
“engagements”,
“url_clicks”,
“detail_expands”
],
“groupings”: {
“grouping name”: {
“group_by”: [
“tweet.id”,
“engagement.type”,
“engagement.hour”
]
}
}
}
ID de TweetUn tableau qui inclut les ID de Tweet pour les Tweets à interroger pour les données d’engagement. Veuillez noter que vous ne pouvez demander des données que pour les Tweets qui ont été créés par le @handle authentifié. L’endpoint 28 heures prend en charge jusqu’à un maximum de 25 Tweets par requête, et les ID de Tweet doivent être représentés sous forme de chaînes de caractères.
Types d’engagementUn tableau des types de métriques d’engagement à interroger.

Pour l’endpoint 28 heures, impressions, engagements et tous les types d’engagement individuels sont des métriques prises en charge. Pour la liste complète des métriques d’engagement prises en charge, voir Données d’engagement.
RegroupementsLes résultats de l’API d’engagement peuvent être retournés dans différents groupes pour répondre au mieux à vos besoins. Vous pouvez inclure un maximum de 3 regroupements par requête.

Pour chaque regroupement, vous pouvez définir un nom de regroupement personnalisé pour faciliter la référence à ce type de regroupement dans votre application. Une fois que vous avez défini un nom de regroupement, vous pouvez choisir de regrouper par une ou plusieurs des valeurs suivantes :
tweet.id
engagement.type
engagement.day
engagement.hour
Les regroupements sont traités en série, de sorte que vous pouvez modifier le format de résultat souhaité en changeant l’ordre de vos valeurs group_by. Un exemple de regroupement qui affichera les métriques séparées par ID de Tweet, type de métrique, ressemble à :

“groupings”: {
“my grouping name”: {
“group_by”: [
“tweet.id”,
“engagement.type”,
“engagement.day”
]
}
}


Les regroupements qui ont 4 éléments group_by ne sont valides que s’ils utilisent l’un des deux ordres suivants. Les requêtes qui ont 4 éléments group_by dans un seul regroupement qui ne sont pas l’un des suivants retourneront une erreur. De plus, un seul regroupement avec 4 éléments group_by sera autorisé par requête.

“group_by”: [
“tweet.id”,
“engagement.type”,
“engagement.day”,
“engagement.hour”
]

“group_by”: [
“engagement.type”,
“tweet.id”,
“engagement.day”,
“engagement.hour”
]
Limite de taille POSTLes requêtes peuvent être effectuées pour un maximum de 25 ID de Tweet à la fois.
Format de réponseJSON. L’en-tête de votre requête doit spécifier le format JSON pour la réponse.
Limite de tauxVous serez soumis à une limite de taux par minute, comme spécifié dans votre contrat selon votre niveau d’accès.
Exemple de requêtecurl -X POST “https://data-api.x.com/insights/engagement/28hr
-H ‘Accept-Encoding: gzip’
-H ‘Authorization OAuth oauth_consumer_key=“consumer-key-for-app”,oauth_nonce=“generated-nonce”,oauth_signature=“generated-signature”,oauth_signature_method=“HMAC-SHA1”, oauth_timestamp=“generated-timestamp”,oauth_token=“access-token-for-authed-user”, oauth_version=“1.0”’
-d ’{
“tweet_ids”: [
“123456789”
],
“engagement_types”: [
“impressions”,
“engagements”
],
“groupings”: {
“hourly-time-series”: {
“group_by”: [
“tweet.id”,
“engagement.type”,
“engagement.day”,
“engagement.hour”
]
}
}
}‘
Exemple de réponse{
“start”: “2015-09-14T17:00:00Z”,
“end”: “2015-09-15T22:00:00Z”,
“hourly-time-series”: {
“123456789”: {
“impressions”: {
“2015-09-14”: {
“17”: “551”,
“18”: “412”,
“19”: “371”,
“20”: “280”,
“21”: “100”,
“22”: “19”,
“23”: “6”
},
“2015-09-15”: {
“00”: “5”,
“01”: “2”,
“02”: “7”,
“03”: “3”,
“04”: “1”,
“05”: “0”,
“06”: “0”,
“07”: “0”,
“08”: “0”,
“09”: “0”,
“10”: “0”,
“11”: “0”,
“12”: “0”,
“13”: “0”,
“14”: “0”,
“15”: “0”,
“16”: “0”,
“17”: “0”,
“18”: “0”,
“19”: “0”,
“20”: “0”,
“21”: “0”
}
},
“engagements”: {
“2015-09-14”: {
“17”: “0”,
“18”: “0”,
“19”: “0”,
“20”: “0”,
“21”: “0”,
“22”: “0”,
“23”: “0”
},
“2015-09-15”: {
“00”: “0”,
“01”: “0”,
“02”: “0”,
“03”: “0”,
“04”: “0”,
“05”: “0”,
“06”: “0”,
“07”: “0”,
“08”: “0”,
“09”: “0”,
“10”: “0”,
“11”: “0”,
“12”: “0”,
“13”: “0”,
“14”: “0”,
“15”: “0”,
“16”: “0”,
“17”: “0”,
“18”: “0”,
“19”: “0”,
“20”: “0”,
“21”: “0”
}
}
}
}
}
ID de tweets indisponiblesPour les requêtes qui incluent des ID de tweets qui ont été rendus indisponibles (par exemple, supprimés), les données appropriées seront renvoyées pour tous les ID de tweets disponibles, et les ID de tweets indisponibles seront référencés dans un tableau appelé unavailable_tweet_ids. Par exemple :

{
“start”: “2015-11-17T22:00:00Z”,
“end”: “2015-11-19T02:00:00Z”,
“unavailable_tweet_ids”: [
“323456789”
],
“group1”: {
“423456789”: {
“favorites”: “67”,
“replies”: “8”,
“retweets”: 26
}
}
}

POST /insights/engagement/historical

L’endpoint historique permet de récupérer les impressions et les engagements pour un ensemble pouvant compter jusqu’à 25 Tweets, sur toute période d’une durée maximale de 4 semaines. Actuellement, les données antérieures au 1er septembre 2014 ne peuvent pas être obtenues via l’API. L’endpoint historique permet également de demander des métriques pour toutes les métriques individuelles prises en charge. Pour la liste complète des métriques prises en charge, consultez Disponibilité des métriques.
Méthode de requêteHTTP POST
URLhttps://data-api.x.com/insights/engagement/historical
Type de contenuapplication/json
CompressionGzip. Pour effectuer une requête avec la compression Gzip, envoyez un en-tête Accept-Encoding dans la requête de connexion.
L’en-tête doit ressembler à ceci :

Accept-Encoding: gzip
Format POSTLes requêtes peuvent être envoyées sous forme de requête POST où le corps est un objet JSON contenant une collection d’ID de Tweet et un regroupement souhaité. Le POST est formaté comme un tableau avec un objet tweets, engagements et groupings. Chaque requête peut contenir un maximum de 25 ID de Tweet. Chaque requête peut être spécifiée avec une date de début et de fin personnalisée d’une durée maximale de quatre semaines.


{
“tweet_ids”: [
“Tweet ID 1”,
“Tweet ID 2”,
“Tweet ID 3”
],
“engagement_types”: [
“impressions”,
“engagements”,
“url_clicks”,
“detail_expands”
],
“groupings”: {
“grouping name”: {
“group_by”: [
“tweet.id”,
“engagement.type”,
“engagement.hour”
]
}
}
}
Date de début et de finUne date de début et de fin personnalisée peut être spécifiée avec les valeurs start et end dans le cadre de la requête. Vous devez spécifier une date de début et de fin qui ne dépassent pas 4 semaines de durée. La date de début la plus ancienne possible actuellement est le 1er septembre 2014. Les dates de fin futures ne sont pas prises en charge. Si aucune date de début et de fin n’est fournie, l’API utilisera par défaut les 4 semaines immédiatement précédentes.

La granularité la plus fine avec laquelle les données peuvent être retournées par l’API Engagement est par heure. Pour toute requête effectuée avec des valeurs de début ou de fin qui ne tombent pas directement sur une limite horaire, les requêtes utiliseront par défaut l’heure inclusive la plus proche. Par exemple, une requête avec “start”:“2015-07-01T12:24:00Z” et “end”:“2015-07-10T08:37:00Z” utilisera par défaut “start”:“2015-07-01T12:00:00Z”,“end”:“2015-07-10T09:00:00Z”.
ID de TweetUn tableau qui inclut les ID de Tweet pour les Tweets à interroger pour les données d’engagement. Veuillez noter que vous ne pouvez demander des données que pour les Tweets qui ont été créés par le @handle d’authentification. L’endpoint historique de 4 semaines prend en charge jusqu’à un maximum de 25 Tweets par requête, et les ID de Tweet doivent être représentés sous forme de chaînes de caractères.
Types d’engagementUn tableau qui inclut les types de métriques d’engagement à interroger.

Pour l’endpoint historique de 4 semaines, impressions, engagements et tous les types d’engagement individuels sont des métriques prises en charge. Pour la liste complète des métriques d’engagement prises en charge, voir Données d’engagement.

Remarque : Actuellement, il y a trois métriques qui s’afficheront comme zéro pour les requêtes effectuées avant le 15 septembre 2015 : favorites, replies et retweets.
RegroupementsLes résultats de l’API Engagement peuvent être retournés dans différents groupes pour répondre au mieux à vos besoins. Vous pouvez inclure un maximum de 3 regroupements par requête.

Pour chaque regroupement, vous pouvez définir un nom de regroupement personnalisé pour faciliter la référence à ce type de regroupement dans votre application. Une fois que vous avez défini un nom de regroupement, vous pouvez choisir de regrouper par une ou plusieurs des valeurs suivantes :
tweet.id
engagement.type
engagement.day
engagement.hour
Les regroupements sont traités en série, de sorte que vous pouvez modifier le format de résultat souhaité en modifiant l’ordre de vos valeurs group_by. Un exemple de regroupement qui affichera les métriques séparées par ID de Tweet, type de métrique, et ressemble à :

“groupings”: {
“my grouping name”: {
“group_by”: [
“tweet.id”,
“engagement.type”,
“engagement.day”
]
}
}


Les regroupements qui ont 4 éléments group_by ne sont valides que s’ils utilisent l’un des deux ordres suivants. Les requêtes qui ont 4 éléments group_by dans un seul regroupement qui ne sont pas l’un des suivants retourneront une erreur. De plus, un seul regroupement avec 4 éléments group_by sera autorisé par requête.

“group_by”: [
“tweet.id”,
“engagement.type”,
“engagement.day”,
“engagement.hour”
]

“group_by”: [
“engagement.type”,
“tweet.id”,
“engagement.day”,
“engagement.hour”
]
Limite de taille POSTLes requêtes peuvent être effectuées pour un maximum de 25 ID de Tweet à la fois.
Format de réponseJSON. L’en-tête de votre requête doit spécifier le format JSON pour la réponse.
Limite de tauxVous serez soumis à une limite de taux par minute, comme spécifié dans votre contrat selon votre niveau d’accès.
Exemple de requêtecurl -XPOST “https://data-api.x.com/insights/engagement/historical
-H ‘Accept-Encoding: gzip’
-H ‘Authorization OAuth oauth_consumer_key=“consumer-key-for-app”,oauth_nonce=“generated-nonce”,oauth_signature=“generated-signature”,oauth_signature_method=“HMAC-SHA1”, oauth_timestamp=“generated-timestamp”,oauth_token=“access-token-for-authed-user”, oauth_version=“1.0”’
-d ’{
“start”: “2015-08-01”,
“end”: “2015-08-15”,
“tweet_ids”: [
“123456789”,
“223456789”,
“323456789”
],
“engagement_types”: [
“impressions”,
“engagements”,
“url_clicks”,
“detail_expands”
],
“groupings”: {
“types-by-tweet-id”: {
“group_by”: [
“tweet.id”,
“engagement.type”
]
}
}
}‘
Exemple de réponse{
“start”: “2015-08-01T00:00:00Z”,
“end”: “2015-08-15T00:00:00Z”,
“types-by-tweet-id”: {
“123456789”: {
“impressions”: “0”,
“engagements”: “0”,
“url_clicks”: “0”,
“detail_expands”: “0”
},
“223456789”: {
“impressions”: “788”,
“engagements”: “134”,
“url_clicks”: “30”,
“detail_expands”: “1323”
},
“323456789”: {
“impressions”: “4”,
“engagements”: “0”,
“url_clicks”: “2”,
“detail_expands”: “0”
}
}
}
ID de Tweet indisponiblesPour les requêtes qui incluent des ID de Tweet devenus indisponibles (par exemple, supprimés), les données appropriées seront renvoyées pour tous les ID de Tweet disponibles, et les ID de Tweet indisponibles seront référencés dans un tableau appelé unavailable_tweet_ids. Par exemple :

{
“start”: “2015-11-17T22:00:00Z”,
“end”: “2015-11-19T02:27:50Z”,
“unavailable_tweet_ids”: [
“323456789”
],
“group1”: {
“423456789”: {
“favorites”: “67”,
“replies”: “8”,
“retweets”: 26
}
}
}

Codes de réponse

StatutTexteDescription
200OKLa requête a abouti.
400Mauvaise requêteEn général, cette réponse survient lorsqu’un JSON invalide est présent dans la requête ou lorsque aucun payload JSON n’a été envoyé.
401Non autoriséL’authentification HTTP a échoué en raison d’identifiants invalides. Vérifiez vos clés OAuth et vos clés et jetons.
404IntrouvableLa ressource est introuvable à l’URL vers laquelle la requête a été envoyée, probablement parce qu’une URL incorrecte a été utilisée.
429Trop de requêtesVotre App a dépassé la limite de requêtes à l’API.
500Erreur interne du serveurUne erreur s’est produite du côté de Gnip. Réessayez votre requête en appliquant une stratégie de backoff exponentiel.
502Erreur de proxyUne erreur s’est produite du côté de Gnip. Réessayez votre requête en appliquant une stratégie de backoff exponentiel.
503Service indisponibleUne erreur s’est produite du côté de Gnip. Réessayez votre requête en appliquant une stratégie de backoff exponentiel.

Messages d’erreur

Dans divers scénarios, l’Engagement API renvoie des messages d’erreur spécifiques à la situation auxquels votre application doit être prête à faire face. Le tableau ci-dessous présente des exemples courants de ces messages d’erreur et la façon de les interpréter. Veuillez noter que, dans de nombreux cas, l’Engagement API renverra des résultats partiels pour les données disponibles, avec des messages d’erreur spécifiques, dans le cadre d’une réponse 200 OK fournissant des informations supplémentaires.
Message d’erreurDescription
"errors":["Your account could not be authenticated. Reason: Access token not found"]Une erreur dans le composant d’authentification de la requête. Le “Reason” doit fournir des informations utiles pour diagnostiquer l’erreur. Si vous ne parvenez pas à la résoudre, veuillez envoyer l’erreur complète, y compris le “Reason”, à notre équipe d’assistance.
"errors":["1 Tweet ID(s) are unavailable"],"unavailable_tweet_ids": ["TWEET_IDS"]Le ou les id de Tweet demandés ne sont plus disponibles, ce qui indique généralement qu’ils ont été supprimés ou ne sont plus accessibles publiquement pour une autre raison.
"errors":["Impressions & engagements for tweets older than 90 days (*TIME_PERIOD*) are not supported"],"unsupported_for_impressions_engagements_tweet_ids":[*TWEET_IDS*]Le ou les id de Tweet que vous avez demandés pour l’endpoint /totals ont plus de 90 jours et ne peuvent donc pas renvoyer les métriques d’impressions ou d’engagements.
"errors":["Forbidden to access tweets: *TWEET_IDS*"]Le ou les id de Tweet demandés ne sont pas accessibles avec l’access token que vous utilisez pour récupérer des données pour le compte d’un tiers.
I