開発者向け Threads API ガイド(2026年版)

開発者向け Threads API ガイド(2026年版)

Threads API が公開している内容、その背後にある Meta のアプリ・トークンモデル、2段階のコンテナ方式の投稿フロー、そして24時間あたり250投稿の上限について解説します。

Threads への投稿には API 呼び出しが1回ではなく2回必要です。まずメディアコンテナを作成し、それを投稿します。プロフィールごとに API 経由で投稿できるのは24時間あたり250件までで、テキスト投稿は500文字が上限です。また、アプリが使用する権限はいずれも、テスターリスト外のユーザーが接続できるようになる前に、Meta のアプリ審査を通過する必要があります。

Threads API で公開できるもの、できないもの

単一投稿は TEXT、IMAGE、VIDEO の3つのメディアタイプに対応しています。カルーセルは IMAGE と VIDEO の子要素を2〜20個サポートし、カルーセル自体は投稿数の上限に対して1投稿としてカウントされます。

Meta 自身のドキュメントに基づく仕様は以下のとおりです。

制約
テキストの長さ500文字
カルーセルの子要素数2〜20個
画像形式JPEG、PNG
画像ファイルサイズ最大8MB
画像の幅320〜1440ピクセル
画像のアスペクト比最大10:1
動画コンテナMOVまたはMP4
動画コーデックH264またはHEVC動画、AAC音声
動画フレームレート23〜60FPS
動画の長さ300秒(5分)
動画ファイルサイズ最大1GB
動画ビットレート動画100Mbps、音声128kbps

意外に見落とされがちな点として、絵文字は1文字としてではなく、UTF-8のバイト値で500文字にカウントされます。エディタ上で480文字に見えるキャプションでも、拒否されることがあります。クライアント側でカウントする場合は、絵文字をバイト数で数える必要があります。Threads の文字数制限に関する記事無料の Threads 文字数カウンターは、いずれもこの点に対応しています。

注記: 本記事の数値は、developers.facebook.com/docs/threads/posts および /docs/threads/overview を2026年9月時点で確認したものです。プラットフォームはこうした仕様を予告なく変更します。

認証モデルはどうなっているか

Threads は Meta のアプリ基盤上で動作しますが、独自の認証情報を使用します。Threads ユースケースを持つ Meta アプリを作成すると、そのアプリはダッシュボードの他の場所に表示されるものとは別の、Threads専用のアプリIDとシークレットを発行します。誤った組み合わせを使ってしまうのは、最初の1時間でよくあるミスです。

スコープは細かく分かれています。

  • threads_basic(すべてのエンドポイントで必須)
  • threads_content_publish(投稿)
  • threads_manage_replies および threads_read_replies
  • threads_manage_insights
  • threads_delete
  • threads_location_tagging

アプリ審査は省略できません。 テスター以外の誰かがその権限を付与できるようになる前に、各権限はアプリ審査を通過し、そのアプリは本番環境に公開されている必要があります。それまでは、アプリのダッシュボードから明示的にテスターとして招待し、その相手が Threads の設定から招待を承諾した Threads プロフィールにしか投稿できません。Meta のドキュメントには審査にかかる期間の記載がないため、ここでは推測しません。

自前で構築する必要があるトークンのライフサイクル

ここがバックグラウンドジョブとして必要になる部分です。

  1. 認可ウィンドウがコードを返します。
  2. それを**短期アクセストークン(有効期限1時間)**と交換します。
  3. さらに grant_type=th_exchange_token を指定した**GET /access_token 経由の長期トークン**と交換します。有効期限は60日です。
  4. grant_type=th_refresh_token を指定した GET /refresh_access_token で更新します。トークンを更新できるのは、発行から24時間以上経過し、かつ期限が切れていない場合に限られます。更新後のトークンは、さらに60日間有効になります。

60日間更新されなかったトークンは期限切れとなり、ユーザーは再認可が必要になります。非公開プロフィールのアプリユーザーが付与した権限は、90日間有効です。

注記: 本記事の数値は、developers.facebook.com/docs/threads/get-started および /get-started/long-lived-tokens を2026年9月時点で確認したものです。プラットフォームはこうした仕様を予告なく変更します。

実際の投稿手順はどうなっているか

単一投稿の場合:

  1. media_type とテキストまたはメディアURLを指定して POST /{threads-user-id}/threads を呼び出します。コンテナIDが返されます。
  2. 待機します。サーバーがメディアの処理を完了できるよう、Meta は投稿前に平均30秒待つことを推奨しています。
  3. そのコンテナIDを指定して POST /{threads-user-id}/threads_publish を呼び出します。

