Passer au contenu principal
Ce guide couvre les principaux concepts nécessaires pour intégrer les endpoints d’interrogation des Direct Messages dans votre application.

Authentification

Les endpoints de DM nécessitent une authentification utilisateur pour accéder aux conversations privées :
MéthodeDescription
OAuth 2.0 Authorization Code with PKCERecommandé
OAuth 1.0a User ContextPrise en charge pour compatibilité descendante
L’authentification App-Only n’est pas prise en charge. Tous les Messages privés sont privés.

Scopes requis (OAuth 2.0)

ScopeRequis pour
dm.readLecture des événements de messages privés (DM)
tweet.readRequis avec dm.read
users.readRequis avec dm.read

Types de conversation

Individuelle

Contient toujours exactement deux participants. Format de l’id de conversation : {smaller_user_id}-{larger_user_id}

Groupe

Deux participants ou plus. La composition des membres peut évoluer dans le temps.

Types d’événements

ÉvénementDescriptionChamps clés
MessageCreateUn message a été envoyétext, sender_id
ParticipantsJoinUn utilisateur a rejoint le groupeparticipant_ids, sender_id
ParticipantsLeaveUn utilisateur a quitté le groupeparticipant_ids

Exemples d’événements

{
  "id": "1582838499983564806",
  "event_type": "MessageCreate",
  "text": "Hi everyone.",
  "sender_id": "944480690",
  "dm_conversation_id": "1578398451921985538",
  "created_at": "2022-10-19T20:58:00.000Z"
}
{
  "id": "1582835469712138240",
  "event_type": "ParticipantsJoin",
  "participant_ids": ["944480690"],
  "sender_id": "17200003",
  "dm_conversation_id": "1578398451921985538",
  "created_at": "2022-10-19T20:45:58.000Z"
}
{
  "id": "1582838535115067392",
  "event_type": "ParticipantsLeave",
  "participant_ids": ["944480690"],
  "dm_conversation_id": "1578398451921985538",
  "created_at": "2022-10-19T20:58:09.000Z"
}

Champs et expansions

Champs par défaut

Type d’événementChamps par défaut
MessageCreateid, event_type, text
ParticipantsJoin/Leaveid, event_type, participant_ids

Champs disponibles

ChampDescriptionÉvénements
dm_conversation_idIdentifiant de la conversationTous
created_atHorodatage de l’événementTous
sender_idExpéditeur / initiateur de l’invitationMessageCreate, Join
attachmentsPièces jointes médiaMessageCreate
referenced_tweetsPublications partagéesMessageCreate

Expansions disponibles

ExpansionRenvoie
sender_idObjet utilisateur de l’expéditeur
participant_idsObjets utilisateur des participants
attachments.media_keysObjets média
referenced_tweets.idObjets de type Publication

Exemple avec expansions

cURL
curl "https://api.x.com/2/dm_events?\
dm_event.fields=created_at,sender_id,attachments&\
expansions=sender_id,attachments.media_keys&\
user.fields=username,profile_image_url&\
media.fields=url,type" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN"

Les événements de DM sont renvoyés dans l’ordre chronologique inverse (du plus récent au plus ancien) :
cURL
# Première requête
curl "https://api.x.com/2/dm_events?max_results=100" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN"

# Requête suivante avec un jeton de pagination
curl "https://api.x.com/2/dm_events?max_results=100&pagination_token=NEXT_TOKEN" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN"
Les événements datant d’au plus 30 jours sont disponibles.

Compatibilité des ID avec la v1.1

Les identifiants de conversation et d’événement sont partagés entre les endpoints v1.1 et v2. Cela signifie que vous pouvez :
  • Utiliser la v2 pour récupérer des événements, puis utiliser la v1.1 pour supprimer des messages spécifiques
  • Utiliser des identifiants de conversation provenant d’URL x.com dans des requêtes d’API

Étapes suivantes

Démarrage rapide

Effectuez votre première requête de recherche de messages directs

Envoyer des DM

Envoyez des messages directs

Référence de l’API

Documentation complète du point de terminaison

Exemples de code

Exemples de code prêts à l’emploi