メインコンテンツへスキップ
X API は、即時の理解とデバッグに役立つ以下のレスポンスおよびエラーコードを提供します。追加の context は、下記のデバッグガイドとエラー索引を参照してください。 成功したレスポンスは、200 番台の HTTP コードと、要求されたオブジェクトの取得・作成・変更・削除に加え、サーバーがリクエストをどのように解釈したかの表明を含む JSON ベースのペイロードによって示されます。 エラーレスポンスは、200 番台以外の HTTP コードで返されます。エラーコードが異なれば、エラーの原因も異なります。X API は、すべてのリクエストに対して適切な HTTP ステータスコード を返すよう努めています。

X API v2 HTTP ステータスコード

CodeText説明トラブルシューティングのヒント
200OKリクエストは成功しました。
400Bad Requestリクエストが無効であるか、処理できません。付随するエラーメッセージが詳細を説明します。認証がない、または無効な query パラメータを含むリクエストは無効と見なされ、このレスポンスが返されます。JSON の query の形式を再確認してください。たとえば、ルールに厳密一致やその他のオペレーターに関連する二重引用符が含まれる場合、JSON 構造と区別するためにバックスラッシュでエスケープする必要がある場合があります。
401Unauthorizedリクエストの認証に問題がありました。これは、認証情報の欠落や誤りが原因である可能性があります。未定義の状況で返される場合もあります。正しい認証方法を使用していること、ならびに認証情報が正しいことを確認してください。
403Forbiddenリクエストは理解されましたが、拒否されたか、アクセスが許可されていません。付随するエラーメッセージが理由を説明します。使用しようとしている endpoint へのアクセス権がデベロッパーアカウントに付与されていることを確認してください。App を許可リストに追加してもらう必要がある場合(例: Engagement API や X Ads API)や、アクセスの申請が必要な場合もあります。
404Not Found要求された URI が無効であるか、ユーザーなど要求されたリソースが存在しません。使用している endpoint に対して有効なパラメータと正しい URI を使用していることを確認してください。
409Connection Exceptionルールのない Filtered stream に接続しようとしたときに返されます。接続先の stream に少なくとも 1 つのルールを作成していることを確認してください。Filtered stream はアクティブなルールに一致する Posts のみを返します。ルールがない場合、stream は Posts を返しません。
429Too Many RequestsApp のレートリミットまたはPost上限を使い切ったためにリクエストを処理できない場合に返されます。詳しくはレートリミットを参照してください。使用している endpoint で許可されている一定時間あたりのリクエスト数を確認してください。時間枠のリセットを待ってください。リクエストの間隔を空けてレートリミットに達しないようにするか、次の利用可能なデータプランにアップグレードしてください。
500Internal Server Error何かが壊れています。通常は一時的なエラーで、高負荷の状況や endpoint に一時的な問題がある場合などに発生します。X API のステータスページまたはデベロッパーコミュニティフォーラムを確認して、他の人にも同様の問題が発生していないかを確認するか、時間をおいて再試行してください。
501UnimplementedX API はこの endpoint をサポートしておらず、リクエストを処理できません。
503Service UnavailableX のサーバーは稼働していますが、リクエストが過負荷です。後でもう一度お試しください。X API のステータスページまたはデベロッパーコミュニティフォーラムを確認して、他の人にも同様の問題が発生していないかを確認するか、時間をおいて再試行してください。
リクエスト中にエラーが発生した場合、問題の診断に役立つよう、エラーに関する詳細情報がレスポンス本文で返されます。問題の性質を示す URI である type フィールドに加えて、追加のフィールドが問題の詳細を提供します。これらの本文では常に type、タイトル、detail フィールドが返されます(下表参照)。以下の例にあるような追加フィールドは、エラーの種類に応じて異なります。
{
  "client_id": "101010101",
  "required_enrollment": "Standard Basic",
  "registration_url": "https://developer.twitter.com/en/account",
  "title": "クライアント禁止",
  "detail": "このリクエストは、要求されたendpointに登録されている承認済みのデベロッパーアカウントを使用して行う必要があります。詳細については、ドキュメントをご覧ください。",
  "reason": "client-not-enrolled",
  "type": "https://api.x.com/2/problems/client-forbidden"
}

