Passer au contenu principal

Modèle objet

Tweet

Les Tweets sont l’élément de base de tout ce qui concerne X. L’objet Tweet comporte une longue liste de champs « au niveau racine », tels que id, text et created_at. Les objets Tweet sont également l’objet « parent » de plusieurs objets enfants, notamment user, media, poll et place. Utilisez le paramètre tweet.fields pour demander ces champs de niveau racine sur l’objet Tweet. L’objet Tweet peut être trouvé et développé (expanded) dans la ressource utilisateur. Des Tweets supplémentaires liés au Tweet demandé peuvent également être trouvés et développés dans la ressource Tweet. L’objet est disponible pour expansion avec ?expansions=pinned_tweet_id dans la ressource utilisateur ou ?expansions=referenced_tweets.id dans la ressource Tweet afin d’obtenir l’objet avec uniquement les champs par défaut. Utilisez l’expansion avec le paramètre de champ tweet.fields lors de la demande de champs supplémentaires pour compléter l’objet.
Valeur du champTypeDescriptionComment l’utiliser
id (par défaut)stringL’identifiant unique du Tweet demandé.Utilisez ceci pour récupérer par programmation un Tweet spécifique.
text (par défaut)stringLe texte UTF-8 réel du Tweet. Voir twitter-text pour les détails sur les caractères valides.Extraction de mots-clés et analyse/classification de sentiment.
edit_history_tweet_ids (par défaut)objectIdentifiants uniques indiquant toutes les versions d’un Tweet. Pour les Tweets sans modifications, il y aura un ID. Pour les Tweets avec un historique de modifications, il y aura plusieurs ID.Utilisez cette information pour trouver l’historique de modification d’un Tweet.
articleobjectContient les métadonnées de l’Article présent dans ce Tweet.Utilisez ceci pour obtenir le texte et les entités d’un Article.
attachmentsobjectSpécifie le type de pièces jointes (le cas échéant) présentes dans ce Tweet.Comprendre les objets retournés pour les expansions demandées.
author_idstringL’identifiant unique de l’utilisateur qui a publié ce Tweet.Hydratation de l’objet utilisateur, partage de jeu de données pour révision par les pairs.
card_uristringL’URI de la carte présente dans ce tweet.
community_idstringL’identifiant unique de la communauté à laquelle appartient ce Post.
context_annotationsarrayContient les annotations de contexte pour le Tweet.Reconnaissance/extraction d’entités, analyse thématique.
conversation_idstringL’ID du Tweet original de la conversation (qui inclut les réponses directes, les réponses aux réponses).Utilisez ceci pour reconstituer la conversation à partir d’un Tweet.
created_atdate (ISO 8601)Heure de création du Tweet.Utile pour l’analyse de séries temporelles et comprendre quand un Tweet a été créé.
display_text_rangearrayUn tableau contenant un index de début et de fin pour la portion de texte qui s’affiche.Utile pour savoir quelle portion de texte est affichée par défaut pour les posts longs.
edit_controlsobjectIndique combien de temps le Tweet peut encore être modifié et le nombre de modifications restantes.Utilisez ceci pour déterminer si un Tweet est éligible à la modification.
entitiesobjectEntités qui ont été extraites du texte du Tweet. Voir entités dans les objets Twitter.Fournit des informations supplémentaires sur les hashtags, URL, mentions, etc.
geoobjectIndique l’emplacement ou le lieu d’un Tweet géolocalisé.Utilisez ceci pour déterminer l’emplacement d’un Tweet géolocalisé.
in_reply_to_user_idstringSi le Tweet représenté est une réponse, ce champ contiendra l’ID de l’auteur du Tweet original.Déterminer si un Tweet était en réponse à un autre Tweet.
langstringLangue du Tweet, si détectée par Twitter.Classer les Tweets par langue parlée.
non_public_metricsobjectMétriques d’engagement non publiques pour le Tweet au moment de la demande. Nécessite une authentification de contexte utilisateur.Déterminer le total des impressions générées pour le Tweet.
note_tweetobjectContient le texte complet d’un Post pour les Posts longs (>280 caractères).Obtenir le texte complet d’un post.
organic_metricsobjectMétriques d’engagement, suivies dans un contexte organique, pour le Tweet au moment de la demande. Nécessite une authentification de contexte utilisateur.Mesurer l’engagement organique pour le Tweet.
possibly_sensitivebooleanIndique si le contenu peut être reconnu comme sensible.Étudier la circulation de certains types de contenu.
promoted_metricsobjectMétriques d’engagement, suivies dans un contexte promu, pour le Tweet au moment de la demande. Nécessite une authentification de contexte utilisateur.Mesurer l’engagement pour le Tweet quand il était promu.
public_metricsobjectMétriques d’engagement publiques pour le Tweet au moment de la demande.Mesurer l’engagement du Tweet.
referenced_tweetsarrayUne liste de Tweets auxquels ce Tweet fait référence, tels que les Retweets, Tweets cités, ou réponses.Comprendre les aspects conversationnels des retweets, etc.
reply_settingsstringMontre qui peut répondre à un Tweet donné. Les options sont “everyone”, “mentioned_users”, et “followers”.Déterminer les paramètres de réponse de conversation pour le Tweet.
withheldobjectContient les détails de rétention pour le contenu retenu.
scopesobjectContient les détails de portée pour le tweet.Indique qui peut voir le post. Retourné uniquement pour les posts promus.
media_metadataarrayContient les métadonnées pour les pièces jointes média du Tweet.Obtenir des métadonnées supplémentaires comme le alt_text d’une pièce jointe média d’un Tweet’s.
Récupération d’un objet Tweet Exemple de requête Dans la requête suivante, nous demandons des fields pour le Tweet sur l’endpoint Tweets lookup. Veillez à remplacer $BEARER_TOKEN par votre propre Jeton Bearer.
curl --request GET 'https://api.x.com/2/tweets?ids=1212092628029698048&tweet.fields=attachments,author_id,context_annotations,created_at,entities,geo,id,in_reply_to_user_id,lang,possibly_sensitive,public_metrics,referenced_tweets,text,withheld&expansions=referenced_tweets.id' --header 'Authorization: Bearer $BEARER_TOKEN'
Exemple de réponse
{
  "data": [
    {
      "text": "Nous pensons que la meilleure version future de notre API naîtra de sa construction avec VOUS. Voici à une autre excellente année avec tous ceux qui développent sur la plateforme Twitter. Nous avons hâte de continuer à travailler avec vous dans la nouvelle année. https://t.co/yvxdK6aOo2",
      "edit_history_tweet_ids": [
        "1212092628029698048"
      ],
      "lang": "en",
      "in_reply_to_user_id": "2244994945",
      "entities": {
        "urls": [
          {
            "start": 222,
            "end": 245,
            "url": "https://t.co/yvxdK6aOo2",
            "expanded_url": "https://x.com/LovesNandos/status/1211797914437259264/photo/1",
            "display_url": "pic.x.com/yvxdK6aOo2",
            "media_key": "16_1211797899316740096"
          }
        ],
        "annotations": [
          {
            "start": 42,
            "end": 44,
            "probability": 0.5359,
            "type": "Other",
            "normalized_text": "API"
          },
          {
            "start": 144,
            "end": 150,
            "probability": 0.9832,
            "type": "Other",
            "normalized_text": "Twitter"
          }
        ]
      },
      "author_id": "2244994945",
      "referenced_tweets": [
        {
          "type": "replied_to",
          "id": "1212092627178287104"
        }
      ],
      "id": "1212092628029698048",
      "public_metrics": {
        "retweet_count": 7,
        "reply_count": 3,
        "like_count": 38,
        "quote_count": 1
      },
      "context_annotations": [
        {
          "domain": {
            "id": "29",
            "name": "Événements [Service d'entité]",
            "description": "Événements du monde réel. "
          },
          "entity": {
            "id": "1186637514896920576",
            "name": " Réveillon du Nouvel An"
          }
        },
        {
          "domain": {
            "id": "29",
            "name": "Événements [Service d'entité]",
            "description": "Événements du monde réel. "
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Bonne Année : C'est enfin 2020 partout !",
            "description": "Admirez les feux d'artifice et autres célébrations alors que les gens du monde entier entrent dans la nouvelle année.\nPhoto via @GettyImages "
          }
        },
        {
          "domain": {
            "id": "119",
            "name": "Fête",
            "description": "Fêtes comme Noël ou Halloween"
          },
          "entity": {
            "id": "1186637514896920576",
            "name": " Réveillon du Nouvel An"
          }
        },
        {
          "domain": {
            "id": "119",
            "name": "Fête",
            "description": "Fêtes comme Noël ou Halloween"
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Bonne Année : C'est enfin 2020 partout !",
            "description": "Admirez les feux d'artifice et autres célébrations alors que les gens du monde entier entrent dans la nouvelle année.\nPhoto via @GettyImages "
          }
        },
        {
          "domain": {
            "id": "30",
            "name": "Entités [Service d'entité]",
            "description": "Domaine de niveau supérieur du Service d'entité, chaque élément qui se trouve dans le Service d'entité devrait être dans ce domaine"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Services"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Marque",
            "description": "Marques et entreprises"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "131",
            "name": "Taxonomie Twitter unifiée",
            "description": "Une taxonomie des intérêts des utilisateurs. "
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "131",
            "name": "Taxonomie Twitter unifiée",
            "description": "Une taxonomie des intérêts des utilisateurs. "
          },
          "entity": {
            "id": "847868745150119936",
            "name": "Famille et relations",
            "description": "Loisirs et centres d'intérêt"
          }
        },
        {
          "domain": {
            "id": "131",
            "name": "Taxonomie Twitter unifiée",
            "description": "Une taxonomie des intérêts des utilisateurs. "
          },
          "entity": {
            "id": "1196446161223028736",
            "name": "Médias sociaux"
          }
        },
        {
          "domain": {
            "id": "29",
            "name": "Événements [Service d'entité]",
            "description": "Événements du monde réel. "
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Bonne Année : C'est enfin 2020 partout !",
            "description": "Admirez les feux d'artifice et autres célébrations alors que les gens du monde entier entrent dans la nouvelle année.\nPhoto via @GettyImages "
          }
        },
        {
          "domain": {
            "id": "119",
            "name": "Fête",
            "description": "Fêtes comme Noël ou Halloween"
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Bonne Année : C'est enfin 2020 partout !",
            "description": "Admirez les feux d'artifice et autres célébrations alors que les gens du monde entier entrent dans la nouvelle année.\nPhoto via @GettyImages "
          }
        }
      ],
      "created_at": "2019-12-31T19:26:16.000Z",
      "attachments": {
        "media_keys": [
          "16_1211797899316740096"
        ]
      },
      "possibly_sensitive": false
    }
  ],
  "includes": {
    "tweets": [
      {
        "text": "Ces lancements ne seraient pas possibles sans les retours que vous avez fournis en cours de route, alors MERCI à tous ceux qui ont contribué de leur temps et de leurs idées. Vous avez d'autres retours ? Faites-le nous savoir ⬇️ https://t.co/Vxp4UKnuJ9",
        "edit_history_tweet_ids": [
          "1212092627178287104"
        ],
        "lang": "en",
        "in_reply_to_user_id": "2244994945",
        "entities": {
          "urls": [
            {
              "start": 187,
              "end": 210,
              "url": "https://t.co/Vxp4UKnuJ9",
              "expanded_url": "https://twitterdevfeedback.uservoice.com/forums/921790-twitter-developer-labs",
              "display_url": "twitterdevfeedback.uservoice.com/forums/921790-…",
              "status": 200,
              "title": "Mises à jour sur nos canaux de retours",
              "description": "Nous développons notre plateforme de développement de manière ouverte, avec vos contributions et retours. Au cours de l'année passée, vous entendre directement ainsi que les utilisateurs de vos applications nous a aidés à créer des produits de développement qui répondent aux cas d'usage que vous nous avez aidés à identifier. Nous voulons faire de cela notre façon de développer des produits, et à l'avenir, nous consolidons nos canaux de retours. Vous rencontrer là où vous êtes À compter d'aujourd'hui, nous allons retirer notre canal de retours UserVoice en faveur d'engagements directs plus fréquents avec v...",
              "unwound_url": "https://devcommunity.x.com/t/updates-on-our-feedback-channels/169706"
            }
          ]
        },
        "author_id": "2244994945",
        "referenced_tweets": [
          {
            "type": "replied_to",
            "id": "1212092626247110657"
          }
        ],
        "id": "1212092627178287104",
        "public_metrics": {
          "retweet_count": 2,
          "reply_count": 1,
          "like_count": 19,
          "quote_count": 0
        },
        "created_at": "2019-12-31T19:26:16.000Z",
        "possibly_sensitive": false
      }
    ]
  }

Utilisateur

L’objet utilisateur contient les métadonnées du compte utilisateur X décrivant l’utilisateur référencé. L’objet utilisateur est l’objet principal renvoyé par l’endpoint users lookup. Pour demander des champs utilisateur supplémentaires sur cet endpoint, utilisez le paramètre fields user.fields. L’objet utilisateur peut également apparaître comme objet enfant et être inclus dans l’objet Tweet via des expansions. L’objet est disponible avec ?expansions=author_id ou ?expansions=in_reply_to_user_id pour obtenir la version condensée avec uniquement les champs par défaut. Utilisez ces expansions avec le paramètre de champs user.fields lorsque vous demandez des champs supplémentaires afin de compléter l’objet.  
Valeur du champTypeDescriptionUtilisation possible
id (par défaut)stringL’identifiant unique de cet utilisateur.

"id": "2244994945"
Utilisez ceci pour récupérer par programmation des informations sur un utilisateur X spécifique.
name (par défaut)stringLe nom de l’utilisateur, tel qu’il l’a défini sur son profil. Il ne s’agit pas nécessairement du nom d’une personne. Généralement limité à 50 caractères, mais sujet à modification.

"name": "Twitter Dev"
username (par défaut)stringLe nom d’écran, le pseudo ou l’alias avec lequel cet utilisateur s’identifie sur X. Les noms d’utilisateur sont uniques mais peuvent changer. Généralement d’une longueur maximale de 15 caractères, mais certains comptes historiques peuvent avoir des noms plus longs.

"username": "TwitterDev"
affiliationobjectContient des détails sur l’affiliation d’un utilisateur.Peut être utilisé pour obtenir le badge d’affiliation d’un utilisateur.
confirmed_emailstringL’adresse e-mail confirmée de l’utilisateur authentifié.
connection_statusarrayFournit une liste des relations entre l’utilisateur authentifié et l’utilisateur recherché, telles que : suivi, suivi par, demande de suivi envoyée, demande de suivi reçue, blocage, mise en sourdine

”connection_status”: [
“follow_request_received”,
“follow_request_sent”,
“blocking”,
“followed_by”,
“following”,
“muting”
]
Peut être utilisé pour déterminer le statut de la relation entre l’utilisateur authentifié et l’utilisateur recherché.
created_atdate (ISO 8601)La date et l’heure UTC de création du compte utilisateur sur X.

"created_at": "2013-12-14T04:35:55.000Z"
Peut être utilisé pour déterminer depuis combien de temps quelqu’un utilise X
descriptionstringLe texte de la description du profil de cet utilisateur (également appelée bio), si l’utilisateur en a fourni une.

"description": "The voice of the X Dev team and your official source for updates, news, and events, related to the X API."
entitiesobjectContient des détails sur le texte ayant une signification particulière dans la description de l’utilisateur.

"entities": { <br/> "url": { <br/> "urls": [ <br/> { <br/> "start": 0, <br/> "end": 23, <br/> "url": "https://t.co/3ZX3TNiZCY", <br/> "expanded_url": "/content/developer-twitter/en/community", <br/> "display_url": "developer.x.com/en/community" <br/> } <br/> ] <br/> }, <br/> "description": { <br/> "urls": [ <br/> { <br/> "start": 0, <br/> "end": 23, <br/> "url": "https://t.co/3ZX3TNiZCY", <br/> "expanded_url": "/content/developer-twitter/en/community", <br/> "display_url": "developer.x.com/en/community" <br/> }, <br/> "hashtags": [ <br/> { <br/> "start": 23, <br/> "end": 30, <br/> "tag": "DevRel" <br/> }, <br/> { <br/> "start": 113, <br/> "end": 130, <br/> "tag": "BlackLivesMatter" <br/> }, <br/> "mentions": [ <br/> { <br/> "start": 0, <br/> "end": 10, <br/> "tag": "TwitterDev" <br/> }, <br/> "cashtags": [ <br/> { <br/> "start": 12, <br/> "end": 16, <br/> "tag": "twtr" <br/> } <br/> ] <br/> } <br/> }
Les entités sont des objets JSON qui fournissent des informations supplémentaires sur les hashtags, les URL, les mentions d’utilisateurs et les cashtags associés à la description. Consultez chaque entité respective pour plus de détails.

Tous les indices start d’utilisateur sont inclusifs, tandis que tous les indices end d’utilisateur sont exclusifs.
is_identity_verifiedbooleanIndique si l’utilisateur a une identité vérifiée.
locationstringLa localisation spécifiée dans le profil de l’utilisateur, si l’utilisateur en a fourni une. Comme il s’agit d’une valeur libre, elle peut ne pas indiquer une localisation valide, mais elle peut être évaluée de manière approximative lors de l’exécution de recherches avec des requêtes de localisation.

"location": "127.0.0.1"
most_recent_tweet_idstringIdentifiant unique du Tweet le plus récent de cet utilisateur.Permet de déterminer le Tweet le plus récent de l’utilisateur.
parodybooleanIndique si ce compte utilisateur possède ou non le libellé Parodie.
pinned_tweet_idstringIdentifiant unique du Tweet épinglé de cet utilisateur.

"pinned_tweet_id": "1255542774432063488"
Permet de déterminer le Tweet épinglé en haut du profil de l’utilisateur. Peut potentiellement être utilisé pour déterminer la langue de l’utilisateur.
profile_banner_urlstringL’URL de la bannière de profil pour cet utilisateur, telle qu’affichée sur le profil de l’utilisateur.

"profile_banner_url": "https://pbs.twimg.com/profile_banners/1716450569358098432/1721022977"
Peut être utilisé pour télécharger la bannière de profil de cet utilisateur.
profile_image_urlstringL’URL de l’image de profil pour cet utilisateur, telle qu’affichée sur le profil de l’utilisateur.

"profile_image_url": "https://pbs.twimg.com/profile_images/1267175364003901441/tBZNFAgA_normal.jpg"
Peut être utilisé pour télécharger l’image de profil de cet utilisateur.
protectedbooleanIndique si cet utilisateur a choisi de protéger ses Tweets (autrement dit, si les Tweets de cet utilisateur sont privés).

"protected": false
public_metricsobjectContient des détails sur l’activité de cet utilisateur.

"public_metrics": { "followers_count": 507902, "following_count": 1863, "tweet_count": 3561, "listed_count": 1550 }
Peut être utilisé pour déterminer la portée ou l’influence d’un utilisateur X, quantifier l’éventail de ses centres d’intérêt et son niveau d’engagement sur X.
receives_your_dmbooleanIndique si cet utilisateur recevra ou non le message privé de l’utilisateur authentifié.
subscriptionobjectContient des détails indiquant si l’utilisateur est abonné ou non à l’utilisateur authentifié.
subscription_typestringUne chaîne représentant le type d’abonnement X Premium de l’utilisateur authentifié. Exemple : None, Basic, Premium, PremiumPlus. Retourne toujours None si l’utilisateur n’est pas l’utilisateur authentifié.
urlstringL’URL spécifiée dans le profil de l’utilisateur, si elle est présente.

"url": "https://t.co/3ZX3TNiZCY"
Une URL fournie par un utilisateur X dans son profil. Il peut s’agir d’une page d’accueil, mais ce n’est pas toujours le cas.
verifiedbooleanIndique si cet utilisateur est un utilisateur X vérifié.

"verified": true
Indique si cet utilisateur X possède ou non un compte vérifié. Un compte vérifié permet de savoir qu’un compte d’intérêt public est authentique.
verified_followers_countstringUne chaîne représentant le nombre d’abonnés vérifiés d’un utilisateur.
verified_typestringUne chaîne représentant le type de vérification d’un utilisateur. Exemple : “blue”, “business”, “government”
withheldobjectContient les détails de rétention pour le contenu retenu, le cas échéant.
Récupération d’un objet utilisateur Exemple de requête Dans la requête suivante, nous demandons des fields pour l’utilisateur sur l’endpoint users lookup. Veillez à remplacer $BEARER_TOKEN par votre propre Jeton Bearer généré.
  curl --request GET 'https://api.x.com/2/users?
  ids=2244994945&user.fields=created_at,description,entities,id,location,name,pinned_tweet_id,profile_image_url,protected,url,username,verified,withheld&expansions=pinned_tweet_id'
  --header 'Authorization: Bearer $BEARER_TOKEN'
  }
Exemple de réponse
    "data": [
        {
            "id": "2244994945",
            "name": "Twitter Dev",
            "username": "TwitterDev",
            "location": "127.0.0.1",
            "entities": {
                "url": {
                    "urls": [
                        {
                            "start": 0,
                            "end": 23,
                            "url": "https://t.co/3ZX3TNiZCY",
                            "expanded_url": "/content/developer-twitter/en/community",
                            "display_url": "developer.x.com/en/community"
                        }
                    ]
                },
                "description": {
                    "hashtags": [
                        {
                            "start": 23,
                            "end": 30,
                            "tag": "DevRel"
                        },
                        {
                            "start": 113,
                            "end": 130,
                            "tag": "BlackLivesMatter"
                        }
                    ]
                }
            },
            "verified": true,
            "description": "La voix de l'équipe #DevRel de Twitter, et votre source officielle pour les mises à jour, actualités et événements concernant l'API de Twitter. \n\n#BlackLivesMatter",
            "url": "https://t.co/3ZX3TNiZCY",
            "profile_image_url": "https://pbs.twimg.com/profile_images/1267175364003901441/tBZNFAgA_normal.jpg",
            "protected": false,
            "pinned_tweet_id": "1255542774432063488",
            "created_at": "2013-12-14T04:35:55.000Z"
        }
    ],
    "includes": {
        "tweets": [
            {
                "id": "1255542774432063488",
                "text": "En ces temps sans précédent, ce qui se passe sur Twitter peut aider le monde à mieux comprendre la pandémie et y répondre. \n\nNous lançons un endpoint de stream COVID-19 gratuit pour que les développeurs et chercheurs qualifiés puissent étudier la conversation publique en temps réel. https://t.co/BPqMcQzhId"
            }
        ]
    }
}

Space

Spaces permettent l’expression et l’interaction via des conversations audio en direct. Le dictionnaire de données Space contient des metadata pertinentes à propos d’un Space ; tous les détails sont mis à jour en temps réel. Les objets utilisateur se trouvent et s’étendent via la ressource utilisateur. Ils sont disponibles via les expansions en ajoutant au moins l’un de host_ids, creator_id, speaker_ids, mentioned_user_ids au paramètre de requête expansions. Contrairement aux Tweets, les Spaces sont éphémères et deviennent indisponibles après leur fin ou lorsqu’ils sont annulés par leur créateur. Lorsque votre App traite des données de Spaces, vous êtes responsable de renvoyer les informations les plus à jour et devez supprimer les données qui ne sont plus disponibles sur la plateforme. Les endpoints de recherche Spaces peuvent vous aider à garantir le respect des attentes et de l’intention des utilisateurs.
Field ValueTypeDescriptionHow it can be used
id (default)stringL’identifiant unique du Space demandé.
"id": "1zqKVXPQhvZJB"
Identifier de manière unique un Space renvoyé dans la réponse.
state (default)stringIndique si le Space a commencé, va commencer ou s’est terminé.
"state": "live"
Filtrer les Spaces en direct ou programmés.
created_atdate (ISO 8601)Heure de création de ce Space.
"created_at": "2021-07-04T23:12:08.000Z"
Déterminer quand un Space a été créé et trier par date.
creator_idstringIdentifiant unique du créateur du Space.
"creator_id": "2244994945"
ended_atdate (ISO 8601)Heure à laquelle le Space s’est terminé, le cas échéant.
"ended_at": "2021-07-04T00:11:44.000Z"
Déterminer quand un Space en direct s’est terminé pour la durée d’exécution.
host_idsarrayIdentifiants uniques des hôtes du Space.
"host_ids": ["2244994945", "6253282"]
Étendre les objets utilisateur, comprendre l’engagement.
langstringLangue du Space, si détectée.
"lang": "en"
Classer les Spaces par langue.
is_ticketedbooleanIndique s’il s’agit d’un Space payant (ticketed).
"is_ticketed": false
Mettre en avant le contenu d’intérêt.
invited_user_idsarrayListe des IDs d’utilisateurs invités comme intervenants.
"invited_user_ids": ["2244994945", "6253282"]
Étendre les objets utilisateur, comprendre l’engagement.
participant_countintegerNombre d’utilisateurs dans le Space, y compris les hôtes et les intervenants.
"participant_count": 420
Comprendre l’engagement, créer des rapports.
subscriber_countintegerNombre de personnes ayant défini un rappel pour un Space.
"subscriber_count": 36
Évaluer l’intérêt pour l’événement.
scheduled_startdate (ISO 8601)Heure de début programmée du Space.
"scheduled_start": "2021-07-14T08:00:00.000Z"
S’intégrer aux notifications de calendrier.
speaker_idsarrayListe des utilisateurs qui ont pris la parole à un moment donné.
"speaker_ids": ["2244994945", "6253282"]
Étendre les objets utilisateur, comprendre l’engagement.
started_atdate (ISO 8601)Heure de début effective d’un Space.
"started_at": "2021-07-14T08:00:12.000Z"
Déterminer l’heure de début du Space.
titlestringTitre du Space.
"title": "Say hello to the Space data object!"
Comprendre les mots-clés, hashtags, mentions.
topic_idsarrayIDs des sujets sélectionnés par le créateur du Space.
"topic_ids": ["2244994945", "6253282"]
Comprendre les mots-clés, hashtags, mentions.
updated_atdate (ISO 8601)Dernière mise à jour des metadata du Space.
"updated_at": "2021-07-11T14:44:44.000Z"
Maintenir les informations à jour.
Récupérer un objet Space Exemple de requête Dans la requête suivante, nous demandons des fields pour le Space via l’endpoint de recherche Spaces. Veillez à remplacer $BEARER_TOKEN par votre propre Jeton Bearer généré.
curl "https://api.x.com/2/spaces/1DXxyRYNejbKM?space.fields=created_at,creator_id,created_athost_ids,lang,is_ticketed,invited_user_ids,participant_count,scheduled_start,speaker_ids,started_at,state,title,updated_at&expansions=creator_id,host_ids,invited_user_ids,speaker_ids" --header "Authorization: Bearer $BEARER_TOKEN"
** Exemple de réponse **
{
  "data": {
    "id": "1zqKVXPQhvZJB",
    "state": "live",
    "created_at": "2021-07-04T23:12:08.000Z",
    "host_ids": [
      "2244994945",
      "6253282"
    ],
    "lang": "en",
    "is_ticketed": false,
    "invited_user_ids": [
      "2244994945",
      "6253282"
    ],
    "participant_count": 420,
    "scheduled_start": "2021-07-14T08:00:00.000Z",
    "speaker_ids": [
      "2244994945",
      "6253282"
    ],
    "started_at": "2021-07-14T08:00:12.000Z",
    "title": "Découvrez l'objet de données Space !",
    "updated_at": "2021-07-11T14:44:44.000Z"
  },
  "includes": {
    "users": [
      {
        "id": "2244994945",
        "name": "Twitter Dev",
        "username": "TwitterDev"
      },
      {
        "id": "6253282",
        "name": "Twitter API",
        "username": "TwitterAPI"
      }
    ]
  }
}

List

L’objet List contient les metadata des Twitter Lists décrivant la List référencée. L’objet List est l’objet principal renvoyé par l’endpoint de recherche de List. Pour demander des champs supplémentaires pour cette ressource, utilisez le paramètre fields list.fields. L’objet List n’apparaît pas comme enfant d’autres objets data. En revanche, des objets utilisateur peuvent être trouvés et étendus dans la ressource utilisateur. Ces objets sont disponibles pour extension en ajoutant owner_id au paramètre de query expansions. Utilisez cette expansion avec le paramètre de champ list.fields lorsque vous demandez des champs supplémentaires afin de compléter l’objet List principal, et user.fields pour compléter l’objet étendu.
Field ValueTypeDescriptionHow it can be used
id (default)stringL’identifiant unique de cette List.
"id": "2244994945"
Utilisez ceci pour récupérer par programmation des informations sur une List spécifique.
name (default)stringLe nom de la List, tel que défini lors de sa création.
"name": "Twitter Lists"
created_atdate (ISO 8601)La date et l’heure UTC auxquelles la List a été créée.
"created_at": "2013-12-14T04:35:55.000Z"
Déterminez depuis combien de temps une List existe sur Twitter.
descriptionstringUne brève description pour informer les utilisateurs à propos de la List.
"description": "People that are active members of the Bay area cycling community on Twitter."
follower_countintegerIndique combien d’utilisateurs suivent cette List.
"follower_count": 198
member_countintegerIndique combien de membres font partie de cette List.
"member_count": 60
privatebooleanIndique si la List est privée.
"private": false
owner_idstringIdentifiant unique du propriétaire de cette List.
"owner_id": "1255542774432063488"
Peut être utilisé pour déterminer si cet utilisateur possède d’autres Lists et pour étendre des objets utilisateur.
Récupérer un objet utilisateur Exemple de requête Dans la requête suivante, nous demandons des fields pour l’utilisateur sur l’endpoint List lookup by ID. Remplacez $BEARER_TOKEN par votre Jeton Bearer généré.
curl --request GET 'https://api.x.com/2/lists/1355797419175383040?list.fields=created_at,description,private,follower_count,member_count,owner_id&expansions=owner_id' --header 'Authorization: Bearer $BEARER_TOKEN'
** Exemple de réponse**
{
  "data": {
    "name": "Twitter Comms",
    "member_count": 60,
    "id": "1355797419175383040",
    "private": false,
    "description": "",
    "follower_count": 198,
    "owner_id": "257366942",
    "created_at": "2021-01-31T08:37:48.000Z"
  },
  "includes": {
    "users": [
      {
        "created_at": "2011-02-25T07:51:26.000Z",
        "name": "Ashleigh Hay 🤸🏼‍♀️",
        "id": "257366942",
        "username": "shleighhay",
        "verified": false
      }
    ]
  }
}

Médias

Les médias désignent toute image, GIF ou vidéo jointe à un Tweet. L’objet media n’est pas un objet principal sur un endpoint, mais peut être trouvé et étendu dans l’objet Tweet. L’objet est disponible via l’extension ?expansions=attachments.media_keys pour obtenir l’objet condensé avec uniquement les champs par défaut. Utilisez cette extension avec le paramètre de champ media.fields lorsque vous demandez des champs supplémentaires pour compléter l’objet.
Valeur du champTypeDescriptionComment il peut être utilisé
media_key (par défaut)stringIdentifiant unique du contenu média étendu.
"media_key": "13_1263145212760805376"
Peut être utilisé pour récupérer des médias par programmation
type (par défaut)stringType de contenu (animated_gif, photo, video).
"type": "video"
Classer le média comme photo, GIF ou vidéo
urlstringUne URL directe vers le fichier média sur X.Renvoie un objet Media avec un champ URL pour les photos
duration_msintegerDisponible lorsque le type est video. Durée de la vidéo en millisecondes.
"duration_ms": 46947
heightintegerHauteur de ce contenu en pixels.
"height": 1080
non_public_metricsobjectMétriques d’engagement non publiques pour le contenu média au moment de la requête. Nécessite une authentification avec contexte utilisateur.
"non_public_metrics": { "playback_0_count": 1561, "playback_100_count": 116, "playback_25_count": 559, "playback_50_count": 305, "playback_75_count": 183,}
Déterminer l’engagement vidéo : combien d’utilisateurs ont visionné chaque quart de la vidéo.
organic_metricsobjectMétriques d’engagement pour le contenu média, suivies dans un contexte organique, au moment de la requête. Nécessite une authentification avec contexte utilisateur.
"organic_metrics": { "playback_0_count": 1561, "playback_100_count": 116, "playback_25_count": 559, "playback_50_count": 305, "playback_75_count": 183, "view_count": 629}
Déterminer l’engagement organique du média.
preview_image_urlstringURL de l’aperçu statique de remplacement de ce contenu.
"preview_image_url": "https://pbs.twimg.com/media/EYeX7akWsAIP1_1.jpg"
promoted_metricsobjectMétriques d’engagement pour le contenu média, suivies dans un contexte sponsorisé, au moment de la requête. Nécessite une authentification avec contexte utilisateur.
"promoted_metrics": { "playback_0_count": 259, "playback_100_count": 15, "playback_25_count": 113, "playback_50_count": 57, "playback_75_count": 25, "view_count": 124}
Déterminer l’engagement du média lorsque le Tweet était sponsorisé.
public_metricsobjectMétriques d’engagement publiques pour le contenu média au moment de la requête.
"public_metrics": { "view_count": 6865141}
Déterminer le nombre total de vues pour la vidéo jointe au Tweet.
widthintegerLargeur de ce contenu en pixels.
"width": 1920
alt_textstringDescription d’une image pour favoriser l’accessibilité. Peut contenir jusqu’à 1000 caractères. Le texte alternatif ne peut être ajouté qu’aux images pour le moment.
"alt_text": "Rugged hills along the Na Pali coast on the island of Kauai"
Peut être utilisé pour fournir une description écrite d’une image si un utilisateur est malvoyant.
variantsarrayChaque objet media peut avoir plusieurs variantes d’affichage ou de lecture, avec différentes résolutions ou formats.
"variants": [{ "bit_rate": 632000, "content_type": "video/mp4", "url": "https://video.twimg.com/ext_tw_video/1527322141724532740/pu/vid/320x568/lnBaR2hCqE-R_90a.mp4?tag=12"}]
Récupération d’un objet media Exemple de requête Dans la requête suivante, nous demandons les fields pour l’objet media associé au Tweet sur l’endpoint Tweet lookup. Étant donné que media est un objet enfant d’un Tweet, l’extension attachment.media_keys est requise. Veillez à remplacer $BEARER_TOKEN par votre propre Jeton Bearer généré.
curl --request GET 'https://api.x.com/2/tweets?ids=1263145271946551300&expansions=attachments.media_keys&media.fields=duration_ms,height,media_key,preview_image_url,public_metrics,type,url,width,alt_text' --header 'Authorization: Bearer $BEARER_TOKEN'
{
  "data": [
    {
      "text": "Test, test...\n\nUne nouvelle façon d'avoir une conversation avec exactement qui vous voulez. Nous commençons avec un petit % à l'échelle mondiale, alors gardez l'œil ouvert pour le voir en action. https://t.co/pV53mvjAVT",
      "id": "1263145271946551300",
      "attachments": {
        "media_keys": [
          "13_1263145212760805376"
        ]
      }
    }
  ],
  "includes": {
    "media": [
      {
        "duration_ms": 46947,
        "type": "video",
        "height": 1080,
        "media_key": "13_1263145212760805376",
        "public_metrics": {
          "view_count": 6909260
        },
        "preview_image_url": "https://pbs.twimg.com/media/EYeX7akWsAIP1_1.jpg",
        "width": 1920
      }
    ]
  }
}

Sondage

Un sondage inclus dans un Tweet n’est pas un objet principal sur un endpoint, mais il peut être trouvé et développé dans l’objet Tweet. L’objet peut être inclus via l’expansion ?expansions=attachments.poll_ids pour obtenir l’objet condensé avec uniquement les champs par défaut. Utilisez cette expansion avec le paramètre de champs poll.fields lorsque vous demandez des champs supplémentaires pour compléter l’objet.
Valeur du champTypeDescription
id (par défaut)stringIdentifiant unique du sondage développé.
{"id": "1199786642791452673"}
options (par défaut)arrayContient des objets décrivant chaque choix dans le sondage référencé.
{"options": [ { "position": 1, "label": "“C Sharp”", "votes": 795 }, { "position": 2, "label": "“C Hashtag”", "votes": 156 } ]}
duration_minutesintegerIndique la durée totale de ce sondage.
{"duration_minutes": 1440}
end_datetimedate (ISO 8601)Indique la date et l’heure de fin de ce sondage.
{"end_datetime": "2019-11-28T20:26:41.000Z"}
voting_statusstringIndique si ce sondage est toujours actif et peut recevoir des votes, ou si le vote est désormais clôturé.
{"voting_status": "closed"}
Récupération d’un objet de sondage Exemple de requête Dans la requête suivante, nous demandons des champs pour l’objet de sondage attaché au Tweet sur l’endpoint Tweets lookup. Étant donné que le sondage est un objet enfant d’un Tweet, l’expansion attachments.poll_id est requise. Assurez-vous de remplacer $BEARER_TOKEN par votre Jeton Bearer généré.
curl --request GET 'https://api.x.com/2/tweets?ids=1199786642791452673&expansions=attachments.poll_ids&poll.fields=duration_minutes,end_datetime,id,options,voting_status' --header 'Authorization: Bearer $BEARER_TOKEN'
Exemple de réponse
{
  "data": [
    {
      "text": "C#",
      "id": "1199786642791452673",
      "attachments": {
        "poll_ids": [
          "1199786642468413448"
        ]
      }
    }
  ],
  "includes": {
    "polls": [
      {
        "id": "1199786642468413448",
        "voting_status": "closed",
        "duration_minutes": 1440,
        "options": [
          {
            "position": 1,
            "label": ""C Sharp"",
            "votes": 795
          },
          {
            "position": 2,
            "label": ""C Hashtag"",
            "votes": 156
          }
        ],
        "end_datetime": "2019-11-28T20:26:41.000Z"
      }
    ]
  }
}

Lieu

Le lieu étiqueté dans un Tweet n’est pas un objet principal sur un endpoint, mais il peut être trouvé et inclus via expansion dans la ressource Tweet. L’objet est disponible avec ?expansions=geo.place_id pour obtenir l’objet condensé avec uniquement les champs par défaut. Utilisez l’expansion avec le paramètre de champs place.fields lorsque vous demandez des champs supplémentaires pour compléter l’objet.
Valeur du champTypeDescriptionUtilisation possible
full_name (par défaut)stringUn nom de lieu détaillé en version longue.Classer un Tweet par un nom de lieu précis
"full_name": "Manhattan, NY"
id (par défaut)stringL’identifiant unique du lieu développé, s’il s’agit d’un point d’intérêt étiqueté dans le Tweet.À utiliser pour récupérer un lieu par code
"id": "01a9a39529b27f36"
contained_withinarrayRenvoie les identifiants des lieux connus qui contiennent le lieu référencé.
countrystringLe nom complet du pays auquel appartient ce lieu.Classer un Tweet par nom de pays
"country": "United States"
country_codestringLe code pays ISO Alpha-2 auquel appartient ce lieu.Classer un Tweet par code pays
"country_code": "US"
geoobjectContient les détails du lieu au format GeoJSON.
`json
”geo”:
“type”: “Feature”,
“bbox”: [
-74.026675,
40.683935,
-73.910408,
40.877483
],
“properties”:
}
`
namestringLe nom court de ce lieu.Classer un Tweet par un nom de lieu précis
"name": "Manhattan"
place_typestringPrécise le type d’information représenté par ces données de lieu, comme un nom de ville ou un point d’intérêt.Classer un Tweet par type de lieu spécifique
"place_type": "city"
Récupération d’un objet lieu Exemple de requête Dans la requête suivante, nous demandons des champs pour l’objet lieu associé au Tweet sur l’endpoint Tweets lookup. Comme le lieu est un objet enfant d’un Tweet, l’expansion geo.place_id est requise. Assurez-vous de remplacer $BEARER_TOKEN par votre propre Jeton Bearer généré.
curl --request GET 'https://api.x.com/2/tweets?ids=1136048014974423040&expansions=geo.place_id&place.fields=contained_within,country,country_code,full_name,geo,id,name,place_type' --header 'Authorization: Bearer $BEARER_TOKEN'
Exemple de réponse
{
  "data": [
    {
      "text": "Nous partageons une démonstration en direct du nouveau programme Twitter Developer Labs, animée par un membre de notre équipe DevRel, @jessicagarson #TapIntoTwitter https://t.co/ghv7f4dW5M",
      "id": "1136048014974423040",
      "geo": {
        "place_id": "01a9a39529b27f36"
      }
    }
  ],
  "includes": {
    "places": [
      {
        "geo": {
          "type": "Feature",
          "bbox": [
            -74.026675,
            40.683935,
            -73.910408,
            40.877483
          ],
          "properties": {}
        },
        "country_code": "US",
        "name": "Manhattan",
        "id": "01a9a39529b27f36",
        "place_type": "city",
        "country": "États-Unis",
        "full_name": "Manhattan, NY"
      }
    ]
  }
}

Événements de Messages privés

Les conversations de Messages privés (DM) sont constituées d’événements. La X API v2 prend actuellement en charge trois types d’événements : MessageCreate, ParticipantsJoin et ParticipantsLeave. Les objets d’événements de DM sont renvoyés par les endpoints Direct Message lookup, et un événement MessageCreate est créé lorsque des Messages privés sont créés avec succès via les endpoints Manage Direct Messages. Lors de la requête d’événements de DM, trois attributs d’objet d’événement, ou fields, sont inclus par défaut : id, event_type et text. Pour recevoir des fields d’événement supplémentaires, utilisez le paramètre fields dm_event.fields pour en sélectionner d’autres. Les autres fields d’événement disponibles incluent : dm_conversation_id, created_at, sender_id, attachments, participant_ids et referenced_tweets. Plusieurs de ces fields fournissent les ID d’autres objets X liés à l’événement de Message privé :
  • sender_id - L’id du compte qui a envoyé le message, ou qui a invité un participant à une conversation de groupe
  • participant_ids - Un tableau d’id de comptes. Pour les événements ParticipantsJoin et ParticipantsLeave, ce tableau contiendra un seul id : celui du compte qui a créé l’événement
  • attachments - Fournit les id de médias pour le contenu téléversé sur X par l’expéditeur
  • referenced_tweets - Si une URL de Tweet est trouvée dans le champ text, l’id de ce Tweet est inclus dans la réponse
Les expansions sender_id, participant_ids, referenced_tweets.id et attachments.media_keys sont disponibles pour développer ces ID d’objets X.
Valeur du champTypeDescriptionComment il peut être utilisé
id (par défaut)stringIdentifiant unique de l’événement.

”id”: “1050118621198921728”
Utilisez-le pour récupérer par programmation un événement de conversation spécifique (disponible avec les endpoints v1.1).
event_type (par défaut)stringDécrit le type d’événement. Trois types sont actuellement pris en charge :

* MessageCreate

* ParticipantsJoin

* ParticipantsLeave


“event_type”: “MessageCreate”
Lors de la récupération de l’historique d’une conversation, permet de savoir quand les messages ont été créés et, pour les conversations de groupe, quand les participants ont rejoint et quitté. Toutes les méthodes GET prennent en charge le filtrage sur des types d’événements spécifiques avec le paramètre de requête event_type=.
text (par défaut)stringLe texte UTF-8 du Message privé.

”text”: “Hello, just you!”
Avec des chatbots, ce champ peut servir à analyser le contenu des messages et à déterminer des réponses automatisées. Peut aussi être utilisé pour créer des fonctionnalités de recherche de conversations.
entitiesobjectEntités extraites du texte du Message privé.Fournit des informations supplémentaires sur les hashtags, URL, mentions, etc.
sender_idstringID de l’utilisateur qui crée l’événement. Pour développer cet objet dans la réponse, incluez sender_id comme expansion et utilisez le paramètre de requête user.fields pour spécifier les attributs de l’objet utilisateur qui vous intéressent.

”sender_id”: “906948460078698496”
Récupérer l’objet utilisateur de la personne qui a créé l’événement MessageCreate ou ParticipantsJoin.
participant_idsarray (of strings)IDs des participants rejoignant et quittant une conversation de groupe. Également utilisé lors de la création de nouvelles conversations de groupe. Pour développer cet objet dans la réponse, incluez participant_ids comme expansion et utilisez le paramètre de requête user.fields pour spécifier les attributs de l’objet utilisateur qui vous intéressent.

”participant_ids”: [

     “906948460078698496”

]
Utilisé pour récupérer les objets utilisateur des participants rejoignant et quittant les conversations de groupe.
dm_conversation_idstringIdentifiant unique de la conversation à laquelle l’événement appartient.

”dm_conversation_id”: “1584988213961031680”
Utilisez-le pour récupérer par programmation des événements d’une conversation et y ajouter des Messages privés.
created_atdate (ISO 8601)Heure de création (UTC) du Tweet.

”created_at”: “2019-06-04T23:12:08.000Z”
Ce champ peut servir à déterminer quand un Message privé a été créé ou quand des participants à la conversation ont rejoint ou quitté.
referenced_tweetsarrayID de tout Tweet mentionné dans le texte du Message privé. Pour développer cet objet dans la réponse, incluez referenced_tweets.id comme expansion et utilisez le paramètre de requête tweet.fields pour spécifier les attributs de l’objet Tweet qui vous intéressent.

”referenced_tweets”: [

   

“id”: “1578868150510456833”

   

]
Lorsque des Messages privés font référence à un Tweet, ces IDs peuvent servir à rechercher les détails du Tweet.
attachmentsobjectPour les Messages privés avec média joint, fournit la clé média du contenu téléversé (photo, vidéo ou GIF). Pour développer cet objet dans la réponse, incluez attachments.media_keys comme expansion et utilisez le paramètre de requête media.fields pour spécifier les attributs de l’objet média qui vous intéressent. Actuellement, une seule pièce jointe est prise en charge.

”attachments”:

    “media_keys”: [

        “3_1136048009270239232”

    ]

Permet de comprendre les objets média joints aux Messages privés.
Récupération d’un objet d’événement de Message privé Exemple de requête Pour cet exemple, nous allons créer une requête qui récupère les événements associés à une conversation en tête-à-tête. Cette requête renverra les champs fondamentaux de l’événement de Message privé, ainsi que des champs supplémentaires pour les Tweets référencés et leurs auteurs. Créons une query qui demande :
  • Des attributs d’événement fondamentaux tels que sa date de création et la conversation dont il fait partie (dm_conversation).
  • L’ID du compte et la description de l’expéditeur du Message privé.
  • Le texte de tout Tweet référencé, et sa date de publication.
  • L’ID du compte et la description de tout auteur de Tweet référencé.
Pour renvoyer ces attributs, la query de votre requête inclurait ce qui suit : ?dm_event.fields=id,sender_id,text,created_at,dm_conversation_id&expansions=sender_id,referenced_tweets.id&tweet.fields=created_at,text,author_id&user.fields=description
      curl --request GET 'https://api.x.com/2/dm_conversations/with/:participant_id/dm_events?tweet.fields=created_at,text,author_id&user.fields=description&expansions=sender_id,participant_ids,referenced_tweets.id&dm_event.fields=id,sender_id,text,participant_ids,created_at,'
    --header 'Authorization: Bearer $BEARER_TOKEN'
Assurez-vous de remplacer $BEARER_TOKEN par votre propre Jeton Bearer que vous aurez généré. Exemple de réponse
      {
	"data": [{
			"id": "1585047616894574596",
			"sender_id": "944480690",
			"text": "Salut, juste toi !",
			"created_at": "2022-10-25T23:16:15.000Z",
			"event_type": "MessageCreate",
			"dm_conversation_id": "944480690-906948460078698496"
		},
		{
			"id": "1581048670673260549",
			"sender_id": "944480690",
			"text": "Lien Tweet simple : https://t.co/IYFbRIdXHg",
			"referenced_tweets": [{
				"id": "1578900353814519810"
			}],
			"created_at": "2022-10-14T22:25:52.000Z",
			"event_type": "MessageCreate",
			"dm_conversation_id": "944480690-906948460078698496"
		},
		{
			"id": "1580705121553420292",
			"sender_id": "944480690",
			"text": "Ajout d'un nouveau message privé individuel.",
			"created_at": "2022-10-13T23:40:43.000Z",
			"event_type": "MessageCreate",
			"dm_conversation_id": "944480690-906948460078698496"
		}
	],
	"includes": {
		"users": [{
				"name": "Démos API",
				"description": "Hébergement d'intégrations TwitterDev... @TwitterDev #DevRel",
				"id": "944480690",
				"username": "FloodSocial"
			},
			{
				"name": "le SnowBot",
				"description": "Domicile du SnowBot @TwitterDev... Fournit des rapports de neige, des photos de neige et des liens de recherche sur la neige... Le chatbot est actuellement en cours de refonte pour l'API Twitter v2.",
				"id": "906948460078698496",
				"username": "SnowBotDev"
			}
		],
		"tweets": [{
				"text": "Je me sens un peu mal de ne pas avoir souhaité à tout le monde une bonne nouvelle année hydrologique du Colorado…\n\nBonne année hydrologique à tous mes amis et collègues du Colorado, nouveaux et anciens…\n\nQue ce soit une année hydrologique généreuse, mais pas trop généreuse…",
				"id": "1578900353814519810",
				"created_at": "2022-10-09T00:09:13.000Z",
				"author_id": "944480690",
				"edit_history_tweet_ids": [
					"1578900353814519810"
				]
			}
		]
	},
	"meta": {
		"result_count": 3,
		"next_token": "18LAA581J5II7LA00C00ZZZZ",
		"previous_token": "1BLC45G1H8CAL5DG0G00ZZZZ"
	}
}

Communauté

Les Communautés sont des espaces dédiés où les utilisateurs de X peuvent se connecter, partager et se rapprocher des discussions qui les intéressent le plus. Les Posts dans les Communautés sont visibles par toute personne sur X, mais seuls les membres de la Communauté peuvent interagir et participer à la discussion. L’objet Community contient des metadata pertinentes sur une Communauté.
Field valueTypeDescription
created_atdate (ISO 8601)Date de création de la Communauté.
idstringL’identifiant unique de la Communauté.
namestringLe nom de la Communauté.
descriptionstringLe texte de la description de la Communauté, le cas échéant.
accessstringLe niveau d’accès de la Communauté.

Peut être l’un des suivants :
- Public
- Closed
join_policystringLa politique d’adhésion de la Communauté.

Peut être l’un des suivants :
- Open
- RestrictedJoinRequestsDisabled
- RestrictedJoinRequestsRequireAdminApproval
- RestrictedJoinRequestsRequireModeratorApproval
- SuperFollowRequired
member_countintegerLe nombre de membres ayant rejoint la Communauté.
Récupération d’objets Community Exemple de requête Dans la requête suivante, nous demandons des fields spécifiques tout en recherchant une liste de Communautés à partir d’un mot-clé. Assurez-vous de remplacer $BEARER_TOKEN par votre propre Jeton Bearer.
curl --location 'https://api.x.com/2/communities/search?query=anime&amp;community.fields=access,created_at,description,id,join_policy,member_count,name' --header 'Authorization: $BEARER_TOKEN'
Exemple de réponse
{
  "data": [
    {
      "id": "Q29tbXVuaXR5OjE3NTg3NDc4MTc2NDI3MDA5MjI=",
      "description": "Bienvenue dans la Communauté Anime ! Ici, les fans d'anime se retrouvent pour partager leurs séries préférées et discuter de tout ce qui touche à l'anime.",
      "join_policy": "Open",
      "access": "Public",
      "member_count": 39915,
      "name": "Communauté Anime",
      "created_at": "2024-02-17T06:58:50.000Z"
    },
    {
      "id": "Q29tbXVuaXR5OjE1MDY3OTM5NTMxMDYwNDI4OTE=",
      "description": "Rejoignez-nous et échangez sur l'anime 🥰",
      "join_policy": "Open",
      "access": "Public",
      "member_count": 26019,
      "name": "Monde de l'Anime 🌸",
      "created_at": "2022-03-24T00:44:07.000Z"
    },
    {
      "id": "Q29tbXVuaXR5OjE0OTY3NzYyMTU5Mzk1MzQ4NDk=",
      "description": "Pour tous les passionnés et créateurs d'anime !",
      "join_policy": "Open",
      "access": "Public",
      "member_count": 5612,
      "name": "Anime",
      "created_at": "2022-02-24T09:17:13.000Z"
    }
  ],
  "meta": {
    "next_token": "7140dibdnow9c7btw481s8m561gat797rboud5r80xvzm"
  }
}

Comment utiliser fields et expansions

Par défaut, les objets de données de la X API v2 incluent un petit nombre de champs par défaut lorsque vous effectuez une requête sans utiliser les paramètres fields ou expansions. Ce guide vous montrera comment utiliser les paramètres de requête fields et expansions dans votre requête afin de recevoir des objets et des champs supplémentaires dans votre réponse. Dans ce guide, nous demanderons plusieurs champs en nous basant sur la capture d’écran de Tweet suivante.  
Cette image montre une capture d’écran d’un Tweet publié par @X. Vous pouvez voir le texte du Tweet, le nom d’utilisateur, la date et l’heure de publication, la source et les métriques publiques. Elle inclut également une vidéo.
Comme vous pouvez le voir sur la capture d’écran, plusieurs informations visibles sont liées au Tweet, notamment l’auteur du Tweet, ses métriques, l’horodatage de création, la vidéo et le nombre de vues de la vidéo. Il existe également plusieurs éléments de données qui ne sont pas visibles sur la capture, mais qui restent disponibles à la demande.  Lorsque vous effectuez une requête vers l’API, la réponse par défaut est simple et ne contient que les champs de Tweet par défaut (id et text). Vous ne recevrez également que l’objet principal renvoyé par l’endpoint que vous utilisez, et non les objets de données associés susceptibles d’être liés à cet objet principal. Cette simplicité, associée aux paramètres fields et expansions, vous permet de demander uniquement les champs dont vous avez besoin, en fonction de votre cas d’utilisation.   

Demander des champs et objets supplémentaires.

Tout d’abord, nous allons récupérer un objet Tweet en utilisant un ID de Tweet et l’endpoint GET /tweets. Requête :
curl --request GET --url 'https://api.x.com/2/tweets?ids=1260294888811347969' \
  --header 'Authorization: Bearer $BEARER_TOKEN'
Réponse :
{
    "data": [
        {
            "id": "1260294888811347969",
            "text": "Ne ratez pas les Tweets à propos de votre Tweet. \n\nMaintenant sur iOS, vous pouvez voir tous les Retweets avec commentaires au même endroit. https://t.co/oanjZfzC6y"
        }
    ]
}
Le guide étape par étape suivant vous montrera comment récupérer les données supplémentaires visibles dans la capture d’écran.
  1. Identifiez les fields supplémentaires que vous souhaitez demander en utilisant notre modèle d’objet, ou en consultant la liste des fields dans les pages de référence de l’API des endpoints. Dans ce cas, nous demanderons les champs supplémentaires suivants : attachments, author_id, created_at, public_metrics.
  2. Créez le paramètre de requête tweet.fields en lui donnant pour valeur les champs ci‑dessus, sous forme de liste séparée par des virgules : ?tweet.fields=attachments,author_id,created_at,public_metrics
  3. Ajoutez le paramètre query à la requête GET /tweets que vous avez effectuée plus tôt.
Requête : curl --request GET --url 'https://api.x.com/2/tweets?ids=1260294888811347969&tweet.fields=attachments,author_id,created_at,public_metrics' \ --header 'Authorization: Bearer $BEARER_TOKEN' Réponse :
{
    "data": [
        {
            "id": "1260294888811347969",
            "text": "Ne ratez pas les Tweets à propos de votre Tweet. \n\nMaintenant sur iOS, vous pouvez voir tous les Retweets avec commentaires au même endroit. https://t.co/oanjZfzC6y",
            "author_id": "783214",
            "public_metrics": {
                "retweet_count": 5219,
                "reply_count": 1828,
                "like_count": 17141,
                "quote_count": 3255
            },
            "attachments": {
                "media_keys": [
                    "13_1260294804770041858"
                ]
            },
            "created_at": "2020-05-12T19:44:51.000Z"
        }
    ]
}
  1. Ensuite, nous allons demander les champs liés à la vidéo qui était incluse dans le Tweet. Pour ce faire, nous utiliserons le paramètre expansions avec attachments.media_keys comme valeur, et nous l’ajouterons à la requête.
?expansions=attachments.media_keys Requête :
curl --request GET --url 'https://api.x.com/2/tweets?ids=1260294888811347969&tweet.fields=attachments,author_id,created_at,public_metrics&expansions=attachments.media_keys' \
  --header 'Authorization: Bearer $BEARER_TOKEN'
Réponse, avec l’objet média représenté dans l’objet includes :
{
    "data": [
        {
            "id": "1260294888811347969",
            "text": "Ne ratez pas les Tweets à propos de votre Tweet. \n\nMaintenant sur iOS, vous pouvez voir tous les Retweets avec commentaires au même endroit. https://t.co/oanjZfzC6y",
            "public_metrics": {
                "retweet_count": 5219,
                "reply_count": 1828,
                "like_count": 17141,
                "quote_count": 3255
            },
            "created_at": "2020-05-12T19:44:51.000Z",
            "attachments": {
                "media_keys": [
                    "13_1260294804770041858"
                ]
            },
            "author_id": "783214"
        }
    ],
    "includes": {
        "media": [
            {
                "media_key": "13_1260294804770041858",
                "type": "video"
            }
        ]
    }
}
  1. Et enfin, nous allons récupérer le nombre de vues et la durée de la vidéo. Ces champs ne sont pas inclus par défaut, nous devons donc les demander explicitement. Utilisez le paramètre media.fields avec les valeurs séparées par des virgules : public_metrics et duration_ms dans votre requête.
?media.fields=public_metrics,duration_ms Requête :   curl --request GET --url 'https://api.x.com/2/tweets?ids=1260294888811347969&tweet.fields=attachments,author_id,created_at,public_metrics&expansions=attachments.media_keys&media.fields=duration_ms,public_metrics' --header 'Authorization: Bearer $BEARER_TOKEN' Réponse, qui inclut désormais toutes les données visibles dans la capture d’écran du Tweet :
  {
    "data": [
        {
            "id": "1260294888811347969",
            "text": "Ne ratez pas les Tweets à propos de votre Tweet. \n\nMaintenant sur iOS, vous pouvez voir tous les Retweets avec commentaires au même endroit. https://t.co/oanjZfzC6y",
            "author_id": "783214",
            "public_metrics": {
                "retweet_count": 5219,
                "reply_count": 1828,
                "like_count": 17141,
                "quote_count": 3255
            },
            "created_at": "2020-05-12T19:44:51.000Z",
            "attachments": {
                "media_keys": [
                    "13_1260294804770041858"
                ]
            }
        }
    ],
    "includes": {
        "media": [
            {
                "duration_ms": 36503,
                "media_key": "13_1260294804770041858",
                "public_metrics": {
                    "view_count": 1534703
                },
                "type": "video"
            }
        ]
    }
}
Au total, nous avons inclus les paramètres suivants dans cet exemple :
  • ids=1260294888811347969
  • tweet.fields=attachments,author_id,created_at,public_metrics
  • expansions=attachments.media_keys
  • media.fields=public_metrics,duration_ms  
Une fois réunis, voici à quoi ressemble la chaîne de requête complète :
?ids=1260294888811347969&tweet.fields=attachments,author\_id,created\_at,public\_metrics&expansions=attachments.media\_keys&media.fields=public\_metrics,duration\_ms

Exemples de charges utiles pour X API v2

Tweet

{
  "data": [
    {
      "conversation_id": "1304102743196356610",
      "id": "1307025659294674945",
      "possibly_sensitive": false,
      "public_metrics": {
        "retweet_count": 11,
        "reply_count": 2,
        "like_count": 70,
        "quote_count": 1
      },
      "entities": {
        "urls": [
          {
            "start": 74,
            "end": 97,
            "url": "https://t.co/oeF3ZHeKQQ",
            "expanded_url": "https://dev.to/twitterdev/understanding-the-new-tweet-payload-in-the-twitter-api-v2-1fg5",
            "display_url": "dev.to/twitterdev/und…",
            "images": [
              {
                "url": "https://pbs.twimg.com/news_img/1317156296982867969/2uLfv-Bh?format=jpg&name=orig",
                "width": 1128,
                "height": 600
              },
              {
                "url": "https://pbs.twimg.com/news_img/1317156296982867969/2uLfv-Bh?format=jpg&name=150x150",
                "width": 150,
                "height": 150
              }
            ],
            "status": 200,
            "title": "Comprendre la nouvelle structure de données Tweet dans l'X API v2",
            "description": "X a récemment annoncé la nouvelle X API v2, reconstruite de zéro pour offrir de nouvelles fonctionnalités...",
            "unwound_url": "https://dev.to/twitterdev/understanding-the-new-tweet-payload-in-the-twitter-api-v2-1fg5"
          }
        ]
      },
      "text": "Voici un article qui présente les mises à jour de la nouvelle structure de données Tweet v2 https://t.co/oeF3ZHeKQQ",
      "in_reply_to_user_id": "2244994945",
      "created_at": "2020-09-18T18:36:15.000Z",
      "author_id": "2244994945",
      "referenced_tweets": [
        {
          "type": "replied_to",
          "id": "1304102743196356610"
        }
      ],
      "lang": "en",
      "source": "Twitter Web App"
    }
  ],
  "includes": {
    "users": [
      {
        "created_at": "2013-12-14T04:35:55.000Z",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/3ZX3TNiZCY",
                "expanded_url": "https://developer.x.com/en/community",
                "display_url": "developer.x.com/en/community"
              }
            ]
          },
          "description": {
            "hashtags": [
              {
                "start": 17,
                "end": 28,
                "tag": "TwitterDev"
              },
              {
                "start": 105,
                "end": 116,
                "tag": "TwitterAPI"
              }
            ]
          }
        },
        "id": "2244994945",
        "verified": true,
        "location": "127.0.0.1",
        "description": "La voix de l'équipe #TwitterDev et votre source officielle pour les mises à jour, actualités et événements liés à l'#TwitterAPI.",
        "pinned_tweet_id": "1293593516040269825",
        "username": "TwitterDev",
        "public_metrics": {
          "followers_count": 513961,
          "following_count": 2039,
          "tweet_count": 3635,
          "listed_count": 1672
        },
        "name": "Twitter Dev",
        "url": "https://t.co/3ZX3TNiZCY",
        "protected": false
      }
    ],
    "tweets": [
      {
        "conversation_id": "1304102743196356610",
        "id": "1304102743196356610",
        "possibly_sensitive": false,
        "public_metrics": {
          "retweet_count": 31,
          "reply_count": 12,
          "like_count": 104,
          "quote_count": 4
        },
        "entities": {
          "mentions": [
            {
              "start": 146,
              "end": 158,
              "username": "suhemparack"
            }
          ],
          "urls": [
            {
              "start": 237,
              "end": 260,
              "url": "https://t.co/CjneyMpgCq",
              "expanded_url": "https://x.com/TwitterDev/status/1304102743196356610/video/1",
              "display_url": "pic.x.com/CjneyMpgCq"
            }
          ],
          "hashtags": [
            {
              "start": 8,
              "end": 19,
              "tag": "TwitterAPI"
            }
          ]
        },
        "attachments": {
          "media_keys": [
            "13_1303848070984024065"
          ]
        },
        "text": "La nouvelle #TwitterAPI inclut quelques améliorations à la structure de données Tweet. Vous vous demandez probablement — quelles sont les principales différences ? 🧐\n\nDans cette vidéo, @SuhemParack compare la structure de données Tweet v1.1 avec ce que vous trouverez en utilisant nos endpoints v2. https://t.co/CjneyMpgCq",
        "created_at": "2020-09-10T17:01:37.000Z",
        "author_id": "2244994945",
        "lang": "en",
        "source": "Twitter Media Studio"
      }
    ]
  }
}

