Passer au contenu principal
Chaque réponse sur X appartient à un fil de conversation. Le champ conversation_id vous permet d’identifier, de suivre et de reconstituer des arbres de conversation entiers.

Fonctionnement

Lorsqu’une personne publie une Publication et que d’autres y répondent, toutes les réponses partagent le même conversation_id — l’id de la Publication originale à l’origine de la conversation.
Original post (ID: 1234567890)  ← conversation_id for all replies
├── Reply 1 (ID: 1234567891)    → conversation_id: 1234567890
│   └── Reply to Reply 1        → conversation_id: 1234567890
└── Reply 2 (ID: 1234567892)    → conversation_id: 1234567890
    └── Reply to Reply 2        → conversation_id: 1234567890
Peu importe la profondeur du fil de discussion, toutes les publications partagent le même conversation_id.

Récupérer le conversation_id

Ajoutez conversation_id à votre paramètre tweet.fields :
curl "https://api.x.com/2/tweets/1234567891?tweet.fields=conversation_id,in_reply_to_user_id,referenced_tweets" \
  -H "Authorization: Bearer $TOKEN"
Réponse :
{
  "data": {
    "id": "1234567891",
    "text": "@user Great point!",
    "conversation_id": "1234567890",
    "in_reply_to_user_id": "2244994945",
    "referenced_tweets": [{
      "type": "replied_to",
      "id": "1234567890"
    }]
  }
}

Récupérer une conversation complète

Utilisez conversation_id comme opérateur de recherche pour récupérer toutes les publications d’un fil :
curl "https://api.x.com/2/tweets/search/recent?\
query=conversation_id:1234567890&\
tweet.fields=author_id,created_at,in_reply_to_user_id&\
expansions=author_id" \
  -H "Authorization: Bearer $TOKEN"
Cela renvoie toutes les réponses à la publication originale, triées dans l’ordre chronologique inverse.

Cas d’utilisation

Reconstruisez l’arborescence complète de la conversation :
import requests

conversation_id = "1234567890"
url = f"https://api.x.com/2/tweets/search/recent"
params = {
    "query": f"conversation_id:{conversation_id}",
    "tweet.fields": "author_id,in_reply_to_user_id,referenced_tweets,created_at",
    "max_results": 100
}

response = requests.get(url, headers=headers, params=params)
replies = response.json()["data"]

# Trier par created_at pour obtenir l’ordre chronologique
replies.sort(key=lambda x: x["created_at"])

ChampDescription
conversation_idID de la publication originale qui a initié le fil de discussion
in_reply_to_user_idID de l’utilisateur de la publication à laquelle on répond
referenced_tweetsTableau contenant type: "replied_to" et l’ID de la publication parente

Exemple : récupération d’un fil complet

{
  "data": [
    {
      "id": "1234567893",
      "text": "@user2 @user1 I agree with you both!",
      "conversation_id": "1234567890",
      "author_id": "3333333333",
      "created_at": "2024-01-15T12:05:00.000Z",
      "in_reply_to_user_id": "2222222222",
      "referenced_tweets": [{"type": "replied_to", "id": "1234567892"}]
    },
    {
      "id": "1234567892",
      "text": "@user1 That's interesting!",
      "conversation_id": "1234567890",
      "author_id": "2222222222",
      "created_at": "2024-01-15T12:03:00.000Z",
      "in_reply_to_user_id": "1111111111",
      "referenced_tweets": [{"type": "replied_to", "id": "1234567890"}]
    },
    {
      "id": "1234567891",
      "text": "@user1 Great point!",
      "conversation_id": "1234567890",
      "author_id": "4444444444",
      "created_at": "2024-01-15T12:02:00.000Z",
      "in_reply_to_user_id": "1111111111",
      "referenced_tweets": [{"type": "replied_to", "id": "1234567890"}]
    }
  ],
  "meta": {
    "result_count": 3
  }
}

Remarques

  • Le conversation_id de la publication originale est égal à son propre id
  • conversation_id est disponible sur tous les points de terminaison v2 qui renvoient des publications
  • À utiliser avec le flux filtré pour suivre les conversations en temps réel
  • À combiner avec la pagination pour les longs fils de discussion

Prochaines étapes

Rechercher des publications

Recherchez par conversation_id.

Flux filtré

Surveillez les conversations en temps réel.