部分的なエラー

場合によっては、200 ステータスコードで返されたレスポンス内に、上記で説明したエラーが含まれることがあります。こうした場合、その endpoint は返せる data を返しつつ、返せなかった内容についての詳細なエラーを併せて返すように設計されています。 たとえば、Posts lookup endpoint は、X の開発者用 Appから複数の ID をリクエストできます。これらの Posts の一部が取得可能だが、1 つが削除されているような場合、取得可能な Posts はレスポンスの data フィールドで返されます。加えて、どの Post が返せなかったかを示す errors フィールドがペイロードに含まれます。問題の診断を容易にするため、リクエスト全体のエラーと同じ形式が使用されます。

エラー情報

各問題タイプは、発生した問題の性質を示します。想定される問題の全リストは、API specificationにも掲載しています。 X API は、すべてのリクエストに対して適切なHTTP status codesを返すよう努めます。
タイトルタイプ説明
一般的な問題about:blankHTTP ステータスコードで提供される情報以外に追加情報のない一般的な問題です。
無効なリクエストの問題https://api.X.com/2/problems/invalid-requestこのリクエストが無効であることを示す問題です。リクエストに POST のボディがある場合、内容が有効な JSON であり、OpenAPI specに準拠していることを確認してください。
リソース未検出の問題https://api.X.com/2/problems/resource-not-found指定された Post、User などが存在しないことを示す問題です。
リソース認可なしの問題https://api.X.com/2/problems/not-authorized-for-resource特定の Post、User などを表示する権限がないことを示す問題です。
クライアント禁止の問題https://api.X.com/2/problems/client-forbiddenこのリクエストの実行がクライアントに禁止されていることを示す問題です。
不許可リソースの問題https://api.X.com/2/problems/disallowed-resource要求されたリソースがこの API の原則に反していることを示す問題です。
非対応認証の問題https://api.X.com/2/problems/unsupported-authentication使用された認証方式がサポートされていないことを示す問題です。
使用量上限の問題https://api.X.com/2/problems/usage-capped使用量の上限を超過したことを示す問題です。
接続例外の問題https://api.X.com/2/problems/streaming-connection接続に異常があることを示す問題です。
クライアント切断の問題https://api.X.com/2/problems/client-disconnectedクライアントが切断されました。
運用上の切断の問題https://api.X.com/2/problems/operational-disconnect運用上の理由により切断されました。
ルール上限の問題https://api.X.com/2/problems/rule-capルールの最大数を超えました。
ルール長の問題https://api.X.com/2/problems/rule-lengthアクセスレベルに応じて、query またはルールで許可される最大文字数を超えました。access levelsを参照してください。
無効なルールの問題https://api.X.com/2/problems/invalid-rules提出したルールが無効です。
重複したルールの問題https://api.X.com/2/problems/duplicate-rules提出したルールが重複しています。

トラブルシューティングのヒント

アプリケーションを構築する際、エラーや想定外の問題に時折遭遇するのは普通です。以下はコードをデバッグするためのヒントです。まず、問題を小さな要素に切り分けて、原因箇所を特定しましょう。たとえば、REST または streaming の endpoint を統合している場合、原因は次のいずれかにある可能性があります。
  • endpoint には適切な認証が必要です。
  • endpoint には有効なパラメータとヘッダーが必要です。フィルタリングルールは、正しい演算子と適切な構文で定義されている必要があります。
  • endpoint の URI が正しいこと、REST の場合は正しい HTTP メソッドを使用していることが必要です。
  • アクセスしようとしている data やリソースが、あなたにはアクセス不可の可能性があります(例: プライベートな data は認証済みユーザーのみ利用可能)。
  • 現在の data パッケージでは、アクセスできる endpoint やレートリミットが限定されます。詳細はdeveloper portalを確認してください。
  • コード内で、endpoint 連携にサードパーティ製ライブラリを使用している。
  • コードで endpoint のレスポンスを正しくパースできていない。
