Cet endpoint a été mis à jour pour inclure les métadonnées d’édition de Publication. Pour en savoir plus sur ces métadonnées, consultez la page de notions de base « Edit Posts ». Cet endpoint est souvent utilisé avec les endpoints Direct Messages. Nous avons lancé de nouveaux endpoints Direct Messages v2. Notez que les Account Activity APIs Enterprise et Premium prennent en charge les messages v2 en tête-à-tête, mais ne prennent pas encore en charge les conversations de groupe.
Enterprise
L’Account Activity API vous permet de vous abonner à des activités en temps réel liées à un compte utilisateur via des webhooks. Cela signifie que vous pouvez recevoir en temps réel des Publications, des Direct Messages et d’autres événements de compte provenant d’un ou plusieurs des comptes que vous possédez ou auxquels vous êtes abonné, via une seule connexion.
Vous recevrez toutes les activités suivantes pour chaque abonnement utilisateur associé à votre enregistrement de webhook :
Veuillez noter - Nous ne fournissons pas de données de la timeline d’accueil via l’Account Activity API. Veuillez utiliser GET statuses/home_timeline pour récupérer ces données.
Série de vidéos
Résumé des fonctionnalités
-
Des questions ? Vous rencontrez des erreurs ?
- Consultez notre page Questions fréquentes ou le guide de résolution des erreurs.
-
Explorez nos exemples de code :
- Tableau de bord Enterprise Account Activity API, une application web Node.js qui affiche les événements webhook en utilisant l’offre Enterprise de l’Account Activity API et inclut la fonctionnalité Replay.
- Le chatbot SnowBot, une application web Ruby basée sur les API Enterprise Account Activity et Direct Message.
Gérer les webhooks et les utilisateurs abonnés
- Une App X enregistrée - inscrivez-vous ici
- Un Jeton Bearer - en savoir plus
- Un webhook qui réussit un Challenge-Response Check (CRC) - en savoir plus
- Un compte Enterprise - [postuler ici]https://developer.x.com/en/products/x-api/enterprise
Gestion d’un webhook :
- Ajouter un webhook
- Afficher un webhook
- Supprimer un webhook
Commençons par enregistrer une nouvelle URL de webhook pour le contexte d’application donné.L’URL sera validée via une requête CRC avant l’enregistrement. Une fois que vous avez enregistré un webhook, veillez à noter l’ID du webhook, car vous en aurez besoin plus tard.Copiez la requête cURL suivante dans votre ligne de commande après avoir modifié les éléments suivants :
-
URL
<URL>par ex.https://yourdomain.com/webhooks/twitter/ -
Consumer key
<CONSUMER_KEY>par ex.xvz1evFS4wEEPTGEFPHBog -
Access token
<ACCESS_TOKEN>par ex.370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb
Gestion des utilisateurs abonnés :
- Ajouter un abonnement
- Afficher les abonnements
- Supprimer un abonnement
Nous allons commencer par abonner un utilisateur afin que vous receviez tous les types d’événements.Copiez la requête cURL suivante dans votre terminal après avoir modifié les éléments suivants :
-
Webhook ID
<:WEBHOOK_ID>p. ex.1234567890 -
Nom de la clé consommateur
<CONSUMER_KEY>p. ex.xvz1evFS4wEEPTGEFPHBog -
Jeton d’accès de l’utilisateur abonné
<SUBSCRIBING_USER'S_ACCESS_TOKEN>p. ex.370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb
Articles de référence
- Vue d’ensemble du Challenge-Response Check (CRC)
- [Types de données de l’API Account Activity](/x-api/enterprise-gnip-2.0/fundamentals/account-activity#account-activity-data-object-structure
- Gestion des webhooks et des abonnements
Une visite guidée vidéo de l’Account Activity API
- Enregistrer un webhook
- Ajouter un abonnement utilisateur
- Supprimer un abonnement utilisateur
- Recevoir les activités de compte
- Rejouer les activités de compte
-
Vous avez des questions ? Vous rencontrez des erreurs ?
- Lisez notre foire aux questions ou le guide de résolution des erreurs.
-
Explorez notre code d’exemple :
- Enterprise Account Activity API dashboard, une application web Node qui affiche les événements de webhook à l’aide du niveau Enterprise de l’Account Activity API et inclut la fonctionnalité Replay.
- Le SnowBot chatbot, une application web Ruby basée sur les API Enterprise Account Activity et Direct Message.
Premiers pas avec les webhooks
1. Créer une app X.
- Créez une app X avec un compte développeur approuvé depuis la Console de développement. Si vous créez l’app au nom de votre entreprise, il est recommandé de la créer avec un compte X d’entreprise. Pour demander un compte développeur, cliquez ici.
- Activez « Read, Write and Access direct messages » dans l’onglet permissions de la page de votre app.
- Dans l’onglet « Keys and Access Tokens », notez la Consumer Key (API Key) et le Consumer Token (API Secret) de votre app.
- Dans ce même onglet, générez l’Access Token et l’Access Token Secret de votre app. Vous aurez besoin de ces Access Tokens pour enregistrer l’URL de votre webhook, qui est l’endpoint où X enverra les événements de compte.
- Si vous ne connaissez pas encore X Sign-in et le fonctionnement des contextes utilisateur avec la X API, consultez la section Obtaining Access Tokens. Lorsque vous ajoutez des comptes pour lesquels recevoir des événements, vous les abonnerez en utilisant les Access Tokens de ce compte.
- Notez l’ID numérique de votre app, tel qu’il apparaît sur la page « Apps » de la Console de développement. Lorsque vous demandez l’accès à l’Account Activity API, vous aurez besoin de cet app ID.
2. Obtenir l’accès à l’API Account Activity
3. Développer une application consommatrice de webhooks
-
Créez une application web avec une URL à utiliser comme webhook pour recevoir les événements. Il s’agit de l’endpoint déployé sur votre serveur pour écouter les événements de webhook X entrants.
- Le path de l’URI est entièrement à votre discrétion. Cet exemple serait valide : https://mydomain.com_/service/listen_
- Si vous écoutez des webhooks provenant de diverses sources, un modèle courant est : https://mydomain.com/webhook/twitter
- Notez que l’URL spécifiée ne peut pas comporter de port (https://mydomain.com:5000/NoWorkie).
- Comme décrit dans notre guide Securing Webhooks, une première étape consiste à écrire du code qui reçoit une requête GET X Challenge Response Check (CRC) et y répond avec une réponse JSON correctement formatée.
- Enregistrez votre URL de webhook. Vous ferez une requête POST vers l’endpoint /webhooks.json?url=. Lorsque vous faites cette requête, X enverra une requête CRC à votre application web. Lorsqu’un webhook est correctement enregistré, la réponse inclut un id de webhook. Cet id de webhook sera nécessaire plus tard pour effectuer certaines requêtes vers l’Account Activity API.
- X enverra les événements de webhook de compte à l’URL que vous avez enregistrée. Assurez-vous que votre application web prend en charge les requêtes POST pour les événements entrants. Ces événements seront encodés en JSON. Voir ICI pour des exemples de payloads JSON de webhook.
- Une fois votre application web prête, l’étape suivante consiste à ajouter les comptes pour lesquels vous souhaitez recevoir des activités. Lors de l’ajout (ou de la suppression) de comptes, vous effectuerez des requêtes POST qui font référence à l’id du compte. Consultez notre guide sur l’ajout d’abonnements pour plus d’informations.
4. Valider la configuration
- Pour vérifier que votre App et votre webhook sont correctement configurés, ajoutez une Publication aux favoris parmi celles publiées par l’un des comptes X auxquels votre App est abonnée. Vous devriez recevoir un
favorite_eventsvia une requête POST vers l’URL de votre webhook pour chaque favori reçu par vos abonnés. - Notez qu’il peut s’écouler jusqu’à 10 secondes avant que les événements commencent à être délivrés après l’ajout d’un abonnement.
- Lors de l’enregistrement de l’URL de votre webhook, votre application web doit s’authentifier avec son consumer token et son secret et avec le user access token et le secret du propriétaire de l’App.
- Tous les Messages Privés entrants seront délivrés via webhooks. Tous les Messages Privés envoyés via POST direct_messages/events/new (message_create) seront également délivrés via webhooks. Cela permet à votre application web d’être informée des Messages Privés envoyés via un autre client.
-
Notez que chaque événement de webhook inclut un user ID
for_user_idqui indique pour quel abonnement l’événement a été délivré. - Si deux utilisateurs utilisent votre application web pour les Messages Privés dans une même conversation, votre webhook recevra deux événements en double (un pour chaque utilisateur). Votre application web doit en tenir compte.
- Si vous avez plusieurs applications web partageant la même URL de webhook et le même utilisateur associé à chaque application, le même événement sera envoyé plusieurs fois à votre webhook (une fois par application web).
- Dans certains cas, votre webhook peut recevoir des événements en double. Votre application de webhook doit être tolérante à ce comportement et effectuer une déduplication par event ID.
- N’attendez pas qu’une réponse Quick Reply suive directement une demande. Un utilisateur peut ignorer une demande Quick Reply et répondre via un Message Privé traditionnel. L’utilisateur peut également envoyer une réponse Quick Reply à une demande à laquelle il n’a pas répondu plus tôt dans le fil de messages.
-
Voir le code d’exemple :
- Enterprise Account Activity API dashboard, une application web Node qui affiche les événements de webhook en utilisant l’offre Enterprise de l’Account Activity API et inclut la fonctionnalité Replay.
- Le chatbot SnowBot, une application web Ruby appuyée sur les APIs Account Activity et Direct Message. Ce code source inclut un script pour aider à configurer les webhooks de l’Account Activity API.
Sécurisation des webhooks
- Les vérifications de type challenge-response permettent à X de confirmer que vous êtes bien propriétaire de l’application web qui reçoit les événements de webhook.
- L’en-tête de signature dans chaque requête POST vous permet de confirmer que X est bien la source des webhooks entrants.
Vérifications Challenge-Response
crc_token. À la réception de cette requête, votre application web doit construire un response_token chiffré à partir du paramètre crc_token et du Consumer Secret de votre application (détails ci‑dessous). Le response_token doit être encodé en JSON (voir l’exemple ci‑dessous) et renvoyé en moins de trois secondes. En cas de succès, un id de webhook sera renvoyé.
Un CRC est envoyé lorsque vous enregistrez votre URL de webhook ; l’implémentation de votre code de réponse CRC est donc une première étape fondamentale. Une fois votre webhook établi, X déclenchera un CRC approximativement toutes les 24 heures à partir de la dernière fois où nous avons reçu une réponse valide. Votre application peut également déclencher un CRC au besoin en effectuant une requête PUT avec l’id de votre webhook. Déclencher un CRC est utile lorsque vous développez votre application de webhook, par exemple après le déploiement d’un nouveau code et le redémarrage de votre service.
Le crc_token doit être considéré comme changeant à chaque requête CRC entrante et doit être utilisé comme message dans le calcul, où votre Consumer Secret est la clé.
Si la réponse n’est pas renvoyée dans les 3 secondes ou devient invalide, les événements ne seront plus envoyés au webhook enregistré.
La requête CRC aura lieu :
- Lorsqu’une URL de webhook est enregistrée.
- Environ toutes les heures pour valider votre URL de webhook.
- Vous pouvez déclencher manuellement un CRC en effectuant une requête PUT. Lorsque vous développez votre client de webhook, prévoyez de déclencher manuellement le CRC au fur et à mesure que vous développez votre réponse CRC.
Exigences concernant la réponse :
- Un hachage HMAC SHA-256 encodé en base64, créé à partir du
crc_tokenet de votre Consumer Secret d’App - Un
response_tokenvalide et un format JSON valide. - Une latence inférieure à 3 secondes.
- Un code de réponse HTTP 200.
Bibliothèques HMAC par langage :
Exemple de génération de jeton de réponse en Python :
Exemple de réponse JSON :
Autres exemples :
- ICI se trouve un exemple de méthode de réponse CRC écrite en Node.js.
- ICI se trouve un exemple de méthode de réponse CRC écrite en Ruby (voir generate_crc_response et la route /GET qui reçoit les événements CRC).
Validation optionnelle de l’en-tête de signature
- Créez un hachage à l’aide de votre consumer secret et du corps du payload reçu.
- Comparez le hachage créé avec la valeur x-twitter-webhooks-signature encodée en base64. Utilisez une méthode comme compare_digest pour réduire la vulnérabilité aux attaques par temporisation.
Recommandations de sécurité supplémentaires
Blocs réseau agrégés de X
- 199.59.148.0/22
- 199.16.156.0/22
- 192.133.77.0/26
- 64.63.15.0/24
- 64.63.31.0/24
- 64.63.47.0/24
- 202.160.128.0/24
- 202.160.129.0/24
- 202.160.130.0/24
Configurations de serveur recommandées
- Note “A” au test ssllabs.com
- Activer TLS 1.2
- Activer la confidentialité persistante (Forward Secrecy)
- Désactiver SSLv2
- Désactiver SSLv3 (à cause de POODLE)
- Désactiver TLS 1.0
- Désactiver TLS 1.1
- Désactiver la compression TLS
- Désactiver les session tickets, sauf si vous faites une rotation des clés de tickets de session.
- Régler l’option “ssl_prefer_server_ciphers” ou “SSLHonorCipherOrder” sur “on” dans la configuration SSL.
- S’assurer que la liste de suites de chiffrement est une liste moderne, telle que :
ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:DES-CBC3-SHA
Gestion des webhooks et des abonnements
Création et modification de webhooks
Points de terminaison pour la gestion de la configuration des webhooks :
Pourquoi ne puis-je pas simplement mettre à jour l’URL du webhook ?
Ajout et suppression d’abonnements utilisateur
Points de terminaison de gestion des abonnements
Account Activity API : Enterprise
Veuillez noter : X doit activer l’accès à l’Account Activity API pour votre App développeur avant que vous puissiez commencer à utiliser l’API. À cette fin, veillez à communiquer l’App ID que vous avez l’intention d’utiliser pour l’authentification à votre responsable de compte ou à votre équipe d’assistance technique.
*_ L’authentification nécessite les jetons d’accès de l’utilisateur abonné. _
Pour les endpoints nécessitant une authentification OAuth 1.0a avec contexte utilisateur, vous devrez fournir les identifiants suivants pour authentifier la requête :
- Consumer Keys (API Key et Secret)
- Access Tokens (Access Token et Secret)
- POST account_activity/webhooks : Enregistrer une nouvelle URL de webhook pour le contexte d’application donné
- PUT account_activity/webhooks/:webhook_id : Déclencher une vérification de réponse au challenge (CRC) pour l’URL d’un webhook donné
- DELETE account_activity/webhooks/:webhook_id : Supprimer un webhook
- POST account_activity/webhooks/:webhook_id/subscriptions/all : Abonner l’application aux événements de compte d’un utilisateur
- GET account_activity/webhooks/:webhook_id/subscriptions/all : Vérifier si une configuration de webhook est abonnée aux événements d’un utilisateur
- DELETE account_activity/webhooks/:webhook_id/subscriptions/all : Désactiver un abonnement pour le contexte utilisateur et l’application fournis [DÉPRÉCIÉ]
Please note: Assurez-vous que votre App développeur est activée pour « Read, Write, and Direct Messages. » Vous pouvez modifier ce paramètre dans la section Projects & Apps de votre compte développeur, sous « App permissions » pour l’App développeur sélectionnée. Vous devrez régénérer les identifiants de votre App après avoir modifié les paramètres d’autorisations.
Please note: X doit activer l’accès à l’API Account Activity pour votre App développeur avant que vous puissiez commencer à utiliser l’API. À cette fin, veillez à communiquer l’App ID que vous avez l’intention d’utiliser à des fins d’authentification à votre responsable de compte ou à votre équipe d’assistance technique.
*_ L’authentification nécessite les jetons d’accès de l’utilisateur abonné._
Pour les points de terminaison qui nécessitent une authentification OAuth 1.0a en contexte utilisateur, vous devrez fournir les identifiants suivants pour authentifier la requête :
- Consumer Keys (API Key et Secret)
- Access Tokens (Access Token et Secret)
- POST account_activity/webhooks : Enregistrer une nouvelle URL de webhook pour le contexte d’application donné
- PUT account_activity/webhooks/:webhook_id : Déclencher un contrôle CRC (challenge response check) pour l’URL d’un webhook donné
- DELETE account_activity/webhooks/:webhook_id : Supprimer un webhook
- POST account_activity/webhooks/:webhook_id/subscriptions/all : Abonner l’application aux événements de compte d’un utilisateur
- GET account_activity/webhooks/:webhook_id/subscriptions/all : Vérifier si une configuration de webhook est abonnée aux événements d’un utilisateur
- DELETE account_activity/webhooks/:webhook_id/subscriptions/all : Désactiver un abonnement pour le contexte utilisateur et l’application fournis [DEPRECATED]
Remarque : Assurez-vous que votre App développeur est activée pour « Read, Write, and Direct Messages ». Vous pouvez modifier ce paramètre dans la section Projects & Apps de votre compte développeur, sous « App permissions » pour l’App développeur sélectionnée. Vous devrez régénérer les identifiants de votre App après avoir modifié les paramètres d’autorisation.
Réessais
Enterprise
L’un des avantages du niveau Enterprise de l’Account Activity API est un mécanisme de réessai pour les événements de webhook. Si un code de réponse HTTP 200 « success » n’est pas reçu, le serveur X déclenche un mécanisme de réessai, renvoyant l’événement de webhook jusqu’à trois fois sur une période de cinq minutes. Ce service de réessai des événements de webhook contribue à garantir la fiabilité et la récupération des événements lorsque des problèmes de réseau surviennent et pendant les interruptions de service et les déploiements côté client.
Que sont les retries ?
Chronologie des tentatives
Chronologie des réessais
Structure de l’objet de données Account Activity
Activités disponibles
Exemples de charge utile
Reportez-vous aux exemples de charge utile ci-dessous pour chaque événement Account Activity décrit dans le tableau ci-dessus.
tweet_create_events (Publications, Retweets, Réponses, Tweets cités)
tweet_create_events (@mentions)
favorite_events
follow_events
unfollow_events
block_events
unblock_events
mute_events
unmute_events
user_event
direct_message_events
direct_message_indicate_typing_events
direct_message_mark_read_events
tweet_delete_events
API Account Activity Replay
Enterprise
L’API Account Activity Replay est un outil de récupération de données qui vous permet de récupérer des événements jusqu’à cinq jours en arrière. Elle doit être utilisée pour récupérer des données dans les scénarios où votre serveur de webhook rate des événements : que ce soit en raison de déconnexions plus longues que la fenêtre de nouvelle tentative, ou dans les scénarios de reprise après sinistre où vous avez besoin de quelques jours pour rétablir votre système à la normale.
L’API Account Activity Replay a été développée pour tout scénario dans lequel vous n’ingérez pas les activités pendant une certaine période. Elle envoie les activités au même webhook utilisé pour la diffusion en temps réel d’origine des activités. Ce produit est un outil de récupération et non un outil de reconstitution, ce qui signifie que les événements ne seront rejoués que si une tentative de livraison antérieure a eu lieu. L’API Account Activity Replay ne peut pas livrer d’événements pour une période antérieure au moment de création d’un abonnement.
Utilisation de l’API Account Activity Replay
Limitations
Disponibilité des données et types
Introduction à la migration
- User Streams
- Site Streams
- GET direct_messages
- GET direct_messages/sent
- GET direct_messages/show
- POST direct_messages/new
- POST direct_messages/destroy
- Account Activity API enterprise et premium
- GET direct_messages/events/list
- GET direct_messages/events/show
- POST direct_messages/events/new
- POST direct_messages/events/destroy
- Guide de migration Account Activity API pour ceux qui passent de User Streams et Site Streams à notre nouveau service basé sur des webhooks
- Guide de migration Direct Message pour ceux qui migrent entre les endpoints REST Direct Message
- L’Account Activity Dashboard est une application web Node.js d’exemple, avec des scripts d’assistance pour démarrer avec l’Account Activity API.
- SnowBot est un chatbot d’exemple utilisant l’Account Activity API et les endpoints REST Direct Message. Il est écrit en Ruby, utilise le framework web Sinatra et est déployé sur Heroku.
Guide de migration : passer de User Streams/Site Streams à l’Account Activity API
Résumé des modifications
L’API Account Activity vous enverra des événements pour les comptes authentifiés et abonnés au moyen de webhooks, plutôt que via une connexion de streaming comme avec User Streams et Site Streams.APIs obsolètes
API de remplacement
Différences et considérations de migration
Nouvelles fonctionnalités
Gestion des abonnements utilisateur
Procédure de migration
Suivez les étapes ci-dessous pour migrer facilement de l’API Site Streams vers l’API Account Activity
- Nombre de webhooks nécessaires
- Abonnements/utilisateurs autorisés actuels/prévus gérés sur votre application
- Nombre actuel d’applications client X
- Niveau de support souhaité de la part de X (support via forum ou support enterprise géré en mode 1:1)
- Prix de chaque formule
- Activez « Read, Write and Access direct messages » dans l’onglet permissions de la page de votre App X. Notez que la modification de ces paramètres n’est pas rétroactive ; tout utilisateur déjà autorisé conservera les paramètres d’autorisation en vigueur au moment où il a été autorisé. Si un utilisateur ne vous a pas déjà donné l’accès en lecture, écriture et messages privés, vous devrez lui demander de réautoriser votre application.
- Si vous ne connaissez pas X Sign-in et le fonctionnement des contextes utilisateur avec la X API, consultez Obtaining Access Tokens.
- Générez des jetons d’accès pour le propriétaire de l’App X en bas de l’onglet « Keys and Tokens ». Sur ce même onglet, notez votre Consumer Key, Consumer Secret, Access Token et Access Token Secret. Vous en aurez besoin pour utiliser l’API.
- Générez un Jeton Bearer à l’aide de votre Consumer Key et de votre Consumer Secret pour les méthodes d’API application-only.
- Créez une application web avec un endpoint à utiliser comme webhook pour recevoir les événements (par exemple : https://your_domain.com/webhook/twitter ou https://webhooks.your_domain.com).
-
Utilisez votre Consumer Key, Consumer Secret, Access Token et Access Token Secret lors de la création de votre webhook. Notez que votre endpoint doit retourner une réponse JSON contenant un
response_tokenqui est un hachage HMAC SHA-256 encodé en base64, créé à partir ducrc_tokenet du Consumer Secret de votre App. - Consultez la documentation Securing Webhooks, en portant une attention particulière aux exigences liées au Challenge Response Check (CRC).
- Assurez-vous que votre webhook prend en charge les requêtes POST pour les événements entrants et les requêtes GET pour le CRC.
- Assurez-vous que votre webhook présente une faible latence (moins de 3 secondes pour répondre aux requêtes POST).
- Les API de webhooks sécurisent vos webhooks de deux manières :
- Afin de vérifier que vous êtes à la fois le propriétaire de l’application web et de l’URL du webhook, X effectuera un Challenge Response Check (CRC), à ne pas confondre avec un contrôle de redondance cyclique.
- Une requête GET avec un paramètre nommé
crc_tokensera envoyée à l’URL de votre webhook. Votre endpoint doit retourner une réponse JSON contenant unresponse_tokenqui est un hachage HMAC SHA-256 encodé en base64, créé à partir ducrc_tokenet du Consumer Secret de votre App. - Le
crc_tokenest susceptible de changer pour chaque requête CRC entrante. Lecrc_tokendoit être utilisé comme message dans le calcul, où votre Consumer Secret est la clé. - Si la réponse est invalide, l’envoi des événements au webhook enregistré cessera.
- Générez la liste de vos abonnements utilisateur actuels sur User Streams
- Configurez vos nouveaux abonnements à l’Account Activity API à l’aide de la requête POST account_activity/all/:env_name/subscriptions
- Confirmez vos abonnements à l’Account Activity API à l’aide de la requête _GET account_activity/all/:env_name/subscriptions/list _
- Générez la liste de vos abonnements actuels sur Site Streams à l’aide de la requête GET /1.1/site/c/:stream_id/info.json
- Configurez vos nouveaux abonnements à l’Account Activity API à l’aide de la requête POST account_activity/all/:env_name/subscriptions
- Confirmez vos abonnements à l’Account Activity API à l’aide de la requête _GET account_activity/all/:env_name/subscriptions/list _
- Enregistrez l’URL de votre webhook avec votre App à l’aide de POST webhooks et recevez un webhook_id.
- Utilisez le webhook_id renvoyé pour ajouter des abonnements utilisateur avec POST webhooks/:webhook_id/subscriptions/all.
Le tableau de bord Account Activity (exemple d’application pour l’API Account Activity)
- Téléchargez l’application d’exemple Account Activity Dashboard ici (elle utilise Node.js)
- Suivez les instructions du README pour installer et lancer l’application
- Une fois l’application lancée, vous pouvez utiliser l’interface utilisateur pour configurer facilement votre webhook et créer un nouvel abonnement
Activités disponibles
Types de messages de streaming obsolètes
Types d’événements obsolètes
Guide de migration des Messages privés
- Résumé des changements
- Nouvelles fonctionnalités
- Envoi de Messages privés
- Réception de Messages privés
- Suppression de Messages privés
Récapitulatif des modifications
Nouvelles fonctionnalités
- Prise en charge des pièces jointes multimédias (image, GIF et vidéo).
- Possibilité d’inviter les utilisateurs à fournir des réponses structurées avec une liste d’options prédéfinies.
- Jusqu’à 30 jours d’accès à l’historique des Messages privés.
Différences et considérations de migration
Nouvel objet Direct Message
Résumé
- Structure d’objet Direct Message entièrement nouvelle.
- Objet user simplifié.
- Nouvelles informations disponibles (réponses Quick Reply, pièces jointes, etc.).
Envoi de messages privés
Résumé
- Le message est défini dans le corps de la requête POST, au format JSON
- L’en-tête Content-Type doit être défini avec la valeur application/json
- Le corps JSON n’est pas pris en compte lors de la génération de la signature OAuth.
Récupération des messages privés
Récapitulatif
- Les messages envoyés et reçus sont désormais renvoyés par le même endpoint.
- Jusqu’à 30 jours de messages sont renvoyés.
- Pagination basée sur des curseurs.
- Accès en temps réel aux Messages privés (Direct Messages) via webhook.
Suppression des messages privés
Résumé
- La suppression d’un message privé nécessite l’id.
- Le nouveau endpoint requiert une requête DELETE.
- La manière dont les messages privés supprimés sont affichés dans les clients officiels X reste inchangée.
FAQ
Général
- Vitesse : nous livrons les données à la vitesse de X.
- Simplicité : nous livrons tous les événements d’un compte via une seule connexion webhook. Les activités diffusées via l’API incluent les Publications, les @mentions, les réponses, les Retweets, les Tweets cités, les Retweets de Tweets cités, les favoris, les Messages privés envoyés, les Messages privés reçus, les abonnements, les blocages et les masquages.
- Évolutivité : vous recevez toutes les activités pour un compte que vous gérez sans être limité par des limites de taux ni des plafonds d’événements.
webhook_id.
J’ai besoin d’environnements de développement, de préproduction et de production pour l’Account Activity API, est‑ce possible ?
Oui ! Avec les niveaux payants de l’Account Activity API (Premium payant et Enterprise), il est possible d’enregistrer plusieurs URL de webhook et de gérer séparément les abonnements pour chacune via les méthodes de l’API. De plus, plusieurs apps clientes peuvent être ajoutées à une liste d’autorisation afin de maintenir l’autorisation pour vos utilisateurs actuellement autorisés.
Avez-vous des guides étape par étape pour la mise en place de l’Account Activity API ?
En effet, nous en avons !
- Si vous débutez, nous vous recommandons de consulter notre guide Getting started with webhooks
-
Suivez nos scripts pris en charge par X Dev :
- Account Activity API dashboard, une application web Node qui affiche les événements webhook.
- Le chatbot SnowBot, une application web Ruby construite sur les Account Activity et Direct Message APIs. Cette base de code inclut un script pour aider à configurer les webhooks de l’Account Activity API.
- Le serveur répond à un CRC avec un jeton incorrect. Dans ce cas, notre système ne réessaiera pas de vous envoyer l’activité.
- L’URL du webhook a un certificat incorrect configuré. Dans ce cas, notre système ne réessaiera pas de vous envoyer l’activité.
- Votre serveur renvoie un code de réponse qui n’est ni 2XX, ni 4XXX, ni 5XXX.
- Vous indiquez l’utilisation de gzip sans réellement l’envoyer.
- Vous n’indiquez pas l’utilisation de gzip, mais vous l’envoyez effectivement dans la réponse.
/all/ de l’endpoint suivant par d’autres objets de données d’Account Activity pour limiter les activités livrées par l’API ? **POST https://api.x.com/1.1/account_activity/all/:env_name/subscriptions.json
Non, ce n’est pas possible. À l’heure actuelle, nous n’avons que le produit /all/ disponible.
**Existe-t-il un moyen d’utiliser l’Account Activity API sans demander les autorisations Direct Messages aux utilisateurs ? **
À ce stade, les autorisations Direct Messages sont nécessaires, car il n’existe aucun moyen de « filtrer » les activités Direct Messages pour cette API.
Existe-t-il une version sandbox de l’Account Activity API ?
Oui, nous proposons une option sandbox pour les tests. Notre option sandbox est limitée à un seul webhook avec une limite de 15 abonnements maximum. Vous pouvez en savoir plus sur l’option sandbox dans notre documentation.
**Est-il possible d’utiliser l’Account Activity API pour obtenir les Retweets de Publications qui mentionnent des utilisateurs abonnés ? **
Malheureusement, cela ne fait pas partie des activités livrées avec cette API. Pour cela, nous vous suggérons d’utiliser plutôt la Streaming API.
Quels sont les types d’activité possibles représentés par un tweet_create_event ?
Un payload tweet_create_event sera envoyé :
Si l’utilisateur abonné effectue l’une des actions suivantes :
- Crée une Publication
- Fait un Retweet
- Répond à une Publication
- @mentionne* l’utilisateur abonné
- Cite un Tweet créé par l’utilisateur abonné
user_has_blocked au niveau supérieur de la réponse JSON, défini sur « true » ou « false ». Ce champ ne sera exposé que pour les mentions de Publication.
Enterprise
Comment puis-je ajouter mon app à une allowlist ou vérifier si mon app est déjà sur l’allowlist ?
Pour gérer les X apps que vous avez ajoutées à une liste d’autorisation pour l’accès via les Enterprise APIs, veuillez contacter votre responsable de compte en lui fournissant l’id de votre application. Vous pouvez trouver l’id de votre application en accédant à la page “Apps” dans la Console de développement.
Si j’ai accès à trois webhooks, puis-je utiliser trois webhooks pour chacune des applications que j’ai enregistrées pour un usage Enterprise ?
La limite de webhooks est définie au niveau du compte, et non au niveau de l’application. Si vous avez accès à trois webhooks et à deux applications enregistrées pour un usage Enterprise, vous pouvez utiliser deux webhooks sur une application et le troisième sur l’autre, mais pas trois sur chaque application.
Puis-je spécifier quels types d’événements seront renvoyés à l’aide de l’Account Activity Replay API ?
Les types d’événements à rejouer ne peuvent pas être spécifiés. Tous les événements transmis pendant la fenêtre de dates et d’heures spécifiée seront rejoués.
Y aura-t-il de nouvelles tentatives si mon application ne parvient pas à ingérer un événement de l’Account Activity Replay API ?
Non, il n’y aura pas de nouvelles tentatives. Si une application ne parvient pas à ingérer un événement envoyé par l’Account Activity Replay API, un autre job Replay peut être soumis pour la même période afin de tenter une nouvelle livraison de tous les événements Replay manqués.
Que dois-je faire lorsque je reçois un événement de fin de traitement indiquant un succès partiel ?
Nous vous suggérons de relever les horodatages des événements reçus et de demander un autre job Replay pour les événements qui ont été manqués.
Combien de jobs Account Activity Replay API puis-je faire tourner en même temps ?
Un seul job Account Activity Replay API par webhook peut être en cours d’exécution à la fois.
Comment puis-je différencier les événements Account Activity Replay API des événements de production en temps réel lorsqu’ils sont livrés à mon webhook ?
Étant donné que l’Account Activity Replay API livre toujours des événements passés, les événements peuvent être différenciés des événements de production en temps réel en se basant sur l’horodatage de l’événement.
Combien de temps après puis-je commencer à utiliser l’Account Activity Replay API pour renvoyer une activité que mon application a abandonnée ou manquée ?
Une activité devient disponible pour une nouvelle livraison environ 10 minutes après sa création.
Guide de résolution des erreurs
Code 32
- Enterprise - Assurez-vous que les consumer keys et les access tokens que vous utilisez appartiennent à une App X qui a été enregistrée pour l’utilisation des produits Enterprise. Si vous ne disposez pas de vos consumer keys et access tokens, ou si vous devez ajouter votre App X à la liste d’autorisation (allowlist), veuillez contacter votre responsable de compte.
-
Si vous vous authentifiez avec un contexte utilisateur, assurez-vous d’avoir correctement autorisé votre requête avec les
oauth nonce,oauth_signatureetoauth_timestampappropriés. -
Assurez-vous que vos access tokens ont le niveau d’autorisation approprié.
- Dans l’onglet « Keys and tokens » du app dashboard, veuillez vérifier que vos access tokens ont le niveau d’autorisation « Read, write, and direct messages » (permission level).
- Si le niveau d’autorisation des tokens est défini sur une valeur inférieure, accédez à l’onglet « Permissions », ajustez l’autorisation d’accès sur « Read, write, and direct messages », puis régénérez vos access tokens et secrets depuis l’onglet « Keys and tokens ».
-
Assurez-vous que votre URL est correctement formée.
- Veuillez garder à l’esprit que
:env_nameest sensible à la casse.
- Veuillez garder à l’esprit que
Code 200 - Interdit
- Premium - Assurez-vous de disposer d’un compte développeur approuvé avant d’essayer d’effectuer une requête vers l’API. Vous devez également utiliser la valeur :env_name appropriée dans la requête, que vous pouvez configurer sur la page dev environments.
- Enterprise - Assurez-vous que votre gestionnaire de compte vous a bien accordé l’accès à l’Account Activity API.
- Assurez-vous d’avoir correctement configuré votre URI. Cette erreur peut se produire si vous avez saisi un URI incorrect dans votre requête.
Code 214 - L’URL du webhook ne respecte pas les exigences.
- Assurez-vous d’utiliser HTTPS.
- L’URL de votre webhook est peut-être mal formée.
- Pour en savoir plus sur la configuration de votre URL de webhook, consultez la section Develop webhook consumer app sur la page Getting started with webhooks.
Code 214 - Latence élevée lors de la requête CRC GET. Votre webhook doit répondre en moins de 3 secondes.
- Cela signifie que votre serveur est lent. Assurez-vous que vous répondez au CRC en moins de 3 secondes.
Code 214 - Code de réponse différent de 200 lors d’une requête CRC GET (p. ex. 404, 500, etc).
- Votre serveur est en panne. Assurez-vous qu’il fonctionne correctement.
Code 214 - Trop de ressources déjà créées.
- Enterprise - Vous avez déjà utilisé tous vos webhooks. Utilisez l’endpoint GET webhooks avec chacune de vos applications enregistrées pour identifier où sont distribués vos webhooks.
Code 261 - L’App ne peut pas effectuer d’opérations d’écriture.
- L’App que vous utilisez avec l’API n’a pas le niveau d’autorisation approprié défini pour son jeton d’accès (access token) et son secret de jeton d’accès (access token secret). Accédez à l’onglet ‘Keys and tokens’ sur le tableau de bord X apps et vérifiez les niveaux d’autorisation attribués à votre jeton d’accès et à son secret. S’il est défini sur autre chose que ‘Read, write and Direct Messages’, vous devrez alors ajuster les paramètres dans l’onglet ‘Permission’ et régénérer votre jeton d’accès et son secret pour appliquer les nouveaux paramètres.
- Autre possibilité : vous tentez d’enregistrer un webhook en utilisant l’authentification App-only, ce qui n’est pas pris en charge. Authentifiez-vous plutôt avec un contexte utilisateur, comme indiqué dans les sections de la Référence de l’API pour l’enregistrement d’un webhook pour Enterprise Account Activity API.
Index de la Référence de l’API Account Activity
API Account Activity entreprise
https://api.x.com/1.1/account_activity/webhooks.json
$ curl —request POST
—url ‘https://api.x.com/1.1/account_activity/webhooks.json?url=https%3A%2F%2Fyour_domain.com%2Fwebhooks%2Ftwitter%2F0'
—header ‘authorization: OAuth oauth_consumer_key=“CONSUMER_KEY”, oauth_nonce=“GENERATED”, oauth_signature=“GENERATED”, oauth_signature_method=“HMAC-SHA1”, oauth_timestamp=“GENERATED”, oauth_token=“ACCESS_TOKEN”, oauth_version=“1.0“‘
HTTP 403
URL de ressource
https://api.x.com/1.1/account_activity/webhooks.json
Exemple de requête
Messages d’erreur
Déclenche la vérification de réponse au défi (CRC) pour l’URL du webhook spécifié. Si la vérification réussit, renvoie un 204 et réactive le webhook en définissant son statut sur
valid.
URL de la ressource
https://api.x.com/1.1/account_activity/webhooks/:webhook_id.json
Messages d’erreur
Abonne l’application fournie à tous les événements, pour tous les types de messages, dans le contexte de l’utilisateur indiqué. Après l’activation, tous les événements pour l’utilisateur ayant émis la requête seront envoyés au webhook de l’application via une requête POST.
Les abonnements sont actuellement limités en fonction de la configuration de votre compte. Si vous avez besoin d’ajouter davantage d’abonnements, veuillez contacter votre chargé de compte.
https://api.x.com/1.1/account_activity/webhooks/:webhook_id/subscriptions/all.json
Informations sur la ressource
Exemple de réponse - succès
HTTP 204 NO CONTENT
Renvoie le nombre d’abonnements actuellement actifs sur votre compte. Notez que le endpoint
/count nécessite l’authentification OAuth en mode application seule (application-only OAuth) ; vous devez donc effectuer vos requêtes à l’aide d’un jeton Bearer plutôt qu’avec un contexte utilisateur.
https://api.x.com/1.1/account_activity/subscriptions/count.json
Exemple de requête
Exemple de réponse - Succès
HTTP 200Messages d’erreur
HTTP 401
https://api.x.com/1.1/account_activity/webhooks/:webhook_id/subscriptions/all.json
Paramètres
Exemple de requête
$ curl —request GET —url https://api.x.com/1.1/account_activity/webhooks/:WEBHOOK_ID/subscriptions/all.json —header ‘authorization: OAuth oauth_consumer_key=“WHITELISTED_CONSUMER_KEY”, oauth_nonce=“GENERATED”, oauth_signature=“GENERATED”, oauth_signature_method=“HMAC-SHA1”, oauth_timestamp=“GENERATED”, oauth_token=“SUBSCRIBING_USER’S_ACCESS_TOKEN”, oauth_version=“1.0“‘Exemple de réponse - Succès
HTTP 204 NO CONTENThttps://api.x.com/1.1/account_activity/webhooks/:webhook_id/subscriptions/all/list.json
Paramètres
Codes de réponse HTTP
Exemple de requête
$ curl —request GET —url https://api.x.com/1.1/account_activity/webhooks/:WEBHOOK_ID/subscriptions/all/list.json —header ‘authorization: Bearer TOKEN’Exemple de réponse - Succès
HTTP 200
HTTP 401
https://api.x.com/1.1/account_activity/webhooks/:webhook_id.json
Informations sur la ressource
Exemple de requête
URL de la ressource
https://api.x.com/1.1/account_activity/webhooks/:webhook_id/subscriptions/all.json
Informations sur la ressource
Paramètres
Exemple de requête
URL de la ressource
https://api.x.com/1.1/account_activity/webhooks/:webhook_id/subscriptions/:user_id/all.json