X API v2新機能完全解説ガイド – メディアアップロード・エンドポイント・開発者向け新機能

フリーランスボード

20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード

ITプロパートナーズ

週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ

Midworks 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を使用している開発者は早急な移行が必要です。

移行時のチェックポイント

  1. エンドポイントURLの変更確認
  2. 認証方式の更新(OAuth 2.0対応)
  3. レスポンス形式の変更対応
  4. レート制限の再設定

まとめ

X API v2の2025年アップデートは、開発者にとって大きな進歩をもたらしています。特に:

  • メディアアップロード機能の大幅強化
  • 開発者体験の向上
  • 新しいツール(xurl)の提供
  • より柔軟なデータ取得オプション

v1.1からの移行は必須となっているため、早期の対応を推奨します。新機能を活用することで、より効率的で高機能なX連携アプリケーションの開発が可能になります。

最新の公式ドキュメントを定期的に確認し、継続的なアップデートに対応していくことが重要です。

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座

フリーランスボード

20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード

ITプロパートナーズ

週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ

Midworks 10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks