Passer au contenu principal
L’X API renvoie des objets JSON structurés représentant des Publications, des utilisateurs, des médias, et plus encore. Cette référence répertorie tous les champs disponibles pour chaque type d’objet.
ObjetDescriptionParamètre fields
Post (Tweet)Publications, réponses, republications, citationstweet.fields
UserProfils de compte et métadonnéesuser.fields
SpaceConversations audio en directspace.fields
ListEnsembles de comptes sélectionnéslist.fields
MediaImages, vidéos, GIFsmedia.fields
PollQuestions de sondage et optionspoll.fields
PlaceDonnées de localisation et géographiquesplace.fields
Utilisez les paramètres fields pour demander des champs spécifiques, et les expansions pour inclure les objets associés.

Publication (Tweet)

Les Publications sont l’unité de contenu principale sur X. Chaque objet Publication inclut du texte, des métadonnées et des références à des objets associés comme les auteurs, les médias et les sondages. Champs par défaut : id, text, edit_history_tweet_ids Utilisez tweet.fields pour demander des champs supplémentaires et expansions pour inclure des objets associés.

Tous les champs de Publication

Valeur du champTypeDescriptionUtilisation
id (par défaut)stringIdentifiant unique du Tweet demandé.Utilisez-le pour récupérer par programmation un Tweet spécifique.
text (par défaut)stringLe texte UTF-8 proprement dit du Tweet. Consultez twitter-text pour plus de détails sur les caractères valides.Extraction de mots-clés, analyse et classification des sentiments.
edit_history_tweet_ids (default)objectIdentifiants uniques indiquant toutes les versions d’un Tweet. Pour les Tweets sans modification, il n’y aura qu’un seul ID. Pour les Tweets avec un historique de modifications, il y aura plusieurs ID.Utilisez ces informations pour retrouver l’historique des modifications d’un Tweet.
articleobjectContient les métadonnées de l’Article présent dans ce Tweet.Utilisez-le pour obtenir le texte et les entités d’un Article.
attachmentsobjectSpécifie le type des éventuelles pièces jointes présentes dans ce Tweet.Comprendre les objets renvoyés pour les expansions demandées.
author_idstringIdentifiant unique de l’utilisateur qui a publié ce Tweet.Hydratation de l’objet utilisateur, partage d’un jeu de données pour relecture par des pairs.
card_uristringL’URI de la Carte présente dans ce Tweet.
community_idstringIdentifiant unique de la Communauté à laquelle cette Publication appartient.
context_annotationsarrayContient les annotations de contexte associées au Tweet.Reconnaissance/extraction d’entités, analyse thématique.
conversation_idstringL’ID du Tweet d’origine de la conversation (qui inclut les réponses directes et les réponses aux réponses).Utilisez-le 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 pour comprendre quand un Tweet a été créé.
display_text_rangearrayTableau contenant des indices de début et de fin pour la portion de texte affichée.Utile pour savoir quelle portion de texte est affichée par défaut pour les publications longues.
edit_controlsobjectIndique pendant combien de temps le Tweet peut encore être modifié et le nombre de modifications restantes.Utilisez-le pour déterminer si un Tweet est éligible à la modification.
entitiesobjectEntités qui ont été extraites du texte du Tweet. Voir les entités dans les objets Twitter.Fournit des informations supplémentaires sur les hashtags, les URL, les mentions, etc.
geoobjectIndique l’emplacement ou le lieu d’un Tweet géolocalisé.Utilisez ce champ 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 contient l’id de l’auteur du Tweet original.Permet de déterminer si un Tweet est une réponse à un autre Tweet.
langstringLangue du Tweet, si elle est détectée par X.Classer les Tweets par langue utilisée.
non_public_metricsobjectMesures d’engagement non publiques pour le Tweet au moment de la requête. Nécessite une authentification en contexte utilisateur.Déterminer le nombre total d’impressions générées pour le Tweet.
note_tweetobjectContient le texte complet d’une Publication pour les Publications longues (> 280 caractères).Récupérer le texte complet d’une Publication.
organic_metricsobjectMesures d’engagement, suivies dans un contexte organique, pour le Tweet au moment de la requête. Nécessite une authentification en contexte utilisateur.Mesurer l’engagement organique pour le Tweet.
possibly_sensitivebooleanIndique si le contenu peut être considéré comme sensible.Analyser la diffusion de certains types de contenu.
promoted_metricsobjectMesures d’engagement, suivies dans un contexte promotionnel, pour le Tweet au moment de la requête. Nécessite une authentification en contexte utilisateur.Mesurer l’engagement pour le Tweet lorsqu’il a été promu.
public_metricsobjectMesures d’engagement publiques pour le Tweet au moment de la requête.Mesurer l’engagement généré par le Tweet.
referenced_tweetsarrayListe des Tweets auxquels ce Tweet fait référence, comme les Retweets, les Tweets cités ou les réponses.Comprendre les aspects conversationnels des Retweets, des Tweets cités et des réponses.
reply_settingsstringIndique qui peut répondre à un Tweet donné. Les options sont « everyone », « mentioned_users » et « followers ».Déterminer les paramètres de réponse à la conversation pour le Tweet.
withheldobjectContient les informations relatives aux restrictions appliquées au contenu soumis à des restrictions.
scopesobjectContient les détails de la portée (scope) pour le Tweet.Indique qui peut voir la Publication. Uniquement renvoyé pour les Publications promues.
media_metadatatableauContient les métadonnées des pièces jointes média associées au Tweet.Obtenir des métadonnées supplémentaires, comme le alt_text de la pièce jointe média d’un Tweet.
Récupérer un objet Tweet Exemple de requête Dans la requête suivante, nous demandons des champs pour le Tweet via l’endpoint Tweets lookup. Assurez-vous de remplacer $BEARER_TOKEN par votre propre Jeton Bearer que vous avez généré.
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": "We believe the best future version of our API will come from building it with YOU. Here’s to another great year with everyone who builds on the Twitter platform. We can’t wait to continue working with you in the new year. 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": "Events [Entity Service]",
            "description": "Événements du monde réel. "
          },
          "entity": {
            "id": "1186637514896920576",
            "name": " New Years Eve"
          }
        },
        {
          "domain": {
            "id": "29",
            "name": "Events [Entity Service]",
            "description": "Événements du monde réel. "
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Happy New Year: It’s finally 2020 everywhere!",
            "description": "Assistez aux feux d'artifice et autres festivités alors que le monde entier célèbre la nouvelle année.\nPhoto via @GettyImages "
          }
        },
        {
          "domain": {
            "id": "119",
            "name": "Holiday",
            "description": "Jours fériés tels que Noël ou Halloween"
          },
          "entity": {
            "id": "1186637514896920576",
            "name": " New Years Eve"
          }
        },
        {
          "domain": {
            "id": "119",
            "name": "Holiday",
            "description": "Jours fériés tels que Noël ou Halloween"
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Happy New Year: It’s finally 2020 everywhere!",
            "description": "Assistez aux feux d'artifice et autres festivités alors que le monde entier célèbre la nouvelle année.\nPhoto via @GettyImages "
          }
        },
        {
          "domain": {
            "id": "30",
            "name": "Entities [Entity Service]",
            "description": "Domaine de niveau supérieur d'Entity Service, chaque élément présent dans Entity Service doit figurer dans ce domaine"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Services"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Brand",
            "description": "Marques et entreprises"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "131",
            "name": "Unified Twitter Taxonomy",
            "description": "Taxonomie des centres d'intérêt des utilisateurs. "
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "131",
            "name": "Unified Twitter Taxonomy",
            "description": "Taxonomie des centres d'intérêt des utilisateurs. "
          },
          "entity": {
            "id": "847868745150119936",
            "name": "Family & relationships",
            "description": "Loisirs et centres d'intérêt"
          }
        },
        {
          "domain": {
            "id": "131",
            "name": "Unified Twitter Taxonomy",
            "description": "Taxonomie des centres d'intérêt des utilisateurs. "
          },
          "entity": {
            "id": "1196446161223028736",
            "name": "Social media"
          }
        },
        {
          "domain": {
            "id": "29",
            "name": "Events [Entity Service]",
            "description": "Événements du monde réel. "
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Happy New Year: It’s finally 2020 everywhere!",
            "description": "Assistez aux feux d'artifice et autres festivités alors que le monde entier célèbre la nouvelle année.\nPhoto via @GettyImages "
          }
        },
        {
          "domain": {
            "id": "119",
            "name": "Holiday",
            "description": "Jours fériés tels que Noël ou Halloween"
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Happy New Year: It’s finally 2020 everywhere!",
            "description": "Assistez aux feux d'artifice et autres festivités alors que le monde entier célèbre 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": "These launches would not be possible without the feedback you provided along the way, so THANK YOU to everyone who has contributed your time and ideas. Have more feedback? Let us know ⬇️ 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": "Updates on our feedback channels",
              "description": "We build our developer platform in the open, with your input and feedback. Over the past year, hearing directly from you and the users of your apps has helped us build developer products that cater to the use case you helped us identify. We want to make this the way we build products, and moving forward, we are consolidating our feedback channels. Meeting you where you are Effective today, we are going to retire our UserVoice feedback channel in favor of more frequent direct engagements with y...",
              "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 user contient les métadonnées du compte utilisateur Twitter décrivant l’utilisateur référencé. L’objet user est l’objet principal renvoyé par l’endpoint users lookup. Lorsque vous demandez des champs utilisateur supplémentaires sur cet endpoint, utilisez simplement le paramètre user.fields. L’objet user peut également apparaître comme objet enfant et être étendu dans l’objet Tweet. L’objet peut être obtenu via l’extension ?expansions=author_id ou ?expansions=in_reply_to_user_id pour récupérer l’objet condensé avec uniquement les champs par défaut. Utilisez cette extension avec le paramètre user.fields lorsque vous demandez des champs supplémentaires pour compléter l’objet.  
Valeur du champTypeDescriptionUtilisations possibles
id (par défaut)chaîne de caractèresL’identifiant unique de cet utilisateur.

"id": "2244994945"
Pour récupérer par programmation des informations sur un utilisateur Twitter spécifique.
name (par défaut)chaîne de caractèresLe nom de l’utilisateur, tel qu’il apparaît sur son profil. Pas nécessairement un nom de personne. En général limité à 50 caractères, mais cette limite peut évoluer.

"name": "Twitter Dev"
username (par défaut)chaîne de caractèresLe nom d’écran, handle ou alias Twitter que cet utilisateur utilise pour s’identifier. Les noms d’utilisateur sont uniques, mais peuvent être modifiés. En règle générale, ils comportent au maximum 15 caractères, mais certains comptes historiques peuvent avoir des noms plus longs.

"username": "TwitterDev"
affiliationobjetContient des détails sur l’affiliation d’un utilisateur.Peut être utilisé pour obtenir le badge d’affilié d’un utilisateur.
confirmed_emailchaîne de caractèresL’adresse e‑mail confirmée de l’utilisateur authentifié.
connection_statustableauFournit une liste des relations entre l’utilisateur authentifié et l’utilisateur consulté, telles que : suit, suivi par, demande d’abonnement envoyée, demande d’abonnement 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 l’état de connexion entre l’utilisateur authentifié et l’utilisateur recherché.
created_atdate (ISO 8601)La date et l’heure UTC de création du compte de l’utilisateur sur Twitter.

"created_at": "2013-12-14T04:35:55.000Z"
Peut être utilisé pour déterminer depuis combien de temps une personne utilise Twitter.
descriptionchaîne de caractèresTexte de la description de profil de cet utilisateur (également appelée « bio »), si l’utilisateur en a fourni une.

"description": "La voix de l'équipe X Dev et votre source officielle pour les mises à jour, les actualités et les événements liés à la X API."
entitiesobjetContient des détails sur les éléments de texte ayant une signification particulière dans la description du profil 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’utilisateur et les cashtags associés à la description. Consultez chaque entité correspondante pour plus de détails.

Tous les indices utilisateur start sont inclusifs, tandis que tous les indices utilisateur end sont exclusifs.
is_identity_verifiedbooléenIndique si l’utilisateur est vérifié par pièce d’identité.
locationchaîne de caractèresLe lieu indiqué dans le profil de l’utilisateur, si l’utilisateur en a fourni un. Comme il s’agit d’une valeur librement saisie, il se peut qu’il ne corresponde pas à un lieu valide, mais il peut être évalué de manière approximative lors de recherches avec des requêtes de localisation.

"location": "127.0.0.1"
most_recent_tweet_idchaîne de caractèresIdentifiant unique du Tweet le plus récent de cet utilisateur.Permet de déterminer le Tweet le plus récent de l’utilisateur.
parodybooléenIndique si ce compte utilisateur possède ou non le label « Parody ».
pinned_tweet_idchaîne de caractèresIdentifiant unique du Tweet épinglé de cet utilisateur.

"pinned_tweet_id": "1255542774432063488"
Identifie le Tweet épinglé en haut du profil de l’utilisateur. Peut également être utilisé pour déterminer la langue de l’utilisateur.
profile_banner_urlchaîne de caractèresURL de la bannière de profil de cet utilisateur, telle qu’elle apparaît sur son profil.

"profile_banner_url": "https://pbs.twimg.com/profile_banners/1716450569358098432/1721022977"
Permet de télécharger la bannière de profil de cet utilisateur.
profile_image_urlchaîne de caractèresL’URL de l’image de profil de cet utilisateur, telle qu’elle apparaît sur le profil de cet utilisateur.

"profile_image_url": "https://pbs.twimg.com/profile_images/1267175364003901441/tBZNFAgA_normal.jpg"
Permet de télécharger l’image de profil de cet utilisateur.
protectedbooléenIndique si cet utilisateur a choisi de protéger ses Tweets (c’est-à-dire si ses Tweets sont privés).

"protected": false
public_metricsobjetContient 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 estimer la portée ou l’influence d’un utilisateur sur X, ainsi que pour quantifier l’ampleur de ses centres d’intérêt et son niveau d’engagement sur X.
receives_your_dmbooléenIndique si cet utilisateur recevra le DM de l’utilisateur authentifié.
subscriptionobjetContient des informations indiquant si l’utilisateur est abonné ou non à l’utilisateur authentifié.
subscription_typechaîne de caractèresUne chaîne de caractères indiquant le type d’abonnement X Premium de l’utilisateur authentifié. Exemple : None, Basic, Premium, PremiumPlus. La valeur sera toujours None si l’utilisateur n’est pas l’utilisateur authentifié.
urlchaîne de caractèresL’URL indiquée dans le profil de l’utilisateur, le cas échéant.

"url": "https://t.co/3ZX3TNiZCY"
URL fournie par un utilisateur dans son profil. Il peut s’agir d’une page d’accueil, mais pas nécessairement.
verifiedbooléenIndique si cet utilisateur est un utilisateur vérifié sur Twitter.

"verified": true
Indique si cet utilisateur possède un compte X vérifié. Un compte vérifié permet d’indiquer qu’un compte d’intérêt public est authentique.
verified_followers_countchaîne de caractèresChaîne de caractères représentant le nombre d’abonnés vérifiés d’un utilisateur.
verified_typechaîne de caractèresChaîne de caractères représentant le type de vérification dont dispose un utilisateur. Exemple : « blue », « business », « government »
withheldobjetContient les détails de restriction pour le contenu restreint, le cas échéant.
Récupérer un objet utilisateur Exemple de requête Dans la requête suivante, nous demandons des champs pour l’utilisateur via l’endpoint users lookup. Assurez-vous de remplacer $BEARER_TOKEN par votre propre Jeton Bearer.
  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": "The voice of Twitter's #DevRel team, and your official source for updates, news, & events about Twitter's API. \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 &amp; répondre à la pandémie. \n\nNous lançons un point de terminaison de flux COVID-19 gratuit afin que les développeurs &amp; chercheurs qualifiés puissent étudier la conversation publique en temps réel. https://t.co/BPqMcQzhId"
            }
        ]
    }
}

