X API v2新機能完全解説ガイド – メディアアップロード・エンドポイント・開発者向け新機能
![]() |
20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード |
| |
週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ |
| |
10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks |
X(旧Twitter)API v2は2025年に入り、大幅なアップデートを実施しています。特に注目すべきは新しいメディアアップロード機能の追加と、開発者体験の向上を目的とした機能拡張です。この記事では、最新の新機能を実装例とともに詳しく解説します。
目次
X API v2 2025年の主要アップデート概要
2025年1月に新しい「X API v2 メディアアップロードエンドポイント」がリリースされ、開発者はプログラムを使ってXに画像、GIF、動画などのメディアを簡単にアップロードできるようになりました。開発者コミュニティからのフィードバックを受け、移行期限が2025年4月30日まで延長されています。
2025年の新機能一覧
| 機能 | リリース時期 | 概要 |
|---|---|---|
| メディアアップロード v2 | 2025年1月 | 画像・動画・GIFのアップロード機能 |
| メタデータ追加機能 | 2025年2月 | アップロードメディアへのメタデータ付与 |
| 字幕機能 | 2025年2月 | 動画への字幕追加・削除 |
| xurl 0.4.3 | 2025年3月 | X API専用のcurlライクツール |
新しいメディアアップロード機能
1. 基本的なメディアアップロード
POST https://api.x.com/2/media/アップロードエンドポイントを使用して画像や動画をアップロードし、POST https://api.x.com/2/postsを使用してXの投稿にメディアを添付できます。
import requests
def upload_media_v2(access_token, media_path):
url = "https://api.x.com/2/media/upload"
headers = {"Authorization": f"Bearer {access_token}"}
with open(media_path, 'rb') as media_file:
files = {"media": media_file}
response = requests.post(url, headers=headers, files=files)
return response.json()
2. メタデータ追加機能
新しい「Metadata Create」エンドポイントにより、アップロードしたメディアに追加のメタデータを付与できるようになりました。
def add_metadata(access_token, media_id, alt_text):
url = f"https://api.x.com/2/media/{media_id}/metadata"
headers = {"Authorization": f"Bearer {access_token}"}
data = {"alt_text": alt_text}
response = requests.post(url, headers=headers, json=data)
return response.json()
3. 動画字幕機能
def add_subtitles(access_token, media_id, subtitle_file):
url = f"https://api.x.com/2/media/{media_id}/subtitles"
headers = {"Authorization": f"Bearer {access_token}"}
with open(subtitle_file, 'rb') as srt_file:
files = {"subtitles": srt_file}
response = requests.post(url, headers=headers, files=files)
return response.json()
v1.1からv2への移行ポイント
主な変更点
v2 APIはv1.1よりも新しいAPIで、例えばダイレクトメッセージにおいてはv1.1では「DMボット」を開発するための機能がサポートされている一方で、v2では現時点でサポートされていません。逆に、v2ではグループでのダイレクトメッセージが新たにサポートされています。
認証方式の変更
以前は7つのAPIキーを集めなければなりませんでしたが、X API v2に完全移行ができるようになったため、現在はClient IDとClient Secretの2つだけ使用します。
# v2での認証設定
import requests
def get_bearer_token(client_id, client_secret):
url = "https://api.twitter.com/oauth2/token"
auth = (client_id, client_secret)
data = {"grant_type": "client_credentials"}
response = requests.post(url, auth=auth, data=data)
return response.json()["access_token"]
最新の料金プランと制限
2025年現在のプラン構成
2025年におけるXのAPI利用料金体系は、Free(月間500ポスト・100リード)、Basic(月額$200、月間最大10,000ポスト)、Pro(月額$5,000、月間最大100万ポスト)、Enterprise(月額$42,000以上、月間5,000万以上のポスト)の4つの層に分かれています。
Freeプランの制限
Freeプランだとレートリミットが1リクエスト/15分という何ともシビアな設定になっています。
import time
def rate_limited_request(func, *args, **kwargs):
"""フリープラン用のレート制限対応"""
try:
result = func(*args, **kwargs)
time.sleep(900) # 15分待機
return result
except Exception as e:
print(f"API Error: {e}")
return None
実践的な活用事例
1. 自動投稿ボット(メディア付き)
def post_with_media(access_token, text, media_path):
# 1. メディアをアップロード
media_response = upload_media_v2(access_token, media_path)
media_id = media_response["media_id"]
# 2. 投稿作成
url = "https://api.x.com/2/tweets"
headers = {"Authorization": f"Bearer {access_token}"}
data = {
"text": text,
"media": {"media_ids": [media_id]}
}
response = requests.post(url, headers=headers, json=data)
return response.json()
2. リアルタイム分析ツール
def analyze_tweets(access_token, query):
url = "https://api.x.com/2/tweets/search/recent"
headers = {"Authorization": f"Bearer {access_token}"}
params = {
"query": query,
"tweet.fields": "public_metrics,created_at,author_id"
}
response = requests.get(url, headers=headers, params=params)
return response.json()
開発者向け新ツール
xurl 0.4.3の活用
xurl 0.4.3は、X APIに特化したcurlライクなツールで、メディアアップロード機能、ストリーミングエンドポイント、twurlからの自動移行サポート、読みやすい出力機能が追加されています。
# xurl使用例
xurl -X POST "https://api.x.com/2/tweets" \
-H "Authorization: Bearer $TOKEN" \
-d '{"text": "Hello from xurl!"}'
エラーハンドリングとベストプラクティス
レート制限への対応
def robust_api_call(func, max_retries=3, backoff_factor=2):
for attempt in range(max_retries):
try:
return func()
except Exception as e:
if "rate limit" in str(e).lower():
wait_time = backoff_factor ** attempt * 60
print(f"Rate limit hit. Waiting {wait_time} seconds...")
time.sleep(wait_time)
else:
raise e
raise Exception("Max retries exceeded")
セキュリティ対策
import os
from dotenv import load_dotenv
# 環境変数から認証情報を読み込み
load_dotenv()
CLIENT_ID = os.getenv('X_CLIENT_ID')
CLIENT_SECRET = os.getenv('X_CLIENT_SECRET')
今後の展望と注意点
v1.1の廃止スケジュール
v1.1 media uploadは2025/4/30で廃止です。既存のv1.1を使用している開発者は早急な移行が必要です。
移行時のチェックポイント
- エンドポイントURLの変更確認
- 認証方式の更新(OAuth 2.0対応)
- レスポンス形式の変更対応
- レート制限の再設定
まとめ
X API v2の2025年アップデートは、開発者にとって大きな進歩をもたらしています。特に:
- メディアアップロード機能の大幅強化
- 開発者体験の向上
- 新しいツール(xurl)の提供
- より柔軟なデータ取得オプション
v1.1からの移行は必須となっているため、早期の対応を推奨します。新機能を活用することで、より効率的で高機能なX連携アプリケーションの開発が可能になります。
最新の公式ドキュメントを定期的に確認し、継続的なアップデートに対応していくことが重要です。
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座
![]() |
20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード |
| |
週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ |
| |
10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks |



