このガイドでは、チャンクアップロードワークフローを使用して動画や大容量メディアファイルをアップロードする方法を説明します。
動画または大容量メディアをアップロードする場合は、次の手順を実行する必要があります。
- INIT — アップロードを初期化して
media_id を取得する
- APPEND — ファイルの各チャンクをアップロードする
- FINALIZE — アップロードを完了する
- STATUS — (必要に応じて) 処理が完了するまで待機する
アップロードセッションを開始して media_id を取得します:
curl -X POST "https://api.x.com/2/media/upload" \
-H "Authorization: Bearer $USER_ACCESS_TOKEN" \
-H "Content-Type: multipart/form-data" \
-F "command=INIT" \
-F "media_type=video/mp4" \
-F "total_bytes=1048576" \
-F "media_category=amplify_video"
レスポンス:
{
"data": {
"id": "1880028106020515840",
"media_key": "13_1880028106020515840",
"expires_after_secs": 1295999
}
}
ステップ 2: チャンクをアップロード (APPEND)
ファイルをチャンクごとにアップロードします。たとえば、3 MB のファイルを 3 つのチャンクに分割します:
curl -X POST "https://api.x.com/2/media/upload" \
-H "Authorization: Bearer $USER_ACCESS_TOKEN" \
-H "Content-Type: multipart/form-data" \
-F "command=APPEND" \
-F "media_id=1880028106020515840" \
-F "segment_index=0" \
-F "media=@/path/to/chunk1.mp4"
チャンクアップロードの利点:
- 低速なネットワーク環境でもアップロードの信頼性が向上する
- アップロードを一時停止して再開できる
- 失敗したチャンクだけを個別に再試行できる
ステップ 3: アップロードの完了 (FINALIZE)
すべてのチャンクの送信が完了したら、アップロードを確定します:
curl -X POST "https://api.x.com/2/media/upload" \
-H "Authorization: Bearer $USER_ACCESS_TOKEN" \
-H "Content-Type: multipart/form-data" \
-F "command=FINALIZE" \
-F "media_id=1880028106020515840"
レスポンス:
{
"data": {
"id": "1880028106020515840",
"media_key": "13_1880028106020515840",
"size": 1048576,
"expires_after_secs": 86400,
"processing_info": {
"state": "pending",
"check_after_secs": 1
}
}
}
processing_info が返された場合は、処理が完了するのを待つためにステップ 4 に進んでください。返されない場合は、そのメディアはすぐに使用できます。
ステップ 4: ステータスを確認する (STATUS)
processing_info が返ってきた場合は、処理が完了するまでポーリングします:
curl "https://api.x.com/2/media/upload?command=STATUS&media_id=1880028106020515840" \
-H "Authorization: Bearer $USER_ACCESS_TOKEN"
処理状態: pending → in_progress → succeeded または failed
処理が完了したら、次にメディア付きポストを作成します:
curl -X POST "https://api.x.com/2/tweets" \
-H "Authorization: Bearer $USER_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"text": "Check out this video!",
"media": {
"media_ids": ["1880028106020515840"]
}
}'
| カテゴリ | 説明 |
|---|
tweet_image | ポスト用の画像 |
tweet_gif | ポスト用のアニメーション GIF |
tweet_video | ポスト用の動画 |
amplify_video | Amplify 動画 |
APIリファレンス
エンドポイントの完全なドキュメント