Space

Les Spaces permettent l’expression et l’interaction via des conversations audio en direct. Le dictionnaire de données Space contient les métadonnées pertinentes à propos d’un Space ; tous les détails y sont mis à jour en temps réel. Les objets User peuvent être trouvés et étendus dans la ressource user. Ces objets peuvent être inclus via 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 application gère des données de Spaces, vous êtes responsable de renvoyer les informations les plus récentes et devez supprimer les données qui ne sont plus disponibles sur la plateforme. Les endpoints de recherche de Spaces peuvent vous aider à vous assurer que vous respectez les attentes et 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"
Savoir quand un Space a été créé et trier par heure.
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é afin de calculer sa durée.
host_idsarrayIdentifiants uniques des hôtes du Space.
"host_ids": ["2244994945", "6253282"]
Étendre les objets User, comprendre l’engagement.
langstringLangue du Space, si elle est 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 intéressant.
invited_user_idsarrayListe des identifiants des utilisateurs invités comme speakers.
"invited_user_ids": ["2244994945", "6253282"]
Étendre les objets User, comprendre l’engagement.
participant_countintegerNombre d’utilisateurs dans le Space, y compris les hôtes et les speakers.
"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
Comprendre 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 User, comprendre l’engagement.
started_atdate (ISO 8601)Heure de début réelle 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_idsarrayIdentifiants 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 métadonnées du Space.
"updated_at": "2021-07-11T14:44:44.000Z"
Garder les informations à jour.
**Récupération d’un objet Space ** Exemple de requête Dans la requête suivante, nous demandons des champs pour le Space sur l’endpoint de recherche Spaces. Assurez-vous de remplacer $BEARER_TOKEN par votre propre Jeton Bearer que vous aurez 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": "Say hello to the Space data object!",
    "updated_at": "2021-07-11T14:44:44.000Z"
  },
  "includes": {
    "users": [
      {
        "id": "2244994945",
        "name": "Twitter Dev",
        "username": "TwitterDev"
      },
      {
        "id": "6253282",
        "name": "Twitter API",
        "username": "TwitterAPI"
      }
    ]
  }
}

