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

認証

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

必要なスコープ (OAuth 2.0)

Scope必要な操作
dm.writeメッセージの送信と削除
dm.readdm.write と併せて必須
tweet.readDM 関連スコープで必須
users.readDM 関連スコープで必須

エンドポイントの概要

MethodEndpoint説明
POST/2/dm_conversations/with/:participant_id/messages1対1のメッセージを送信
POST/2/dm_conversationsグループ会話を作成
POST/2/dm_conversations/:dm_conversation_id/messages会話にメッセージを追加
DELETE/2/dm_events/:event_idメッセージを削除

メッセージを送信する

1 対 1 メッセージ

特定のユーザーにメッセージを送信します。既存の会話がない場合は、新しい会話を作成します:
cURL
curl -X POST "https://api.x.com/2/dm_conversations/with/9876543210/messages" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"text": "Hello!"}'

グループ会話

新しいグループ会話を作成し、最初のメッセージを送信します:
cURL
curl -X POST "https://api.x.com/2/dm_conversations" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "conversation_type": "Group",
    "participant_ids": ["944480690", "906948460078698496"],
    "message": {"text": "Welcome to our group!"}
  }'
conversation_type フィールドは大文字小文字を区別するため、値を必ず "Group" に設定する必要があります。

既存の会話に追加する

参加しているいずれの会話にもメッセージを送信できます:
cURL
curl -X POST "https://api.x.com/2/dm_conversations/1582103724607971328/messages" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"text": "Another message"}'

メディアの添付

各メッセージにつきメディアは 1 つだけ添付できます (写真、動画、または GIF) 。
1

メディアをアップロードする

Media Upload エンドポイント を使用してファイルをアップロードし、media_id を取得します。
2

メッセージに含める

{
  "text": "この画像を見てください!",
  "attachments": [{"media_id": "1583157113245011970"}]
}
  • メディアは認証済みユーザー自身がアップロードしたものである必要があります
  • メディアはアップロードから 24 時間利用可能です
  • 各メッセージで添付できるメディアは 1 つだけです

投稿を共有する

メッセージ本文にポストのURLを追加して、ポストを含めます。
{
  "text": "Have you seen this? https://x.com/XDevelopers/status/1580559079470145536"
}
レスポンスには、ポストのIDを格納した referenced_tweets フィールドが含まれます。

メッセージ要件

フィールド必須注記
textはい*添付ファイルがない場合は必須
attachmentsはい*text がない場合は必須
*textattachments の少なくとも一方は指定する必要があります。

v1.1 との ID 互換性

会話 ID とイベント ID は、v1.1 と v2 のエンドポイント間で共通です。これにより、次のようなハイブリッドなワークフローが可能になります。
  • v2 でメッセージを作成する
  • v1.1 でメッセージを削除する (v2 ではまだ利用できません)
  • x.com の URL に含まれる会話 ID を参照する

エラー処理

ステータスエラー解決策
400無効なリクエストリクエストボディの形式を確認してください
401認証されていませんアクセストークンを確認してください
403アクセスが拒否されましたスコープとユーザー権限を確認してください
429リクエストが多すぎますしばらく待ってから再試行してください

よくある問題

受信者が、知らないユーザーからのメッセージを受け取らないDM設定にしているか、あなたをブロックしている可能性があります。
メディアが同じ認証済みユーザーのアカウントからアップロードされており、かつアップロードから24時間以内のものであることを確認してください。
すべての参加者idが有効であり、ユーザーがグループDMへの招待を許可していることを確認してください。

次のステップ

クイックスタート

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

DMルックアップ

DM会話を取得する

メディアアップロード

添付メディアをアップロードする

APIリファレンス

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