Réponse à un Tweet

{
  "data": [
    {
      "lang": "en",
      "conversation_id": "1296887091901718529",
      "text": "Découvrez comment @PennMedCDH utilise les données de X pour comprendre la crise sanitaire liée au COVID-19 📊\n\nhttps://t.co/1tdA8uDWes",
      "referenced_tweets": [
        {
          "type": "replied_to",
          "id": "1296887091901718529"
        }
      ],
      "possibly_sensitive": false,
      "entities": {
        "annotations": [
          {
            "start": 30,
            "end": 36,
            "probability": 0.6318,
            "type": "Product",
            "normalized_text": "Twitter"
          }
        ],
        "mentions": [
          {
            "start": 8,
            "end": 19,
            "username": "PennMedCDH"
          }
        ],
        "urls": [
          {
            "start": 87,
            "end": 110,
            "url": "https://t.co/1tdA8uDWes",
            "expanded_url": "https://developer.x.com/en/use-cases/success-stories/penn",
            "display_url": "developer.x.com/en/use-cases/s…",
            "status": 200,
            "title": "Penn Medicine Center for Digital Health",
            "description": "Le Penn Med Center for Digital Health a créé une carte X sur le COVID-19 qui inclut des graphiques détaillant l’opinion, les symptômes signalés, des découpages de données par État et des données frontalières sur l’épidémie de COVID-19. En outre, leur initiative Penn Med With You utilise des informations régionales agrégées provenant de X pour alimenter leur site web et leur service de messages texte. Ce service utilise ces informations pour diffuser des ressources pertinentes et opportunes.",
            "unwound_url": "https://developer.x.com/en/use-cases/success-stories/penn"
          }
        ]
      },
      "id": "1296887316556980230",
      "public_metrics": {
        "retweet_count": 9,
        "reply_count": 3,
        "like_count": 26,
        "quote_count": 2
      },
      "author_id": "2244994945",
      "in_reply_to_user_id": "2244994945",
      "context_annotations": [
        {
          "domain": {
            "id": "46",
            "name": "Brand Category",
            "description": "Catégories au sein des verticaux de marque qui affinent la portée des marques",
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Services",
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Brand",
            "description": "Marques et entreprises",
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "123",
            "name": "Actualité en cours",
            "description": "Actualités en cours comme « Brexit »",
          },
          "entity": {
            "id": "1220701888179359745",
            "name": "COVID-19"
          }
        }
      ],
      "source": "X Web App",
      "created_at": "2020-08-21T19:10:05.000Z"
    }
  ],
  "includes": {
    "users": [
      {
        "created_at": "2013-12-14T04:35:55.000Z",
        "id": "2244994945",
        "protected": false,
        "username": "TwitterDev",
        "verified": true,
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/3ZX3TNiZCY",
                "expanded_url": "https://developer.x.com/en/community",
                "display_url": "developer.x.com/en/community"
              }
            ]
          },
          "description": {
            "hashtags": [
              {
                "start": 17,
                "end": 28,
                "tag": "TwitterDev"
              },
              {
                "start": 105,
                "end": 116,
                "tag": "TwitterAPI"
              }
            ]
          }
        },
        "description": "La voix de l’équipe #TwitterDev et votre source officielle pour les mises à jour, les actualités et les événements liés à #TwitterAPI.",
        "pinned_tweet_id": "1293593516040269825",
        "public_metrics": {
          "followers_count": 513962,
          "following_count": 2039,
          "tweet_count": 3635,
          "listed_count": 1672
        },
        "location": "127.0.0.1",
        "name": "Twitter Dev",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "url": "https://t.co/3ZX3TNiZCY"
      },
      {
        "created_at": "2013-07-23T16:58:03.000Z",
        "id": "1615654896",
        "protected": false,
        "username": "PennMedCDH",
        "verified": false,
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/7eS9RuwIb9",
                "expanded_url": "http://centerfordigitalhealth.upenn.edu/",
                "display_url": "centerfordigitalhealth.upenn.edu"
              }
            ]
          },
          "description": {
            "mentions": [
              {
                "start": 0,
                "end": 13,
                "username": "PennMedicine"
              }
            ]
          }
        },
        "description": "Le Center for Digital Health de @PennMedicine fait progresser la science en étudiant les implications de l’essor des technologies de santé numériques dans les soins de santé.",
        "public_metrics": {
          "followers_count": 1348,
          "following_count": 455,
          "tweet_count": 1288,
          "listed_count": 92
        },
        "location": "Philadelphie (PA)",
        "name": "Penn Med CDH",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1067488849725726723/MoO3FQ44_normal.jpg",
        "url": "https://t.co/7eS9RuwIb9"
      }
    ],
    "tweets": [
      {
        "lang": "en",
        "conversation_id": "1296887091901718529",
        "text": "La Dre @RainaMerchant et son équipe du Penn Medicine CDH contribuent à bâtir l’avenir des soins de santé.\n\nL’équipe exploite des insights issus des données sociales de multiples façons — de la mise au jour de facteurs de risque à l’éclairage du sentiment public. 🔎",
        "possibly_sensitive": false,
        "entities": {
          "annotations": [
            {
              "start": 39,
              "end": 55,
              "probability": 0.8274,
              "type": "Organization",
              "normalized_text": "Penn Medicine CDH"
            }
          ],
          "mentions": [
            {
              "start": 4,
              "end": 18,
              "username": "RainaMerchant"
            }
          ]
        },
        "id": "1296887091901718529",
        "public_metrics": {
          "retweet_count": 9,
          "reply_count": 7,
          "like_count": 32,
          "quote_count": 0
        },
        "author_id": "2244994945",
        "source": "X Web App"
        "created_at": "2020-08-21T19:09:12.000Z"
      }
    ]
  }
}