Liste

L’objet Liste contient les métadonnées des Listes Twitter décrivant la Liste référencée. L’objet Liste est l’objet principal renvoyé par l’endpoint de recherche de Liste. Lorsque vous demandez des champs supplémentaires pour les Listes via cet endpoint, utilisez simplement le paramètre de champs list.fields. L’objet Liste ne se trouve pas comme enfant d’autres objets de données. En revanche, les objets utilisateur peuvent être trouvés et développés dans la ressource user. Ces objets peuvent être inclus via expansion en ajoutant owner_id au paramètre de requête expansions. Utilisez cette expansion avec le paramètre de champs list.fields lorsque vous demandez des champs supplémentaires afin de compléter l’objet Liste principal, et user.fields pour compléter l’objet d’extension.
Valeur du champTypeDescriptionComment il peut être utilisé
id (par défaut)stringL’identifiant unique de cette Liste.
"id": "2244994945"
Utilisez-le pour récupérer par programmation des informations sur une Liste spécifique.
name (par défaut)stringLe nom de la Liste, tel que défini lors de la création de la Liste.
"name": "Twitter Lists"
created_atdate (ISO 8601)La date et l’heure UTC auxquelles la Liste a été créée.
"created_at": "2013-12-14T04:35:55.000Z"
Déterminez depuis combien de temps une Liste existe sur Twitter.
descriptionstringUne brève description pour informer les utilisateurs sur la Liste.
"description": "People that are active members of the Bay area cycling community on Twitter."
follower_countintegerIndique combien d’utilisateurs suivent cette Liste.
"follower_count": 198
member_countintegerIndique combien de membres font partie de cette Liste.
"member_count": 60
privatebooleanIndique si la Liste est privée.
"private": false
owner_idstringIdentifiant unique du propriétaire de cette Liste.
"owner_id": "1255542774432063488"
Peut être utilisé pour savoir si cet utilisateur possède d’autres Listes et pour développer les objets utilisateur.
Récupération d’un objet utilisateur Exemple de requête Dans la requête suivante, nous demandons des champs 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 média n’est pas un objet primaire sur un endpoint, mais il peut être trouvé et étendu dans l’objet Tweet. L’objet est disponible via le paramètre ?expansions=attachments.media_keys pour obtenir l’objet condensé avec uniquement les champs par défaut. Utilisez ce paramètre avec le paramètre de champs media.fields lorsque vous demandez des champs supplémentaires pour compléter l’objet.
Field valueTypeDescriptionHow it can be used
media_key (default)stringIdentifiant unique du contenu média étendu.
"media_key": "13_1263145212760805376"
Peut être utilisé pour récupérer le média de façon programmatique
type (default)stringType de contenu (animated_gif, photo, video).
"type": "video"
Classer le média comme photo, GIF ou vidéo
urlstringURL directe vers le fichier média sur Twitter.Retourne un objet Media avec un champ URL pour les photos
duration_msintegerDisponible lorsque type vaut 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 lu la vidéo jusqu’à chaque quart.
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 sur le média.
preview_image_urlstringURL de l’aperçu statique 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 promotionnel, 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 sur le média lorsque le Tweet a été promu.
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 afin d’améliorer l’accessibilité. Peut contenir jusqu’à 1000 caractères. Le texte alternatif ne peut pour l’instant être ajouté qu’aux images.
"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 dans le cas où un utilisateur est malvoyant.
variantsarrayChaque objet média peut avoir plusieurs variantes d’affichage ou de lecture, avec des résolutions ou des formats différents.
"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 média Exemple de requête Dans la requête suivante, nous demandons des champs pour l’objet média associé au Tweet sur l’endpoint Tweet lookup. Comme média est un objet enfant d’un Tweet, l’expansion attachment.media_keys est requise. Assurez-vous de remplacer $BEARER_TOKEN par votre propre Jeton Bearer que vous avez 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 retrouvé et développé dans l’objet Tweet. Cet objet est disponible pour être développé avec ?expansions=attachments.poll_ids afin d’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_minutesintegerSpécifie la durée totale de ce sondage.
{"duration_minutes": 1440}
end_datetimedate (ISO 8601)Spécifie 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 sondage Exemple de requête Dans la requête suivante, nous demandons des champs pour l’objet 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. Veillez à remplacer $BEARER_TOKEN par votre propre 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": ""Do dièse"",
            "votes": 795
          },
          {
            "position": 2,
            "label": "“C Hashtag”",
            "votes": 156
          }
        ],
        "end_datetime": "2019-11-28T20:26:41.000Z"
      }
    ]
  }
}