カルーセルの場合は、途中に1つ手順が加わります。子要素ごとにコンテナを作成し、それらを参照するカルーセルコンテナを作成してから、投稿します。

# 1. create the container
curl -X POST "https://graph.threads.net/v1.0/$USER_ID/threads" \
  -d "media_type=IMAGE" \
  -d "image_url=https://example.com/photo.jpg" \
  -d "text=Shipping notes for this week." \
  -d "access_token=$TOKEN"
# -> {"id":"1789..."}

# 2. wait ~30s for processing, then publish
curl -X POST "https://graph.threads.net/v1.0/$USER_ID/threads_publish" \
  -d "creation_id=1789..." \
  -d "access_token=$TOKEN"

画像や動画は、バイト列としてアップロードするのではなく公開URLとして渡す点に注意してください。取得を行うのは Meta のサーバー側です。つまり、あなたのメディアは、公開されていて、認証不要でアクセスでき、かつ取得が行われる時点でまだ存在している必要があり、これは多くの人が想定していないホスティング要件です。

レート制限はどうなっているか

アクション上限
投稿の公開24時間の移動期間あたり250件
返信24時間あたり1,000件
削除24時間あたり100件
位置情報検索24時間あたり500件
API呼び出し全般インプレッション数 × 4800、24時間あたり(最低10インプレッション)

このインプレッション数に基づく計算式は、二度読む価値があります。一般的な呼び出し回数の予算は、そのプロフィールが実際にどれだけのリーチを得ているかに応じて変動し、下限が設定されています。新規プロフィールには最低限の予算が割り当てられます。

注記: 本記事の数値は、developers.facebook.com/docs/threads/overview を2026年9月時点で確認したものです。プラットフォームはこうした仕様を予告なく変更します。

実際に3週間分の工数がかかるものは何か

アプリ審査。 スクリーンキャストの用意、プライバシーポリシー、動作するデモ導線、そしてビジネス認証を準備し、却下されるたびに修正を重ねる作業です。所要期間は公開されていないため、タスクとしてではなく、スケジュール上のリスクとして計画してください。

トークン更新ジョブ。 長期トークンは60日で失効し、発行から24時間経過して初めて更新可能になります。これには、定期実行されるジョブ、暗号化されたトークンの保管、更新失敗時のアラート経路、そしてUI上の再接続フローが必要です。

非同期エラー。 コンテナ作成の呼び出しが200を返しても、それはメディアが有効であることを意味しません。不正な動画が表面化するのは投稿呼び出しの時点で、おおよそ30秒後に、別のリクエストとして現れます。投稿のデータモデルには「処理中」状態と、ユーザーがタブを閉じた後に届いた失敗を報告する仕組みが必要です。

公開メディアホスティング。 Meta はURLで取得を行うため、適切なキャッシュ挙動を備えた耐久性のある公開URLと、取得がレート制限やCDNのボット対策にブロックされた場合の対応策が必要です。

絵文字のバイトカウント。 修正自体は簡単ですが、本番環境で発見すると高くつきます。

まとめ

  • 投稿には2回の呼び出しが必要です。コンテナを作成し、約30秒待ち、投稿します。カルーセルの場合は3回です。
  • メディアは公開URLとして渡します。取得するのは Meta 側です。
  • 500文字まで。絵文字はUTF-8バイト数でカウントされます。
  • プロフィールごとにAPI経由で公開できるのは24時間あたり250投稿です。
  • 短期トークンは1時間、長期トークンは60日間有効で、発行から24時間経過すると更新可能になります。
  • テスター以外が接続する前に、権限ごとにアプリ審査が必要です。所要期間は公開されていません。

Threads を他のすべてと合わせて予約投稿する

Threads が全体の一部であり、製品全体ではない場合、上記の作業のほとんどを、ネットワークごとに異なる形で繰り返すことになります。X は OAuth 2.0 PKCE とチャンク単位のバイトアップロードを使用します。Bluesky はアプリ審査自体が不要です。LinkedIn は2つの別々のアプリが必要で、個人プロフィールには w_member_social、企業ページには r_organization_socialw_organization_socialrw_organization_admin を使用し、それぞれ個別に審査されます。

BulkPublish は、Threads を含む15のプラットフォームを1つのREST APIの背後で統一的に扱い、コンテナ方式の投稿フロー、60日間のトークン更新、非同期ステータスのポーリングをサーバー側で処理します。エンドポイントの一覧は開発者向けドキュメントREST APIリファレンスに掲載されており、開発者でない場合の方法についてはThreads の投稿を予約するで解説しています。

関連記事