Tweet étendu

{
  "data": [
    {
      "conversation_id": "1296121314218897408",
      "id": "1296121314218897408",
      "possibly_sensitive": false,
      "public_metrics": {
        "retweet_count": 54,
        "reply_count": 9,
        "like_count": 172,
        "quote_count": 23
      },
      "entities": {
        "urls": [
          {
            "start": 192,
            "end": 215,
            "url": "https://t.co/khXhTurm9x",
            "expanded_url": "https://devcommunity.x.com/t/hide-replies-now-available-in-the-new-twitter-api/140996",
            "display_url": "devcommunity.com/t/hide-replies…",
            "images": [
              {
                "url": "https://pbs.twimg.com/news_img/1296121315514957825/3CI24hSI?format=png&name=orig",
                "width": 400,
                "height": 400
              },
              {
                "url": "https://pbs.twimg.com/news_img/1296121315514957825/3CI24hSI?format=png&name=150x150",
                "width": 150,
                "height": 150
              }
            ],
            "status": 200,
            "title": "Masquer les réponses désormais disponible dans la nouvelle API Twitter",
            "description": "Aujourd'hui, nous sommes heureux d'annoncer la disponibilité générale de l'endpoint masquer les réponses dans la nouvelle API Twitter. L'endpoint masquer les réponses vous permet de créer des outils qui aident les personnes à masquer ou afficher les réponses à leurs Tweets. Les personnes gèrent leurs réponses pour de nombreuses raisons, notamment pour accorder moins d'attention aux commentaires abusifs, distrayants, trompeurs, ou pour rendre les conversations plus engageantes. Grâce à cet endpoint, vous pouvez créer des outils pour aider les personnes sur Twitter à masquer ou afficher les réponses plus rapidement et plus...",
            "unwound_url": "https://devcommunity.x.com/t/hide-replies-now-available-in-the-new-twitter-api/140996"
          }
        ],
        "hashtags": [
          {
            "start": 178,
            "end": 189,
            "tag": "TwitterAPI"
          }
        ]
      },
      "text": "L'endpoint masquer les réponses est lancé aujourd'hui ! \n\nLes développeurs peuvent masquer les réponses aux Tweets - un moyen essentiel pour les développeurs d'aider à améliorer la qualité de la conversation publique en utilisant l'#TwitterAPI.\n\nhttps://t.co/khXhTurm9x",
      "created_at": "2020-08-19T16:26:16.000Z",
      "context_annotations": [
        {
          "domain": {
            "id": "65",
            "name": "Interests and Hobbies Vertical",
            "description": "Regroupements de niveau supérieur d'intérêts et de loisirs, comme Alimentation ou Voyage"
          },
          "entity": {
            "id": "848920371311001600",
            "name": "Technology",
            "description": "Technologie et informatique"
          }
        },
        {
          "domain": {
            "id": "66",
            "name": "Interests and Hobbies Category",
            "description": "Un regroupement d'entités d'intérêts et de loisirs, comme Alimentation Originale ou Destinations"
          },
          "entity": {
            "id": "848921413196984320",
            "name": "Computer programming",
            "description": "Programmation informatique"
          }
        }
      ],
      "author_id": "2244994945",
      "lang": "en",
      "source": "Twitter Web App"
    }
  ],
  "includes": {
    "users": [
      {
        "created_at": "2013-12-14T04:35:55.000Z",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/3ZX3TNiZCY",
                "expanded_url": "https://developer.x.com/en/community",
                "display_url": "developer.x.com/en/community"
              }
            ]
          },
          "description": {
            "hashtags": [
              {
                "start": 17,
                "end": 28,
                "tag": "TwitterDev"
              },
              {
                "start": 105,
                "end": 116,
                "tag": "TwitterAPI"
              }
            ]
          }
        },
        "id": "2244994945",
        "verified": true,
        "location": "127.0.0.1",
        "description": "La voix de l'équipe #TwitterDev et votre source officielle pour les mises à jour, actualités et événements liés à l'#TwitterAPI.",
        "pinned_tweet_id": "1293593516040269825",
        "username": "TwitterDev",
        "public_metrics": {
          "followers_count": 513962,
          "following_count": 2039,
          "tweet_count": 3635,
          "listed_count": 1672
        },
        "name": "Twitter Dev",
        "url": "https://t.co/3ZX3TNiZCY",
        "protected": false
      }
    ]
  }
}