付随するエラーメッセージを確認しましょう。問題の手がかりが得られるはずです。各エラーコードに固有のトラブルシューティングについては、エラーおよびレスポンスコードのセクションの表を参照してください。REST endpoint の場合は、PostmanInsomnia などの REST クライアントを使って、上記 (1)〜(5) の手順を検証できます(“Getting started with Postman” ガイドも参照)。REST クライアントでのリクエストが 200 の成功ステータスコードを返す場合、問題は endpoint リクエスト自体ではなく、あなたのコードまたは使用ライブラリ側にあると判断できます。streaming endpoint の場合は、cURL(URL 構文でリクエストを送受信するコマンドラインツール)を使用し、問題が endpoint へのリクエスト(上記 (1)〜(5))にあるのか、コード側(上記 (6)〜(7))にあるのかを切り分けられます。
  • endpoint に必要な適切な認証方法を使用していることを確認してください。これは endpoint の API リファレンスページで確認できます。
  • 認証情報が正しいことを確認してください。developer ダッシュボードのApps セクション(「Details」内)で、App のキーおよびトークンを確認または再生成できます。
  • oauth_nonceoauth_signatureoauth_timestamp を用いて、OAuth 1.0a リクエストを正しく認可していることを確認してください。
  • 問題が解決しない場合は、OAuth ライブラリ、PostmanInsomnia のような REST クライアント、または xurl の利用を検討してください。
上記全般に関する詳細は、認証に関するガイドを参照してください。
429 エラーは、特定の endpoint のレートリミットに達した場合、または Post上限 に達した場合に返されることがあります。「Too many requests」という特定のエラーが返された場合は、その endpoint のレートリミットに達しています。つまり、指定された時間内に当該 endpoint で許可される最大リクエスト数を超えています。レートリミットは App 単位およびユーザー単位で設定されている点に注意してください。
  • X App レベルは、OAuth 2.0 App-Only を使用する際に許可されるリクエスト数を示し、レートリミットは App 全体に対してグローバルに適用されます。たとえば、あるメソッドがレートリミットウィンドウあたり 15 リクエストを許可する場合、X App を代表してウィンドウごとに 15 リクエストを行うことができます。この制限はユーザーレベルの制限とは完全に別個に扱われます。詳細はガイド OAuth 2.0 App-Only を参照してください。
  • ユーザーコンテキスト レベルは、OAuth 1.0a ユーザーコンテキストまたは OAuth 2.0 Authorization Code(PKCE 付き)を使用する際に、ユーザーの Access Token ごとに行えるリクエスト数を示します。たとえば、あるメソッドがレートリミットウィンドウあたり 15 リクエストを許可する場合、ウィンドウごとかつユーザーの Access Token ごとに 15 リクエストが許可されます。ユーザーの Access Tokens を取得する方法は、OAuth 1.0a および OAuth 2.0 のガイドを参照してください。
まず、使用している endpoint のレートリミットを確認してください。endpoint の API リファレンスページおよび新しい developer portal のダッシュボードで確認できます。レートリミットに関する追加情報として、HTTP ヘッダーを使用して App が特定のレートリミットにおいてどの位置にいるかを追跡する方法、レートリミットの 429 エラーコードから復旧する方法、そしてそもそもレートリミットを回避するためのヒントについては、以下のドキュメントを参照してください。「Usage cap exceeded: Monthly product cap」という特定のエラーを受け取った場合は、アクセスレベルの Post上限 に達したことを意味します。これらの Post上限 の詳細はドキュメントページをご覧ください。
Post が返されるはずだったのに、endpoint から配信されなかった場合は、以下の手順に従ってください。
  • 使用している operatorssyntax が正しいか、ルールを確認してください。正しい構文を使用していることを確認するため、ルールをより小さな句に分割してください。
  • Post を送信したアカウントが、その Post 作成時点で保護された状態だった場合、たとえ endpoint へのリクエスト時点でアカウントが公開であっても、その Post は返されません。通常、これは X Advanced Search を使用して確認できます。X Advanced Search で Post が表示されない場合、その Post は endpoint から返されないと考えるべきです。