Lieu

Le lieu tagué dans un Tweet n’est pas un objet principal renvoyé directement par un endpoint, mais il peut être récupéré et étendu dans la ressource Tweet. L’objet est disponible pour une expansion avec ?expansions=geo.place_id afin d’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 champTypeDescriptionComment il peut être utilisé
full_name (par défaut)stringUn nom de lieu détaillé sous une forme plus longue.Classer un Tweet par nom de lieu spécifique
"full_name": "Manhattan, NY"
id (par défaut)stringL’identifiant unique du lieu étendu, s’il s’agit d’un point d’intérêt tagué dans le Tweet.Utilisez-le pour récupérer un lieu par programmation
"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 de 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 nom de lieu spécifique
"name": "Manhattan"
place_typestringPrécise le type particulier d’information représenté par ce lieu, comme un nom de ville ou un point d’intérêt.Classer un Tweet par type spécifique de lieu
"place_type": "city"
Récupération d’un objet place Exemple de requête Dans la requête suivante, nous demandons des champs pour l’objet place attaché au Tweet sur l’endpoint Tweets lookup. Comme place est un objet enfant d’un Tweet, l’expansion geo.place_id est requise. Veillez à 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émo en direct du nouveau programme Twitter Developer Labs, dirigé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": "United States",
        "full_name": "Manhattan, NY"
      }
    ]
  }
}