Tweet avec média

{
  "data": [
    {
      "lang": "en",
      "conversation_id": "1293593516040269825",
      "text": "C'est enfin arrivé ! 🥁 Dites bonjour à la nouvelle #TwitterAPI.\n\nNous reconstruisons la X API v2 de zéro pour mieux servir notre communauté de développeurs. Et le lancement d'aujourd'hui n'est que le début.\n\nhttps://t.co/32VrwpGaJw https://t.co/KaFSbjWUA8",
      "attachments": {
        "media_keys": [
          "7_1293565706408038401"
        ]
      },
      "possibly_sensitive": false,
      "entities": {
        "annotations": [
          {
            "start": 78,
            "end": 88,
            "probability": 0.4381,
            "type": "Product",
            "normalized_text": "Twitter API"
          }
        ],
        "hashtags": [
          {
            "start": 42,
            "end": 53,
            "tag": "TwitterAPI"
          }
        ],
        "urls": [
          {
            "start": 195,
            "end": 218,
            "url": "https://t.co/32VrwpGaJw",
            "expanded_url": "https://blog.x.com/developer/en_us/topics/tools/2020/introducing_new_twitter_api.html",
            "display_url": "blog.x.com/developer/en_u…",
            "images": [
              {
                "url": "https://pbs.twimg.com/news_img/1336475659279818754/_cmRh7QE?format=jpg&name=orig",
                "width": 1200,
                "height": 627
              },
              {
                "url": "https://pbs.twimg.com/news_img/1336475659279818754/_cmRh7QE?format=jpg&name=150x150",
                "width": 150,
                "height": 150
              }
            ],
            "status": 200,
            "title": "Présentation d'une X API nouvelle et améliorée",
            "description": "Présentation de la nouvelle X API - reconstruite de zéro pour offrir de nouvelles fonctionnalités plus rapidement afin que les développeurs puissent aider le monde à se connecter à la conversation publique qui se déroule sur Twitter.",
            "unwound_url": "https://blog.x.com/developer/en_us/topics/tools/2020/introducing_new_twitter_api.html"
          },
          {
            "start": 219,
            "end": 242,
            "url": "https://t.co/KaFSbjWUA8",
            "expanded_url": "https://x.com/TwitterDev/status/1293593516040269825/video/1",
            "display_url": "pic.x.com/KaFSbjWUA8"
          }
        ]
      },
      "id": "1293593516040269825",
      "public_metrics": {
        "retweet_count": 958,
        "reply_count": 171,
        "like_count": 2848,
        "quote_count": 333
      },
      "author_id": "2244994945",
      "context_annotations": [
        {
          "domain": {
            "id": "46",
            "name": "Catégorie de marque",
            "description": "Catégories au sein des secteurs de marque qui affinent la portée des marques"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Services"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Marque",
            "description": "Marques et entreprises"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "65",
            "name": "Secteur des centres d'intérêt et loisirs",
            "description": "Groupements de niveau supérieur de centres d'intérêt et de loisirs, comme l'alimentation ou les voyages"
          },
          "entity": {
            "id": "848920371311001600",
            "name": "Technologie",
            "description": "Technologie et informatique"
          }
        },
        {
          "domain": {
            "id": "66",
            "name": "Catégorie des centres d'intérêt et loisirs",
            "description": "Un groupement d'entités de centres d'intérêt et de loisirs, comme les aliments nouveaux ou les destinations"
          },
          "entity": {
            "id": "848921413196984320",
            "name": "Programmation informatique",
            "description": "Programmation informatique"
          }
        }
      ],
      "source": "Twitter Web App",
      "created_at": "2020-08-12T17:01:42.000Z"
    }
  ],
  "includes": {
    "media": [
      {
        "height": 720,
        "duration_ms": 34875,
        "media_key": "7_1293565706408038401",
        "type": "video",
        "preview_image_url": "https://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
        "public_metrics": {
          "view_count": 279438
        },
        "width": 1280
      }
    ],
    "users": [
      {
        "created_at": "2013-12-14T04:35:55.000Z",
        "id": "2244994945",
        "protected": false,
        "username": "TwitterDev",
        "verified": true,
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/3ZX3TNiZCY",
                "expanded_url": "https://developer.x.com/en/community",
                "display_url": "developer.x.com/en/community"
              }
            ]
          },
          "description": {
            "hashtags": [
              {
                "start": 17,
                "end": 28,
                "tag": "TwitterDev"
              },
              {
                "start": 105,
                "end": 116,
                "tag": "TwitterAPI"
              }
            ]
          }
        },
        "description": "La voix de l'équipe #TwitterDev et votre source officielle pour les mises à jour, actualités et événements liés à la #TwitterAPI.",
        "pinned_tweet_id": "1293593516040269825",
        "public_metrics": {
          "followers_count": 513962,
          "following_count": 2039,
          "tweet_count": 3635,
          "listed_count": 1672
        },
        "location": "127.0.0.1",
        "name": "Twitter Dev",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "url": "https://t.co/3ZX3TNiZCY"
      }
    ]
  }
}


