この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:6
ページ更新者:T
更新日時:2026-06-11 07:12:00

タイトル: APIにアプリケーションを登録する
SEOタイトル: X (Twitter) API アプリケーション登録完全ガイド|v2・Bearer Token・OAuth 2.0 PKCE

この記事の要点
  • X (旧 Twitter) API の利用には developer.x.com で開発者アカウントを作り、ProjectApp を登録する必要がある
  • プランは Free / Basic / Pro / Enterprise。Free は読み書きにかなり制限あり、本格運用は Basic $200/月 (2025 年現在) 以上が必要
  • アプリ作成後に発行される API Key + API SecretBearer TokenAccess Token + Token Secret を用途で使い分ける
  • X API v2 が現行。v1.1 は段階的に廃止中。検索・投稿・ユーザー情報取得は v2 エンドポイントを使う
  • OAuth 2.0 + PKCE フローはユーザー代理でツイートする Web アプリで必須。コールバック URL とスコープ (tweet.write 等) の事前登録が必要

X (Twitter) API の概要

X API は、ツイート投稿・タイムライン取得・検索・ユーザー情報取得などをプログラム経由で行うための公式 API です。2023 年以降「Twitter」から「X」へリブランディングされ、無料枠の大幅縮小・有料化が進みました。

プランと料金 (2025 年現在)

プラン月額主な制限典型用途
Free$0投稿 500/月、月 100 リクエスト、自分のアカウントのみ動作確認・ボット (極小)
Basic$200投稿 3,000/月、検索 10,000/月、3 App まで小規模ボット・分析
Pro$5,000投稿 300,000/月、検索 1M/月、フルアーカイブ検索業務利用・分析サービス
Enterprise個別見積カスタム、Decahose / PowerTrack大規模分析・ニュースメディア

料金は変動します。最新は公式 developer.x.com/en/products/x-api で確認してください。

登録手順

STEP 1: 開発者アカウント作成

  1. developer.x.com に X アカウントでログイン
  2. 右上 Sign up → 利用目的の英文記述 (用途・分析手法・公開予定など)
  3. 規約同意 → メール認証
  4. 無料プランの場合はそのまま Free Project が作られる

STEP 2: Project と App 作成

  1. Developer Portal → Projects & Apps+ New Project
  2. Project 名、用途、ユースケース説明を入力
  3. Project に紐づく App を作成(App 名はグローバルでユニーク)
  4. 作成完了画面で API Key / API Key Secret / Bearer Token が一度だけ表示される → 必ず保存

STEP 3: 権限設定

App 設定の User authentication settings を開き:

  • App permissions: Read / Read and write / Read and write and Direct message
  • Type of App: Web App (OAuth 2.0) / Native App / Automated App
  • Callback URI: 例 https://myapp.example.com/auth/x/callback
  • Website URL: アプリの紹介ページ

取得できるキー類とその役割

名前役割主な用途
API Key / API Key SecretApp を識別する Consumer 認証情報OAuth 1.0a 署名作成
Bearer TokenApp 単独の認証トークンApp-only 認証で公開データ取得 (検索・公開タイムライン)
Access Token / Token Secret特定ユーザーを代理する認証情報OAuth 1.0a でツイート投稿・DM 送信
Client ID / Client SecretOAuth 2.0 用OAuth 2.0 PKCE フローで Access Token を取得

App-only 認証 (Bearer Token) のリクエスト例

# 検索 (recent search, v2)
curl -X GET "https://api.x.com/2/tweets/search/recent?query=Laravel" \
     -H "Authorization: Bearer YOUR_BEARER_TOKEN"

# ユーザー情報取得
curl -X GET "https://api.x.com/2/users/by/username/twitter" \
     -H "Authorization: Bearer YOUR_BEARER_TOKEN"

# 自分のツイート (要 user 認証なので Bearer 単独では不可)

OAuth 2.0 PKCE フロー (ユーザー代理)

