メインコンテンツへスキップ
このガイドでは、アプリケーションに Direct Messages ルックアップエンドポイントを統合するために必要となる基本的な概念を説明します。

認証

DM エンドポイントにおいて非公開の会話にアクセスするには、ユーザー認証が必要です。
MethodDescription
OAuth 2.0 Authorization Code with PKCE推奨
OAuth 1.0a User Contextレガシーサポート
App-Only 認証はサポートされていません。すべてのダイレクトメッセージは非公開です。

必要なスコープ (OAuth 2.0)

スコープ必要となるケース
dm.readDM イベントの読み取り
tweet.readdm.read と併せて必須
users.readdm.read と併せて必須

会話タイプ

1対1

参加者は常に2人だけです。Conversation ID の形式: {smaller_user_id}-{larger_user_id}

グループ

2人以上の参加者がいます。参加メンバーは時間の経過とともに変わることがあります。

イベントタイプ

イベント説明主なフィールド
MessageCreateメッセージが送信されたtext, sender_id
ParticipantsJoinユーザーがグループに参加したparticipant_ids, sender_id
ParticipantsLeaveユーザーがグループから退出したparticipant_ids

イベントの例

{
  "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"
}

フィールドと Expansions

デフォルトフィールド

イベントタイプデフォルトフィールド
MessageCreateid, event_type, text
ParticipantsJoin/Leaveid, event_type, participant_ids

利用可能なフィールド

フィールド説明イベント
dm_conversation_id会話IDすべて
created_atイベントのタイムスタンプすべて
sender_id送信または招待を行ったユーザーMessageCreate, Join
attachmentsメディアの添付ファイルMessageCreate
referenced_tweets共有された投稿MessageCreate

利用可能な expansions

Expansion返されるオブジェクト
sender_id送信者のユーザーオブジェクト
participant_ids参加者のユーザーオブジェクト
attachments.media_keysメディアオブジェクト
referenced_tweets.idポストオブジェクト

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"

DM イベントは逆時系列 (新しいものが先) で返されます。
cURL
# 最初のリクエスト
curl "https://api.x.com/2/dm_events?max_results=100" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN"

# ページネーション用トークンを使った後続リクエスト
curl "https://api.x.com/2/dm_events?max_results=100&pagination_token=NEXT_TOKEN" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN"
30 日前までのイベントを取得できます。

v1.1 との ID 互換性

会話 ID とイベント ID は、v1.1 と v2 の両方のエンドポイントで共有されています。つまり、次のことができます。
  • v2 を使ってイベントを取得し、その後 v1.1 を使って特定のメッセージを削除する
  • x.com の URL に含まれる会話 ID を API リクエストで参照する

次のステップ

クイックスタート

初めてのDMルックアップリクエストを送信する

DMを送信

ダイレクトメッセージを送信する

APIリファレンス

エンドポイントの詳細なドキュメント

サンプルコード

実行可能なコード例