### Retweet

      `{
  "data": [
    {
      "public_metrics": {
        "retweet_count": 19,
        "reply_count": 0,
        "like_count": 0,
        "quote_count": 0
      },
      "conversation_id": "1229851574555508737",
      "id": "1229851574555508737",
      "entities": {
        "annotations": [
          {
            "start": 28,
            "end": 38,
            "probability": 0.261,
            "type": "Product",
            "normalized_text": "Alexa Skill"
          },
          {
            "start": 44,
            "end": 50,
            "probability": 0.7332,
            "type": "Product",
            "normalized_text": "Twitter"
          }
        ],
        "mentions": [
          {
            "start": 3,
            "end": 15,
            "username": "suhemparack"
          }
        ]
      },
      "text": "RT @suhemparack: J'ai créé une Alexa Skill pour Twitter utilisant APL qui vous permet de voir les Tweets et Tendances sur l'echo show !\n\nRegardez ici…",
      "created_at": "2020-02-18T19:33:59.000Z",
      "possibly_sensitive": false,
      "author_id": "2244994945",
      "referenced_tweets": [
        {
          "type": "retweeted",
          "id": "1229843515603144704"
        }
      ],
      "context_annotations": [
        {
          "domain": {
            "id": "47",
            "name": "Brand",
            "description": "Marques et entreprises"
          },
          "entity": {
            "id": "10026792024",
            "name": "Amazon"
          }
        },
        {
          "domain": {
            "id": "48",
            "name": "Product",
            "description": "Produits créés par les marques. Exemples : Ford Explorer, Apple iPhone."
          },
          "entity": {
            "id": "968221983803494400",
            "name": "Amazon - Alexa",
            "description": "Alexa"
          }
        },
        {
          "domain": {
            "id": "46",
            "name": "Brand Category",
            "description": "Catégories au sein des verticales de marque qui réduisent la portée des marques"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Services"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Brand",
            "description": "Marques et entreprises"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        }
      ],
      "source": "Application Web Twitter",
      "lang": "en"
    }
  ],
  "includes": {
    "users": [
      {
        "profile_image_url": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "username": "TwitterDev",
        "name": "Twitter Dev",
        "location": "127.0.0.1",
        "url": "https://t.co/3ZX3TNiZCY",
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/3ZX3TNiZCY",
                "expanded_url": "https://developer.x.com/en/community",
                "display_url": "developer.x.com/en/community"
              }
            ]
          },
          "description": {
            "hashtags": [
              {
                "start": 17,
                "end": 28,
                "tag": "TwitterDev"
              },
              {
                "start": 105,
                "end": 116,
                "tag": "TwitterAPI"
              }
            ]
          }
        },
        "id": "2244994945",
        "description": "La voix de l'équipe #TwitterDev et votre source officielle pour les mises à jour, actualités et événements liés à la #TwitterAPI.",
        "verified": true,
        "public_metrics": {
          "followers_count": 513962,
          "following_count": 2039,
          "tweet_count": 3635,
          "listed_count": 1672
        },
        "pinned_tweet_id": "1293593516040269825",
        "created_at": "2013-12-14T04:35:55.000Z",
        "protected": false
      },
      {
        "profile_image_url": "https://pbs.twimg.com/profile_images/1230703695051935747/TbQKe91L_normal.jpg",
        "username": "suhemparack",
        "name": "Suhem Parack",
        "location": "Seattle, WA",
        "url": "https://t.co/8IkCzClPCz",
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/8IkCzClPCz",
                "expanded_url": "https://developer.x.com",
                "display_url": "developer.x.com"
              }
            ]
          },
          "description": {
            "mentions": [
              {
                "start": 42,
                "end": 50,
                "username": "Twitter"
              }
            ]
          }
        },
        "id": "857699969263964161",
        "description": "Relations développeurs pour la recherche académique @Twitter. Parlez-moi de recherche avec les données Twitter. Précédemment : Amazon Alexa. Les opinions sont les miennes",
        "verified": false,
        "public_metrics": {
          "followers_count": 738,
          "following_count": 512,
          "tweet_count": 460,
          "listed_count": 12
        },
        "pinned_tweet_id": "1296498078233571329",
        "created_at": "2017-04-27T20:56:22.000Z",
        "protected": false
      }
    ],
    "tweets": [
      {
        "public_metrics": {
          "retweet_count": 19,
          "reply_count": 1,
          "like_count": 71,
          "quote_count": 6
        },
        "conversation_id": "1229843515603144704",
        "id": "1229843515603144704",
        "entities": {
          "annotations": [
            {
              "start": 11,
              "end": 21,
              "probability": 0.3342,
              "type": "Product",
              "normalized_text": "Alexa Skill"
            },
            {
              "start": 27,
              "end": 33,
              "probability": 0.6727,
              "type": "Product",
              "normalized_text": "Twitter"
            }
          ],
          "urls": [
            {
              "start": 127,
              "end": 150,
              "url": "https://t.co/l5J8wq748G",
              "expanded_url": "https://dev.to/twitterdev/building-an-alexa-skill-for-twitter-using-alexa-presentation-language-1aj0",
              "display_url": "dev.to/twitterdev/bui…",
              "status": 200,
              "unwound_url": "https://dev.to/twitterdev/building-an-alexa-skill-for-twitter-using-alexa-presentation-language-1aj0"
            }
          ]
        },
        "text": "J'ai créé une Alexa Skill pour Twitter utilisant APL qui vous permet de voir les Tweets et Tendances sur l'echo show !\n\nRegardez ici 👇\n\nhttps://t.co/l5J8wq748G",
        "created_at": "2020-02-18T19:01:58.000Z",
        "possibly_sensitive": false,
        "author_id": "857699969263964161",
        "context_annotations": [
          {
            "domain": {
              "id": "47",
              "name": "Brand",
              "description": "Marques et entreprises"
            },
            "entity": {
              "id": "10026792024",
              "name": "Amazon"
            }
          },
          {
            "domain": {
              "id": "48",
              "name": "Product",
              "description": "Produits créés par les marques. Exemples : Ford Explorer, Apple iPhone."
            },
            "entity": {
              "id": "968221983803494400",
              "name": "Amazon - Alexa",
              "description": "Alexa"
            }
          },
          {
            "domain": {
              "id": "46",
              "name": "Brand Category",
              "description": "Catégories au sein des verticales de marque qui réduisent la portée des marques"
            },
            "entity": {
              "id": "781974596752842752",
              "name": "Services"
            }
          },
          {
            "domain": {
              "id": "47",
              "name": "Brand",
              "description": "Marques et entreprises"
            },
            "entity": {
              "id": "10045225402",
              "name": "Twitter"
            }
          }
        ],
        "source": "Application Web Twitter",
        "lang": "en"
      }
    ]
  }
}`