Événements de Direct Message

Les conversations de Direct Message (DM) sont constituées d’événements. L’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 Direct Messages 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 par défaut, ou champs, sont inclus : id, event_type et text. Pour recevoir des champs d’événement supplémentaires, utilisez le paramètre fields dm_event.fields pour en sélectionner d’autres. Les autres champs d’événement disponibles incluent les suivants : dm_conversation_id, created_at, sender_id, attachments, participant_ids et referenced_tweets. Plusieurs de ces champs fournissent les identifiants d’autres objets X liés à l’événement de Direct Message :
  • sender_id - L’identifiant du compte qui a envoyé le message ou qui a invité un participant à une conversation de groupe
  • participant_ids - Un tableau d’identifiants de comptes. Pour les événements ParticipantsJoin et ParticipantsLeave, ce tableau contient un seul identifiant : celui du compte qui a créé l’événement
  • attachments - Fournit les identifiants de médias pour le contenu qui a été téléversé sur Twitter par l’expéditeur
  • referenced_tweets - Si une URL de Tweet est trouvée dans le champ text, l’identifiant 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 étendre ces identifiants d’objets Twitter.
Valeur du champTypeDescriptionUtilisation possible
id (default)stringL’identifiant unique de l’événement.

”id”: “1050118621198921728”
Utilisez‑le pour récupérer par programme un événement de conversation spécifique (disponible avec les endpoints v1.1).
event_type (default)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 comprendre quand les messages ont été créés et, pour les conversations de groupe, quand les participants ont rejoint et quitté la conversation. 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 (default)stringLe texte UTF‑8 du message privé (Direct Message). 

“text”: “Hello, just you!”
Avec des chatbots, ceci peut être utilisé pour analyser le contenu des messages et déterminer des réponses automatisées. Peut servir à créer des fonctionnalités de recherche dans les conversations.
entitiesobjectEntités extraites du texte du DM.Fournit des informations supplémentaires sur les hashtags, URL, mentions, etc.
sender_idstringID de l’utilisateur qui crée l’événement. Pour étendre 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 User qui vous intéressent.

”sender_id”: “906948460078698496”
Permet de récupérer l’objet User de l’auteur de l’événement MessageCreate ou ParticipantsJoin.
participant_idsarray (of strings)IDs des participants qui rejoignent ou quittent une conversation de groupe. Également utilisé lors de la création de nouvelles conversations de groupe. Pour étendre 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 User qui vous intéressent.

”participant_ids”: [

     “906948460078698496”

]
Utilisé pour récupérer les objets User des participants qui rejoignent ou quittent des conversations de groupe.
dm_conversation_idstringL’identifiant unique de la conversation à laquelle l’événement appartient.

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

”created_at”: “2019-06-04T23:12:08.000Z”
Ce champ peut être utilisé pour savoir quand un Direct Message a été créé ou quand les participants à la conversation ont rejoint ou quitté celle‑ci.
referenced_tweetsarrayID de tout Tweet mentionné dans le texte du Direct Message. Pour étendre 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 Direct Messages font référence à un Tweet, ces IDs peuvent être utilisés pour rechercher les détails du Tweet.
attachmentsobjectPour les Direct Messages avec média joint, fournit la clé média du contenu téléversé (photo, vidéo ou GIF). Pour étendre 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 media qui vous intéressent. Actuellement, une seule pièce jointe est prise en charge. 

“attachments”:

    “media_keys”: [

        “3_1136048009270239232”

    ]

Permet de comprendre les objets media joints aux Direct Messages.
Récupération d’un objet d’événement de Direct Message Exemple de requête Dans cet exemple, nous allons construire une requête qui récupère les événements associés à une conversation individuelle (un‑à‑un). Cette requête renverra les champs fondamentaux des événements de Direct Message, ainsi que des champs supplémentaires pour les Tweets référencés et leurs auteurs. Créons une requête qui demande :
  • Des attributs fondamentaux de l’événement, comme le moment de sa création et la conversation dont il fait partie (dm_conversation).
  • L’identifiant de compte et la description de l’expéditeur du Direct Message.
  • Le texte de tout Tweet référencé, et le moment où il a été publié.
  • L’identifiant de compte et la description de tout auteur de Tweet référencé.