以下の手順は、streaming endpoints のみに適用されます。
  • Post が送信されたとき、stream に接続していましたか?Post オブジェクトで配信される timestamp は UTC を示すことを忘れないでください。Post の送信時に切断が発生していた場合は、取り逃した data を補完するために利用可能な リカバリーおよび冗長化機能を確認してください。
  • Post が送信されたとき、そのルールは有効になっていましたか?Post オブジェクトで配信される timestamp は UTC を示すことを忘れないでください。
stream が当社の配信速度に追従できず、かつ App が stream からの data を十分な速度で消費できていない場合、次のいずれかのエラーが発生することがあります:
This stream has been disconnected because your client was unable to keep up with us.
This stream has been disconnected for operational reasons.
当社側では一定期間の遅延を許容し、各 stream に対して一時的なステージングバッファを用意しています。しかし、追いつけない場合は、現時点の位置で再接続できるよう切断を実施します。なお、フルバッファ切断時点でバッファ内にある data は失われる可能性があります。これらは大規模な data のスパイク時に発生することがあります。一般的には、処理プロセスとは分離した、data を迅速に取り込むためのバッファ処理を用いることを推奨します。v1.1 endpoints を利用する Enterprise のお客様は、このような切断を防ぐための App の最適化について、接続と、streaming data の消費に関する記事をこちらおよびこちらでご確認ください。切断により取り逃した Posts を取得するためのツールが複数あります。以下に例を示します。なお、次のツールは v1.1 endpoints を利用する Enterprise レベルのアクセスでのみ利用可能です。
  • Redundant Connections - 複数の接続を使い、複数サーバーから stream を取り込むことで、一方が切断されても data の欠落を防ぎます。
  • Replay - 別の stream を用いて直近 5 日間の data を復旧します。
  • Backfill - 5 分以内に再接続し、中断地点から再開します。
  • Historical PowerTrack - X の全アーカイブから data を復旧します。

サポートを受ける

X コミュニティフォーラムでは、X Developer Platform に関する技術的な質問を投稿できます。ディスカッションフォーラムとして、他の開発者の質問や、X API の利用に関する多様なトピックの技術情報を見つけられます。 質問への回答やスレッドでの議論への参加を通じて、ぜひコミュニティにご参加ください。X の社員もサポートのために常駐しています。

質問を投稿する前に

  • ご自身の問題に関する情報を、X の開発者向けドキュメントで検索する
  • 他の開発者による類似の質問がないか、コミュニティフォーラムで検索する
  • コミュニティフォーラムのガイドラインを確認する

質問を投稿する際は、次の情報を必ず含めてください

  • 問題の説明
  • 実行した API 呼び出し(可能であればヘッダーも含める)
  • 返ってきた X のレスポンス(エラーメッセージがあれば含める)
  • 本来想定していた結果
  • 実施したトラブルシューティング手順の一覧
  • 問題を再現するために必要な手順の一覧
  • 該当する場合、問題が発生した期間
  • 該当する場合、App ID、Post ID など
  • 関連するコードサンプルまたはスクリーンショット
1 つの Post につき、トピック/質問は 1 つのみとしてください。 機能要望やフィードバックがある場合は、X Developer Platform Feedback Form から送信してください。 App の停止などポリシー関連の問題については、Policy support にお問い合わせください。 ログインやアカウントサポートなど X に関連する問題については、X Help Desk をご利用ください。
I