### Quote Tweet

      `{
  "data": [
    {
      "lang": "en",
      "conversation_id": "1328399838128467969",
      "text": "Comme prévu, les endpoints Labs v2 référencés ci-dessous ont maintenant été supprimés. N'hésitez pas à nous faire savoir sur les forums si vous avez des questions ou besoin d'aide avec l'X API v2 ! https://t.co/JaxttUMmjX",
      "referenced_tweets": [
        {
          "type": "quoted",
          "id": "1327011423252144128"
        }
      ],
      "possibly_sensitive": false,
      "entities": {
        "annotations": [
          {
            "start": 151,
            "end": 157,
            "probability": 0.8115,
            "type": "Product",
            "normalized_text": "Twitter"
          }
        ],
        "urls": [
          {
            "start": 167,
            "end": 190,
            "url": "https://t.co/JaxttUMmjX",
            "expanded_url": "https://x.com/TwitterDev/status/1327011423252144128",
            "display_url": "twitter.com/TwitterDev/sta…"
          }
        ]
      },
      "id": "1328399838128467969",
      "public_metrics": {
        "retweet_count": 7,
        "reply_count": 4,
        "like_count": 29,
        "quote_count": 1
      },
      "author_id": "2244994945",
      "context_annotations": [
        {
          "domain": {
            "id": "46",
            "name": "Catégorie de marque",
            "description": "Catégories au sein des secteurs de marque qui précisent le périmètre des marques"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Services"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Marque",
            "description": "Marques et entreprises"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "65",
            "name": "Secteur centres d'intérêt et loisirs",
            "description": "Groupements de niveau supérieur pour les centres d'intérêt et loisirs, comme Alimentation ou Voyage"
          },
          "entity": {
            "id": "848920371311001600",
            "name": "Technologie",
            "description": "Technologie et informatique"
          }
        },
        {
          "domain": {
            "id": "66",
            "name": "Catégorie centres d'intérêt et loisirs",
            "description": "Groupement d'entités de centres d'intérêt et loisirs, comme Alimentation originale ou Destinations"
          },
          "entity": {
            "id": "848921413196984320",
            "name": "Programmation informatique",
            "description": "Programmation informatique"
          }
        }
      ],
      "source": "Twitter Web App",
      "created_at": "2020-11-16T18:09:36.000Z"
    }
  ],
  "includes": {
    "users": [
      {
        "created_at": "2013-12-14T04:35:55.000Z",
        "id": "2244994945",
        "protected": false,
        "username": "TwitterDev",
        "verified": true,
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/3ZX3TNiZCY",
                "expanded_url": "https://developer.x.com/en/community",
                "display_url": "developer.x.com/en/community"
              }
            ]
          },
          "description": {
            "hashtags": [
              {
                "start": 17,
                "end": 28,
                "tag": "TwitterDev"
              },
              {
                "start": 105,
                "end": 116,
                "tag": "TwitterAPI"
              }
            ]
          }
        },
        "description": "La voix de l'équipe #TwitterDev et votre source officielle pour les mises à jour, actualités et événements liés à l'#TwitterAPI.",
        "pinned_tweet_id": "1293593516040269825",
        "public_metrics": {
          "followers_count": 513962,
          "following_count": 2039,
          "tweet_count": 3635,
          "listed_count": 1672
        },
        "location": "127.0.0.1",
        "name": "Twitter Dev",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "url": "https://t.co/3ZX3TNiZCY"
      }
    ],
    "tweets": [
      {
        "lang": "en",
        "conversation_id": "1327011423252144128",
        "text": "👋 Rappel amical : Twitter Developer Labs v2 masquer les réponses et recherche récente seront supprimés lundi prochain, le 16 novembre ! Nous vous encourageons à migrer vers les nouveaux endpoints masquer les réponses et recherche récente maintenant disponibles dans le v2 #TwitterAPI. Détails : https://t.co/r6z6CI7kEy",
        "possibly_sensitive": false,
        "entities": {
          "annotations": [
            {
              "start": 26,
              "end": 50,
              "probability": 0.4387,
              "type": "Product",
              "normalized_text": "Twitter Developer Labs v2"
            }
          ],
          "hashtags": [
            {
              "start": 228,
              "end": 239,
              "tag": "TwitterAPI"
            }
          ],
          "urls": [
            {
              "start": 250,
              "end": 273,
              "url": "https://t.co/r6z6CI7kEy",
              "expanded_url": "https://devcommunity.x.com/t/retiring-labs-v2-recent-search-and-hide-replies/145795",
              "display_url": "devcommunity.com/t/retiring-lab…",
              "images": [
                {
                  "url": "https://pbs.twimg.com/news_img/1327011425240313856/PkurOyu1?format=jpg&name=orig",
                  "width": 1200,
                  "height": 630
                },
                {
                  "url": "https://pbs.twimg.com/news_img/1327011425240313856/PkurOyu1?format=jpg&name=150x150",
                  "width": 150,
                  "height": 150
                }
              ],
              "status": 200,
              "title": "Suppression de Labs v2 recherche récente et masquer les réponses",
              "description": "Comme nous l'avons annoncé dans nos communications sur l'accès anticipé et le masquage des réponses, les endpoints Twitter Developer Labs v2 suivants seront supprimés le 16 novembre. Labs v2 recherche récente Labs v2 masquer les réponses Si appelés, ces endpoints répondront avec un statut HTTP 410 et ne retourneront aucune donnée. Sur la base de vos retours concernant Labs, nous avons intégré les fonctionnalités correspondantes dans l'X API v2. La documentation pertinente est accessible via les liens ci-dessous. Cliquez ici pour vous inscrire à l'accès v2 si ce n'est pas encore fait...",
              "unwound_url": "https://devcommunity.x.com/t/retiring-labs-v2-recent-search-and-hide-replies/145795"
            }
          ]
        },
        "id": "1327011423252144128",
        "public_metrics": {
          "retweet_count": 8,
          "reply_count": 2,
          "like_count": 33,
          "quote_count": 4
        },
        "author_id": "2244994945",
        "context_annotations": [
          {
            "domain": {
              "id": "46",
              "name": "Catégorie de marque",
              "description": "Catégories au sein des secteurs de marque qui précisent le périmètre des marques"
            },
            "entity": {
              "id": "781974596752842752",
              "name": "Services"
            }
          },
          {
            "domain": {
              "id": "47",
              "name": "Marque",
              "description": "Marques et entreprises"
            },
            "entity": {
              "id": "10045225402",
              "name": "Twitter"
            }
          },
          {
            "domain": {
              "id": "65",
              "name": "Secteur centres d'intérêt et loisirs",
              "description": "Groupements de niveau supérieur pour les centres d'intérêt et loisirs, comme Alimentation ou Voyage"
            },
            "entity": {
              "id": "848920371311001600",
              "name": "Technologie",
              "description": "Technologie et informatique"
            }
          },
          {
            "domain": {
              "id": "66",
              "name": "Catégorie centres d'intérêt et loisirs",
              "description": "Groupement d'entités de centres d'intérêt et loisirs, comme Alimentation originale ou Destinations"
            },
            "entity": {
              "id": "848921413196984320",
              "name": "Programmation informatique",
              "description": "Programmation informatique"
            }
          }
        ],
        "source": "Twitter Web App",
        "created_at": "2020-11-12T22:12:32.000Z"
      }
    ]
  }
}

Retweet d’un Tweet cité

{
    "data": [
    {
      "lang": "en",
      "conversation_id": "1225470895902412800",
      "text": "RT @AureliaSpecker: 📣 Si vous avez aimé le tutoriel sur les trajets londoniens que j'ai écrit en novembre dernier, jetez un œil à la version refactorisée qui utilise…",
      "referenced_tweets": [
        {
          "type": "retweeted",
          "id": "1224709550214873090"
        }
      ],
      "possibly_sensitive": false,
      "entities": {
        "annotations": [
          {
            "start": 42,
            "end": 47,
            "probability": 0.6999,
            "type": "Place",
            "normalized_text": "London"
          }
        ],
        "mentions": [
          {
            "start": 3,
            "end": 18,
            "username": "AureliaSpecker"
          }
        ]
      },
      "id": "1225470895902412800",
      "public_metrics": {
        "retweet_count": 12,
        "reply_count": 0,
        "like_count": 0,
        "quote_count": 0
      },
      "author_id": "2244994945",
      "context_annotations": [
        {
          "domain": {
            "id": "46",
            "name": "Catégorie de marque",
            "description": "Catégories au sein des verticales de marque qui affinent la portée des marques"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Services"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Marque",
            "description": "Marques et entreprises"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "65",
            "name": "Verticale centres d'intérêt et loisirs",
            "description": "Groupements de haut niveau de centres d'intérêt et loisirs, comme l'alimentation ou les voyages"
          },
          "entity": {
            "id": "848920371311001600",
            "name": "Technologie",
            "description": "Technologie et informatique"
          }
        },
        {
          "domain": {
            "id": "66",
            "name": "Catégorie centres d'intérêt et loisirs",
            "description": "Un groupement d'entités de centres d'intérêt et loisirs, comme la cuisine originale ou les destinations"
          },
          "entity": {
            "id": "848921413196984320",
            "name": "Programmation informatique",
            "description": "Programmation informatique"
          }
        }
      ],
      "source": "Twitter for iPhone",
      "created_at": "2020-02-06T17:26:44.000Z"
    }
  ],
  "includes": {
    "users": [
      {
        "created_at": "2013-12-14T04:35:55.000Z",
        "id": "2244994945",
        "protected": false,
        "username": "TwitterDev",
        "verified": true,
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/3ZX3TNiZCY",
                "expanded_url": "https://developer.x.com/en/community",
                "display_url": "developer.x.com/en/community"
              }
            ]
          },
          "description": {
            "hashtags": [
              {
                "start": 17,
                "end": 28,
                "tag": "TwitterDev"
              },
              {
                "start": 105,
                "end": 116,
                "tag": "TwitterAPI"
              }
            ]
          }
        },
        "description": "La voix de l'équipe #TwitterDev et votre source officielle pour les mises à jour, actualités et événements liés à la #TwitterAPI.",
        "pinned_tweet_id": "1293593516040269825",
        "public_metrics": {
          "followers_count": 513962,
          "following_count": 2039,
          "tweet_count": 3635,
          "listed_count": 1672
        },
        "location": "127.0.0.1",
        "name": "Twitter Dev",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "url": "https://t.co/3ZX3TNiZCY"
      },
      {
        "created_at": "2013-01-18T23:45:43.000Z",
        "id": "1102321381",
        "protected": false,
        "username": "AureliaSpecker",
        "verified": false,
        "entities": {
          "description": {
            "mentions": [
              {
                "start": 7,
                "end": 17,
                "username": "TwitterUK"
              },
              {
                "start": 86,
                "end": 95,
                "username": "_dormrod"
              }
            ]
          }
        },
        "description": "devrel @TwitterUK • Suisse à Londres • mère de plantes d'intérieur • coiffeuse personnelle de @_dormrod",
        "pinned_tweet_id": "1253069421322567681",
        "public_metrics": {
          "followers_count": 1036,
          "following_count": 1330,
          "tweet_count": 855,
          "listed_count": 26
        },
        "location": "London, UK",
        "name": "Aurelia Specker",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
        "url": ""
      }
    ],
    "tweets": [
      {
        "lang": "en",
        "conversation_id": "1224709550214873090",
        "text": "📣 Si vous avez aimé le tutoriel sur les trajets londoniens que j'ai écrit en novembre dernier, jetez un œil à la version refactorisée qui utilise le nouvel endpoint de recherche de Twitter 🚇 https://t.co/87XIPZmZBJ\n\n#DEVcommunity #Pythontutorial @TwitterDev @TwitterAPI https://t.co/dXrJYvn3hY",
        "referenced_tweets": [
          {
            "type": "quoted",
            "id": "1195000047089389573"
          }
        ],
        "possibly_sensitive": false,
        "entities": {
          "annotations": [
            {
              "start": 22,
              "end": 27,
              "probability": 0.7075,
              "type": "Place",
              "normalized_text": "London"
            },
            {
              "start": 120,
              "end": 126,
              "probability": 0.7355,
              "type": "Product",
              "normalized_text": "Twitter"
            }
          ],
          "mentions": [
            {
              "start": 206,
              "end": 217,
              "username": "TwitterDev"
            },
            {
              "start": 218,
              "end": 229,
              "username": "TwitterAPI"
            }
          ],
          "hashtags": [
            {
              "start": 176,
              "end": 189,
              "tag": "DEVcommunity"
            },
            {
              "start": 190,
              "end": 205,
              "tag": "Pythontutorial"
            }
          ],
          "urls": [
            {
              "start": 151,
              "end": 174,
              "url": "https://t.co/87XIPZmZBJ",
              "expanded_url": "https://bit.ly/2OrnrCC",
              "display_url": "bit.ly/2OrnrCC",
              "status": 200,
              "unwound_url": "https://dev.to/twitterdev/migrate-to-twitter-s-newly-released-labs-recent-search-endpoint-3npe"
            },
            {
              "start": 230,
              "end": 253,
              "url": "https://t.co/dXrJYvn3hY",
              "expanded_url": "https://x.com/AureliaSpecker/status/1195000047089389573",
              "display_url": "twitter.com/AureliaSpecker…"
            }
          ]
        },
        "id": "1224709550214873090",
        "public_metrics": {
          "retweet_count": 12,
          "reply_count": 0,
          "like_count": 43,
          "quote_count": 2
        },
        "author_id": "1102321381",
        "context_annotations": [
          {
            "domain": {
              "id": "46",
            "name": "Catégorie de marque",
            "description": "Catégories au sein des verticales de marque qui affinent la portée des marques"
            },
            "entity": {
              "id": "781974596752842752",
            "name": "Services"
            }
          },
          {
            "domain": {
              "id": "47",
            "name": "Marque",
            "description": "Marques et entreprises"
            },
            "entity": {
              "id": "10045225402",
              "name": "Twitter"
            }
          },
          {
            "domain": {
              "id": "65",
              "name": "Vertical Centres d'intérêt et Loisirs",
              "description": "Regroupements de niveau supérieur pour les centres d'intérêt et loisirs, comme Alimentation ou Voyage"
            },
            "entity": {
              "id": "848920371311001600",
              "name": "Technologie",
              "description": "Technologie et informatique"
            }
          },
          {
            "domain": {
              "id": "66",
              "name": "Catégorie Centres d'intérêt et Loisirs",
              "description": "Un regroupement d'entités de centres d'intérêt et de loisirs, comme Alimentation Originale ou Destinations"
            },
            "entity": {
              "id": "848921413196984320",
              "name": "Programmation informatique",
              "description": "Programmation informatique"
            }
          }
        ],
        "source": "Twitter Web App",
        "created_at": "2020-02-04T15:01:25.000Z"
      }
    ]
  }
}
I