Pour renvoyer ces attributs, la requête inclurait les éléments suivants : ?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'
Veillez à remplacer $BEARER_TOKEN par votre propre Jeton Bearer que vous avez généré. Exemple de réponse
      {
	"data": [{
			"id": "1585047616894574596",
			"sender_id": "944480690",
			"text": "Hello, just you!",
			"created_at": "2022-10-25T23:16:15.000Z",
			"event_type": "MessageCreate",
			"dm_conversation_id": "944480690-906948460078698496"
		},
		{
			"id": "1581048670673260549",
			"sender_id": "944480690",
			"text": "Simple Tweet link: 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": "Adding a new 1-to-1 Direct Message.",
			"created_at": "2022-10-13T23:40:43.000Z",
			"event_type": "MessageCreate",
			"dm_conversation_id": "944480690-906948460078698496"
		}
	],
	"includes": {
		"users": [{
				"name": "API Demos",
				"description": "Hosting TwitterDev integrations... @TwitterDev #DevRel",
				"id": "944480690",
				"username": "FloodSocial"
			},
			{
				"name": "the SnowBot",
				"description": "Home of the @TwitterDev SnowBot... Serving snow reports, snow photos, and snow research links... Chatbot is currently being remodeled for Twitter APIv2.",
				"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 Publications dans les communautés peuvent être vues par toute personne sur X, mais seules les autres personnes au sein de la communauté elle-même peuvent interagir et participer à la discussion. L’objet Community contient les métadonnées pertinentes concernant une communauté.
Field valueTypeDescription
created_atdate (ISO 8601)Date et heure 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é, si elle est fourni.
accessstringLe niveau d’accès de la communauté.

Peut prendre l’une des valeurs suivantes :
- Public
- Closed
join_policystringLa politique d’adhésion à la communauté.

Peut prendre l’une des valeurs suivantes :
- Open
- RestrictedJoinRequestsDisabled
- RestrictedJoinRequestsRequireAdminApproval
- RestrictedJoinRequestsRequireModeratorApproval
- SuperFollowRequired
member_countintegerLe nombre de membres qui ont rejoint la communauté.
Récupération d’objets Community Exemple de requête Dans la requête suivante, nous demandons des champs spécifiques tout en recherchant une liste de communautés à partir d’un mot-clé fourni. 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": "Welcome to the Anime Community! Where anime fans gather to share their favorite shows and discuss everything anime-related.",
      "join_policy": "Open",
      "access": "Public",
      "member_count": 39915,
      "name": "Anime Community",
      "created_at": "2024-02-17T06:58:50.000Z"
    },
    {
      "id": "Q29tbXVuaXR5OjE1MDY3OTM5NTMxMDYwNDI4OTE=",
      "description": "Join and text about anime 🥰",
      "join_policy": "Open",
      "access": "Public",
      "member_count": 26019,
      "name": "Anime World 🌸",
      "created_at": "2022-03-24T00:44:07.000Z"
    },
    {
      "id": "Q29tbXVuaXR5OjE0OTY3NzYyMTU5Mzk1MzQ4NDk=",
      "description": "For all anime lovers and creators!",
      "join_policy": "Open",
      "access": "Public",
      "member_count": 5612,
      "name": "Anime",
      "created_at": "2022-02-24T09:17:13.000Z"
    }
  ],
  "meta": {
    "next_token": "7140dibdnow9c7btw481s8m561gat797rboud5r80xvzm"
  }
}

Comment utiliser les champs et les expansions

Par défaut, les objets de données de 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 pour recevoir des objets et des champs supplémentaires dans votre réponse. Dans ce guide, nous allons demander plusieurs champs présents dans la capture d’écran du Tweet suivante.   Cette image comprend 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 comporte également une vidéo. Comme vous pouvez le voir sur la capture d’écran, plusieurs éléments d’information visibles sont liés au Tweet, notamment l’auteur du Tweet, les métriques du Tweet, 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 dans la capture d’écran, mais qui restent néanmoins disponibles sur demande via l’API.  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 alors que l’objet principal renvoyé par l’endpoint que vous utilisez, et non les objets de données associés pouvant être liés à l’objet principal. Cette simplicité, associée aux paramètres de requête fields et expansions, vous permet de demander uniquement les champs dont vous avez besoin, en fonction de votre cas d’usage.   

Demande de champs et d’objets supplémentaires.

Tout d’abord, nous allons récupérer un objet Tweet en utilisant un ID de Tweet et le point de terminaison 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 manquez pas les Tweets concernant 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 champs supplémentaires que vous souhaitez demander en vous appuyant sur notre modèle d’objet ou en consultant la liste des champs figurant dans les pages de Référence de l’API des points de terminaison. 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 utilisant les champs ci-dessus comme valeur, sous la forme d’une liste séparée par des virgules : ?tweet.fields=attachments,author_id,created_at,public_metrics
  3. Ajoutez le paramètre de requête à la requête GET /tweets que vous avez envoyé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 concernant 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 des champs liés à la vidéo incluse dans le Tweet. Pour ce faire, nous utiliserons le paramètre expansions avec la valeur attachments.media_keys, que nous 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 manquez pas les Tweets concernant 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. Enfin, nous allons récupérer le nombre de vues et la durée de la vidéo. Ces champs ne sont pas retournés par défaut, il faut 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' La réponse, qui contient désormais l’ensemble des données visibles dans la capture d’écran du Tweet :
  {
    "data": [
        {
            "id": "1260294888811347969",
            "text": "Ne manquez pas les Tweets à propos de votre Tweet. \n\nMaintenant sur iOS, vous pouvez voir 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 assemblés, 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 payloads 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": "Understanding the new Tweet payload in the X API v2",
            "description": "X recently announced the new X API v2, rebuilt from the ground up to deliver new features...",
            "unwound_url": "https://dev.to/twitterdev/understanding-the-new-tweet-payload-in-the-twitter-api-v2-1fg5"
          }
        ]
      },
      "text": "Here’s an article that highlights the updates in the new Tweet payload 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": "The voice of the #TwitterDev team and your official source for updates, news, and events, related to the #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 des améliorations de 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"
      }
    ]
  }
}

