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

認証

すべての X API v2 エンドポイントでは認証が必要です。ユースケースに合った方法を選択してください。
方法最適な用途プライベートメトリクスへのアクセス可否
OAuth 2.0 App-Onlyサーバー間連携、公開データいいえ
OAuth 2.0 Authorization Code with PKCEユーザー向けアプリケーションはい (認可されたユーザーの投稿)
OAuth 1.0a User Contextレガシー統合はい (認可されたユーザーの投稿)

App-only 認証

公開投稿データにはベアラートークンを使用します。
cURL
curl "https://api.x.com/2/tweets/1234567890" \
  -H "Authorization: Bearer $BEARER_TOKEN"

User Context 認証

非公開メトリクスにアクセスするには、ポストの作成者として認証を行ってください。
次のフィールドを利用するには User Context 認証が必要です:
  • tweet.fields.non_public_metrics
  • tweet.fields.promoted_metrics
  • tweet.fields.organic_metrics
  • media.fields.non_public_metrics
  • media.fields.promoted_metrics
  • media.fields.organic_metrics

フィールドとexpansions

X API v2 はデフォルトでは最小限のデータのみを返します。fieldsexpansions を指定して、必要な情報だけをリクエストしてください。

既定のレスポンス

{
  "data": {
    "id": "1234567890",
    "text": "Hello world!",
    "edit_history_tweet_ids": ["1234567890"]
  }
}

利用可能なフィールド

FieldDescription
created_atポストの作成タイムスタンプ
author_idポスト作成者のユーザーID
public_metricsいいね、リポスト、返信、引用の数
entitiesハッシュタグ、メンション、URL、キャッシュタグ
attachmentsメディアキー、投票ID
conversation_idスレッド識別子
context_annotationsトピック/エンティティの分類情報
in_reply_to_user_id返信先ユーザーのID
lang検出された言語
source投稿元クライアント
possibly_sensitiveセンシティブコンテンツのフラグ
reply_settings誰が返信できるかの設定
FieldDescription
username@ユーザー名
name表示名
profile_image_urlプロフィール画像のURL
verified認証ステータス
description自己紹介
public_metricsフォロワー数/フォロー数
created_atアカウント作成日
FieldDescription
urlメディアURL
preview_image_urlサムネイルURL
typephoto、video、animated_gif
duration_ms動画の再生時間
height, width縦横サイズ
alt_textアクセシビリティ向けテキスト

フィールドを指定した例

cURL
curl "https://api.x.com/2/tweets/1234567890?\
tweet.fields=created_at,public_metrics,entities&\
expansions=author_id,attachments.media_keys&\
user.fields=username,verified&\
media.fields=url,type" \
  -H "Authorization: Bearer $BEARER_TOKEN"

ポストの編集

投稿は作成してから30分以内で最大5回まで編集できます。

仕組み

  • 各編集で新しいポストIDが発行されます
  • edit_history_tweet_ids にはすべてのバージョン (古い順) が含まれます
  • このエンドポイントは常に最新バージョンを返します

レスポンスの例

{
  "data": {
    "id": "1234567893",
    "text": "Hello world! (edited twice)",
    "edit_history_tweet_ids": [
      "1234567890",
      "1234567891",
      "1234567893"
    ]
  }
}
30 分間の編集ウィンドウを過ぎてから取得された投稿は、その最終版を表します。リアルタイムのユースケースでは、公開された直後の投稿は、まだ編集中である可能性がある点に注意してください。

エラー処理

一般的なエラー

Statusエラー対処方法
400無効なリクエストパラメータの形式を確認する
401未認証認証情報を確認する
403アクセス禁止App の権限を確認する
404見つかりませんポストが削除されているか、存在していません
429リクエスト過多待機してから再試行する (レート制限を参照)

削除されたポストまたは保護されたポスト

ポストが削除されているか、自分がフォローしていない保護されたアカウントのポストである場合は:
  • 単一ポストルックアップは 404 を返します
  • 複数ポストルックアップでは、そのポストは結果から除外され、errors 配列が返されます
{
  "data": [
    { "id": "1234567890", "text": "Available post" }
  ],
  "errors": [
    {
      "resource_id": "1234567891",
      "resource_type": "tweet",
      "title": "Not Found Error",
      "detail": "Could not find tweet with id: [1234567891]."
    }
  ]
}

ベストプラクティス

リクエストのバッチ処理

複数のポストを一度に最大100件まで取得できるエンドポイントを使用し、API呼び出し回数を削減します。

必要なフィールドのみをリクエスト

必要なフィールドだけを指定して、レスポンスのサイズと処理時間を最小限に抑えます。

レスポンスのキャッシュ

同じコンテンツに対する繰り返しリクエストを減らすために、ポストデータをローカルにキャッシュします。

編集への対応

リアルタイムなアプリケーションの場合は、30分の編集ウィンドウ後に投稿を再取得することを検討してください。

次のステップ

APIリファレンス

エンドポイントの完全なドキュメント

データディクショナリ

利用可能なすべてのオブジェクトとフィールド

サンプルコード

動作するコード例

エラー処理

エラーを適切に処理