「他人のユーザーがあなたのアプリを通してツイートする」場合は OAuth 2.0 PKCE が現行の推奨方式です。

1. ブラウザを開いて authorize URL へリダイレクト
   https://x.com/i/oauth2/authorize
     ?response_type=code
     &client_id=YOUR_CLIENT_ID
     &redirect_uri=https://myapp/auth/x/callback
     &scope=tweet.read tweet.write users.read offline.access
     &state=RANDOM_STATE
     &code_challenge=CODE_CHALLENGE
     &code_challenge_method=S256

2. ユーザーが許可 → コールバックに ?code=...&state=... が返る

3. サーバから code を access_token に交換
   POST https://api.x.com/2/oauth2/token
     grant_type=authorization_code
     code=...
     redirect_uri=...
     client_id=...
     code_verifier=...

4. レスポンスに access_token (期限あり) と refresh_token

5. API 呼び出し
   GET https://api.x.com/2/users/me
     Authorization: Bearer ACCESS_TOKEN

主要スコープ

スコープ意味
tweet.readツイート読取
tweet.writeツイート投稿
users.readユーザー情報取得
follows.readフォロー関係読取
follows.writeフォロー追加 / 解除
like.read / like.writeいいね
dm.read / dm.writeDM
offline.accessrefresh_token を得る (長期利用)

v1.1 から v2 への移行

v1.1v2備考
GET statuses/user_timelineGET /2/users/:id/tweetsレスポンス構造が変わった
POST statuses/updatePOST /2/tweetsJSON body 化
GET search/tweetsGET /2/tweets/search/recentクエリ DSL が強化
GET users/showGET /2/users/by/username/:name
OAuth 1.0aOAuth 2.0 PKCEv2 は両対応だが新規は OAuth 2 推奨

言語別 SDK

言語主な SDK備考
PythonTweepy / twitter-api-clientTweepy が定番
Node.js / TStwitter-api-v2 / twit (古い)twitter-api-v2 推奨
PHPabraham/twitteroauth / noweh/twitter-api-v2-phpv2 対応版を選ぶ
Rubytwitter gem / x-ruby
Javatwitter4j (v1.1)v2 はメンテ少、自前 HTTP 推奨

レート制限

API ごとに 15 分窓 / 24 時間窓のレート制限があります。レスポンスヘッダで残量が確認可能。

# レスポンスヘッダ
x-rate-limit-limit:     450    -- 窓内の上限
x-rate-limit-remaining: 449    -- 残り
x-rate-limit-reset:     1700000000  -- リセットされる Unix 時刻

# 429 Too Many Requests が返ったらリセット時刻まで待機
# 指数バックオフよりも reset 時刻待ちが正解

運用上の注意

  • キー類は環境変数 / Secrets Manager で管理。Git にコミットしない
  • X 社のポリシー違反 (スパム判定・大量フォロー解除) でApp が予告なく停止される。利用規約熟読
  • 料金プランの仕様は急に変わることがある (2023 年の激変は記憶に新しい)
  • App 公開時はPrivacy Policy / Terms of Service URL の登録が必須
  • 大量データ取得は Pro 以上の Filtered Stream / Full-archive Search 利用が前提

FAQ

Q: Free プランで投稿ボットを作れる?
A: 月 500 投稿までなので簡易なものなら可能。ただしリプライ取得や検索が極端に制限されるため、本格運用は Basic 以上が必要です。

Q: Bearer Token と OAuth トークンの違いは?
A: Bearer Token は App 自身を表すもので、公開データ取得には十分。ツイート投稿や DMは「誰のアカウントで実行するか」が必要なので OAuth 1.0a / 2.0 ユーザートークンが必須です。

Q: 申請が通らない
A: 利用目的の英文記述が薄すぎると却下されます。ユースケース・データ利用方針・公開先を具体的に記述してください (300 語以上推奨)。

Q: API キーを誤って公開してしまった
A: Developer Portal で即座にキー再生成。GitHub への push であれば Secret Scanning から X 社へ通知が行き自動失効されることもあります。