Tweet en réponse

{
  "data": [
    {
      "lang": "en",
      "conversation_id": "1296887091901718529",
      "text": "Découvrez comment @PennMedCDH utilise les données Twitter pour comprendre la crise sanitaire du 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 Twitter COVID-19 qui comprend des graphiques détaillant l'opinion, les symptômes signalés, des données par État et des données frontalières sur l'épidémie de COVID-19. De plus, leur initiative Penn Med With You utilise des informations régionales agrégées provenant de Twitter pour alimenter leur site web et leur service de messagerie texte. Le 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 verticales de marque qui affinent le périmètre 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": "Ongoing News Story",
            "description": "Actualités en cours comme « Brexit »"
          },
          "entity": {
            "id": "1220701888179359745",
            "name": "COVID-19"
          }
        }
      ],
      "source": "Twitter 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, 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"
      },
      {
        "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'avancement des technologies de santé numérique dans les soins de santé.",
        "public_metrics": {
          "followers_count": 1348,
          "following_count": 455,
          "tweet_count": 1288,
          "listed_count": 92
        },
        "location": "Philadelphia, 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": "Le Dr @RainaMerchant et son équipe du Penn Medicine CDH contribuent à construire l'avenir des soins de santé.\n\nL'équipe utilise les informations issues des données sociales de nombreuses manières différentes — allant de la découverte de facteurs de risque à l'éclairage de l'opinion publique. 🔎",
        "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": "Twitter 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 du point de terminaison de masquage des réponses dans la nouvelle API Twitter. Ce point de terminaison vous permet de créer des outils qui aident les utilisateurs à masquer ou afficher les réponses à leurs Tweets. Les utilisateurs gèrent leurs réponses pour de nombreuses raisons, notamment pour accorder moins d'attention aux commentaires abusifs, distrayants ou trompeurs, ou pour rendre les conversations plus engageantes. Grâce à ce point de terminaison, vous pouvez créer des outils pour aider les utilisateurs sur X à 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": "Le point de terminaison de masquage des réponses est lancé aujourd'hui !\n\nLes développeurs peuvent masquer les réponses aux Tweets - un moyen crucial pour les développeurs d'aider à améliorer la santé de la conversation publique en utilisant la #TwitterAPI.\n\nhttps://t.co/khXhTurm9x",
      "created_at": "2020-08-19T16:26:16.000Z",
      "context_annotations": [
        {
          "domain": {
            "id": "65",
            "name": "Catégorie verticale Centres d'intérêt et Loisirs",
            "description": "Regroupements de centres d'intérêt et de loisirs de niveau supérieur, 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 Cuisine originale ou Destinations"
          },
          "entity": {
            "id": "848921413196984320",
            "name": "Programmation informatique",
            "description": "Programmation informatique"
          }
        }
      ],
      "author_id": "2244994945",
      "lang": "en",
      "source": "Application Web Twitter"
    }
  ],
  "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 à la #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": "It’s finally here! 🥁 Say hello to the new #TwitterAPI.\n\nWe’re rebuilding the X API v2 from the ground up to better serve our developer community. And today’s launch is only the beginning.\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": "Introducing a new and improved X API",
            "description": "Introducing the new X API - rebuilt from the ground up to deliver new features faster so developers can help the world connect to the public conversation happening on 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": "Brand Category",
            "description": "Catégories au sein des verticales de marque qui précisent le périmètre des marques"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Services"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Brand",
            "description": "Marques et entreprises"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "65",
            "name": "Interests and Hobbies Vertical",
            "description": "Regroupements de centres d'intérêt et de loisirs de niveau supérieur, comme l'alimentation ou les voyages"
          },
          "entity": {
            "id": "848920371311001600",
            "name": "Technology",
            "description": "Technologie et informatique"
          }
        },
        {
          "domain": {
            "id": "66",
            "name": "Interests and Hobbies Category",
            "description": "Un regroupement d'entités de centres d'intérêt et de loisirs, comme les nouveautés alimentaires ou les destinations"
          },
          "entity": {
            "id": "848921413196984320",
            "name": "Computer programming",
            "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 de mises à jour, d'actualités et d'é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: I built an Alexa Skill for Twitter using APL that allows you to view Tweets and Trends on the echo show!\n\nCheck it out her…",
      "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 des marques. Exemples : Ford Explorer, Apple iPhone."
          },
          "entity": {
            "id": "968221983803494400",
            "name": "Amazon - Alexa",
            "description": "Alexa"
          }
        },
        {
          "domain": {
            "id": "46",
            "name": "Catégorie de marque",
            "description": "Catégories au sein des verticales de marque qui affinent le périmètre des marques"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Services"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Brand",
            "description": "Marques et entreprises"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        }
      ],
      "source": "Twitter Web App",
      "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 de mises à jour, d'actualités et d'é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. Auparavant : Amazon Alexa. Les opinions exprimées 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": "I built an Alexa Skill for Twitter using APL that allows you to view Tweets and Trends on the echo show!\n\nCheck it out here 👇\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 des marques. Exemples : Ford Explorer, Apple iPhone."
            },
            "entity": {
              "id": "968221983803494400",
              "name": "Amazon - Alexa",
              "description": "Alexa"
            }
          },
          {
            "domain": {
              "id": "46",
              "name": "Catégorie de marque",
              "description": "Catégories au sein des verticales de marque qui affinent le périmètre des marques"
            },
            "entity": {
              "id": "781974596752842752",
              "name": "Services"
            }
          },
          {
            "domain": {
              "id": "47",
              "name": "Brand",
              "description": "Marques et entreprises"
            },
            "entity": {
              "id": "10045225402",
              "name": "Twitter"
            }
          }
        ],
        "source": "Twitter Web App",
        "lang": "en"
      }
    ]
  }
}`


### Quote Tweet

      `{
  "data": [
    {
      "lang": "en",
      "conversation_id": "1328399838128467969",
      "text": "As planned, the Labs v2 endpoints referenced below have now been retired. Please let us know in the forums if you have questions or need help with the 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": "Brand Category",
            "description": "Categories within Brand Verticals that narrow down the scope of Brands"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Services"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Brand",
            "description": "Brands and Companies"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "65",
            "name": "Interests and Hobbies Vertical",
            "description": "Top level interests and hobbies groupings, like Food or Travel"
          },
          "entity": {
            "id": "848920371311001600",
            "name": "Technology",
            "description": "Technology and computing"
          }
        },
        {
          "domain": {
            "id": "66",
            "name": "Interests and Hobbies Category",
            "description": "A grouping of interests and hobbies entities, like Novelty Food or Destinations"
          },
          "entity": {
            "id": "848921413196984320",
            "name": "Computer programming",
            "description": "Computer programming"
          }
        }
      ],
      "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": "The voice of the #TwitterDev team and your official source for updates, news, and events, related to the #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": "👋 Friendly reminder that Twitter Developer Labs v2 hide replies and recent search will be retired next Monday, November 16! We encourage you to migrate to the new hide replies and recent search endpoints now available in the v2 #TwitterAPI. Details: 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": "Retrait de Labs v2 recent search et hide replies",
              "description": "Comme nous l'avons annoncé dans nos communications sur l'accès anticipé et hide replies, les points de terminaison Twitter Developer Labs v2 suivants seront retirés le 16 novembre. Labs v2 recent search Labs v2 hide replies En cas d'appel, ces points de terminaison répondront avec un statut HTTP 410 et ne renverront aucune donnée. Sur la base de vos retours concernant Labs, nous avons intégré les fonctionnalités correspondantes dans 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": "Brand Category",
              "description": "Categories within Brand Verticals that narrow down the scope of Brands"
            },
            "entity": {
              "id": "781974596752842752",
              "name": "Services"
            }
          },
          {
            "domain": {
              "id": "47",
              "name": "Brand",
              "description": "Brands and Companies"
            },
            "entity": {
              "id": "10045225402",
              "name": "Twitter"
            }
          },
          {
            "domain": {
              "id": "65",
              "name": "Interests and Hobbies Vertical",
              "description": "Top level interests and hobbies groupings, like Food or Travel"
            },
            "entity": {
              "id": "848920371311001600",
              "name": "Technology",
              "description": "Technology and computing"
            }
          },
          {
            "domain": {
              "id": "66",
              "name": "Interests and Hobbies Category",
              "description": "A grouping of interests and hobbies entities, like Novelty Food or Destinations"
            },
            "entity": {
              "id": "848921413196984320",
              "name": "Computer programming",
              "description": "Computer programming"
            }
          }
        ],
        "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: 📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that uses…",
      "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": "Brand Category",
            "description": "Catégories au sein des verticales de marque qui affinent le périmètre des marques"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Services"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Brand",
            "description": "Marques et entreprises"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "65",
            "name": "Interests and Hobbies Vertical",
            "description": "Regroupements de centres d'intérêt et de loisirs de niveau supérieur, comme l'alimentation ou les voyages"
          },
          "entity": {
            "id": "848920371311001600",
            "name": "Technology",
            "description": "Technologie et informatique"
          }
        },
        {
          "domain": {
            "id": "66",
            "name": "Interests and Hobbies Category",
            "description": "Un regroupement d'entités de centres d'intérêt et de loisirs, comme les nouveautés alimentaires ou les destinations"
          },
          "entity": {
            "id": "848921413196984320",
            "name": "Computer programming",
            "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 de mises à jour, d'actualités et d'é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"
      },
      {
        "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 • Suissesse à 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": "📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that uses Twitter's new search endpoint 🚇 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": "Brand Category",
              "description": "Catégories au sein des verticales de marques qui affinent le périmètre des marques"
            },
            "entity": {
              "id": "781974596752842752",
              "name": "Services"
            }
          },
          {
            "domain": {
              "id": "47",
              "name": "Brand",
              "description": "Marques et entreprises"
            },
            "entity": {
              "id": "10045225402",
              "name": "Twitter"
            }
          },
          {
            "domain": {
              "id": "65",
              "name": "Verticale centres d'intérêt et loisirs",
              "description": "Regroupements de centres d'intérêt et loisirs de niveau supérieur, 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": "Regroupement d'entités de centres d'intérêt et loisirs, comme les nouveautés alimentaires ou les destinations"
            },
            "entity": {
              "id": "848921413196984320",
              "name": "Programmation informatique",
              "description": "Programmation informatique"
            }
          }
        ],
        "source": "Twitter Web App",
        "created_at": "2020-02-04T15:01:25.000Z"
      }
    ]
  }
}