X API v2 の HTTP ステータスコード
| Code | Text | Description | Troubleshooting tips |
|---|---|---|---|
| 200 | OK | リクエストは成功しました。 | |
| 400 | Bad Request | リクエストが無効であるか、処理できません。付随するエラーメッセージが詳細を説明します。認証がない、またはクエリパラメータが無効なリクエストは無効とみなされ、この応答が返されます。 | JSON クエリの形式を再確認してください。たとえば、ルールに厳密一致やその他の演算子に関連する二重引用符が含まれる場合、JSON 構造と区別するためにバックスラッシュでエスケープする必要がある場合があります。 |
| 401 | Unauthorized | リクエストの認証に問題があります。これは、認証情報が欠落しているか不正確であることが原因の可能性があります。未定義のその他の状況で返される場合もあります。 | 正しい認証方法を使用していること、また認証情報が正しいことを確認してください。 |
| 403 | Forbidden | リクエストは理解されていますが、拒否されたか、アクセスが許可されていません。付随するエラーメッセージが理由を説明します。 | 使用しようとしているエンドポイントへのアクセス権が開発者アカウントに付与されていることを確認してください。アプリの許可リスト登録(例: Engagement API や Ads API)やアクセスの申請が必要な場合もあります。 |
| 404 | Not Found | 要求された URI が無効であるか、ユーザーなどの要求されたリソースが存在しません。 | 有効なパラメータを使用し、利用中のエンドポイントに対して正しい URI を指定していることを確認してください。 |
| 409 | Connection Exception | ルールが設定されていないフィルタ済みストリームへの接続を試みた際に返されます。 | 接続先のストリームに少なくとも 1 つのルールを作成していることを確認してください。フィルタ済みストリームはアクティブなルールに一致する Post のみを返します。ルールがない場合、ストリームは Post を返しません。 |
| 429 | Too Many Requests | アプリのrate limitまたはPost capを使い切ったため、リクエストを処理できない場合に返されます。詳しくはRate Limitingを参照してください。 | 利用中のエンドポイントで許可されている時間枠あたりのリクエスト数を確認してください。時間枠のリセットを待ってください。リクエストを間隔を空けて送信してレート制限に達しないようにするか、次の利用可能なデータプランにアップグレードしてください。 |
| 500 | Internal Server Error | 何らかの不具合が発生しています。通常は一時的なエラーで、高負荷の状況やエンドポイントで一時的に問題が発生している場合などに起こります。 | 他の人にも同様の問題が発生していないか、X API のステータスページや開発者コミュニティフォーラムを確認するか、時間をおいて再試行してください。 |
| 501 | Unimplemented | X API はこのエンドポイントをサポートしておらず、リクエストを完了できません。 | |
| 503 | Service Unavailable | X のサーバーは稼働していますが、リクエスト過多で処理できません。後でもう一度お試しください。 | 他の人にも同様の問題が発生していないか、X API のステータスページや開発者コミュニティフォーラムを確認するか、時間をおいて再試行してください。 |
部分的なエラー
エラー情報
| タイトル | タイプ | 説明 |
|---|---|---|
| 一般的なProblem | about:blank | HTTPステータスコードで提供される情報以外の追加情報がない一般的なProblemです。 |
| 無効なリクエストのProblem | https://api.X.com/2/problems/invalid-request | このリクエストが無効であることを示すProblemです。リクエストにPOSTボディがある場合は、内容が有効なJSONであり、OpenAPI specに準拠していることを確認してください。 |
| リソース未検出のProblem | https://api.X.com/2/problems/resource-not-found | 指定されたPostやUserが存在しないことを示すProblemです。 |
| リソース認可なしのProblem | https://api.X.com/2/problems/not-authorized-for-resource | 特定のPostやUserを閲覧する権限がないことを示すProblemです。 |
| クライアント禁止のProblem | https://api.X.com/2/problems/client-forbidden | クライアントにこのリクエストの実行が禁止されていることを示すProblemです。 |
| 不許可リソースのProblem | https://api.X.com/2/problems/disallowed-resource | リクエストされたリソースが本APIの要件に違反していることを示すProblemです。 |
| 非対応の認証のProblem | https://api.X.com/2/problems/unsupported-authentication | 使用された認証方式がサポートされていないことを示すProblemです。 |
| 利用上限のProblem | https://api.X.com/2/problems/usage-capped | 利用上限を超過したことを示すProblemです。 |
| 接続例外のProblem | https://api.X.com/2/problems/streaming-connection | 接続に問題があることを示すProblemです。 |
| クライアント切断のProblem | https://api.X.com/2/problems/client-disconnected | クライアントが切断されました。 |
| 運用上の切断のProblem | https://api.X.com/2/problems/operational-disconnect | 運用上の理由により切断されました。 |
| ルール上限のProblem | https://api.X.com/2/problems/rule-cap | ルールの最大数を超過しました。 |
| ルール長のProblem | https://api.X.com/2/problems/rule-length | アクセスレベルに基づき、クエリまたはルールの最大文字数を超過しました。access levelsを参照してください。 |
| 無効なルールのProblem | https://api.X.com/2/problems/invalid-rules | 提出したルールが無効です。 |
| 重複ルールのProblem | https://api.X.com/2/problems/duplicate-rules | 提出したルールが重複しています。 |
トラブルシューティングのヒント
コードのデバッグ
コードのデバッグ
アプリケーションの開発中に、エラーや想定外の問題が発生するのは珍しくありません。以下はコードをデバッグする際のヒントです。まず、問題を小さく分解して原因箇所を特定しましょう。たとえば、REST またはストリーミングのエンドポイントを統合している場合、原因は次のいずれかにある可能性があります。
- エンドポイントには適切な認証が必要です。
- エンドポイントには有効なパラメータとヘッダーが必要です。フィルタリングルールは正しい演算子と適切な構文で構築されている必要があります。
- エンドポイントの URI が正しく、REST エンドポイントの場合は正しい HTTP メソッドを使用している必要があります。
- アクセスしようとしているデータやリソースに権限がない(例:プライベートなデータは認証済みユーザーのみが利用可能)。
- 現在のデータパッケージではアクセスできるエンドポイントやレート制限が限定されています。詳細は開発者ポータルをご確認ください。
- コードでエンドポイント統合にサードパーティ製ライブラリを使用している。
- コードがエンドポイントのレスポンスを正しくパースできていない。
認証に関する問題
認証に関する問題
- エンドポイントに必要な適切な認証方法を使用していることを確認してください。エンドポイントの API リファレンスページで確認できます。
- 認証情報が正しいことを確認してください。Apps セクション(開発者ダッシュボードの「Details」内)でアプリのキーやトークンを確認または再生成できます。
oauth_nonce、oauth_signature、oauth_timestampを用いて、OAuth 1.0a リクエストを正しく認可していることを確認してください。- 問題が続く場合は、OAuth ライブラリ、Postman や Insomnia のような REST クライアント、または xurl の使用を検討してください。
レート制限とPost上限に関する問題
レート制限とPost上限に関する問題
429 エラーは、特定のエンドポイントでレート制限に達した場合、またはPost上限に達した場合に返されることがあります。「Too many requests」という特定のエラーが返された場合は、そのエンドポイントのレート制限に達しています。つまり、指定の時間内に許可されるリクエスト数の上限を超えています。レート制限はアプリ単位およびユーザー単位で設定されています。
- X アプリレベルは、OAuth 2.0 App-Only を使用する際に許可されるリクエスト数を示し、レート制限はアプリ全体に対してグローバルに適用されます。例えば、あるメソッドのレート制限ウィンドウあたりの許可リクエスト数が15の場合、X アプリとして各ウィンドウで15件のリクエストが可能です。この上限はユーザーレベルの上限とは完全に独立しています。詳細は OAuth 2.0 App-Only のガイドをご覧ください。
- ユーザーコンテキストレベルは、OAuth 1.0a ユーザーコンテキストまたは OAuth 2.0 認可コード(PKCE 対応)を使用する際、ユーザーの Access Token ごとに行えるリクエスト数を示します。例えば、あるメソッドのレート制限ウィンドウあたりの許可リクエスト数が15の場合、各ウィンドウにつきユーザーの Access Token ごとに15件のリクエストが可能です。ユーザーの Access Token を取得する方法については、OAuth 1.0a および OAuth 2.0 のガイドをご覧ください。
Post が見つからない問題
Post が見つからない問題
Post が返されるはずなのにエンドポイントから返ってこなかった場合は、以下の手順に従ってください。
- 使用しているオペレーターと構文が正しいか、ルールを確認してください。正しい構文を確認するため、ルールをより小さな節に分割して検証してください。
- Post を送信したアカウントが Post 作成時点で保護されていた場合、リクエスト時点でアカウントが公開であっても、その Post は返されません。通常、これは X Advanced Search で確認できます。X Advanced Search で Post が表示されない場合、その Post はエンドポイントでも返されないと考えてください。
- Post が送信されたとき、ストリームに接続していましたか?Post オブジェクトに含まれるタイムスタンプは UTC である点に注意してください。Post が送信された際に切断が発生していた場合は、取り逃したデータを補完するために利用できる復旧と冗長化の機能をご確認ください。
- Post が送信されたとき、そのルールは有効でしたか?Post オブジェクトに含まれるタイムスタンプは UTC である点に注意してください。
バッファ満杯による切断の問題
バッファ満杯による切断の問題
ストリームが当社のデータ配信速度に追いつかず、アプリがストリームから十分な速度でデータを取り込めていない場合、次のいずれかのエラーが発生することがあります:当社側では一定期間の遅延を許容し、各ストリームに一時的なステージングバッファを設けています。しかし、追いつけない場合は、現時点から再接続できるよう切断を行います。なお、これによりデータ損失が発生する可能性があります(バッファ満杯による切断時点でバッファ内にあるデータが対象)。これらはデータが急増した際に発生することがあります。一般的には、処理フローとは分離した、迅速な取り込み専用のバッファ処理を用いることを推奨します。v1.1 エンドポイントを利用するエンタープライズのお客様は、このような切断を防ぐためのアプリ最適化について、当社の接続に関する記事や、ストリーミングデータの消費に関するこちらおよびこちらをご参照ください。切断によって取り逃したPostを回収するためのツールがいくつかあり、以下に挙げます。なお、以下のツールはエンタープライズレベルのアクセスでの v1.1 エンドポイントでのみ利用可能です。
- Redundant Connections - 複数の接続を用いて複数サーバーからストリームを取り込み、いずれかが切断された場合のデータ取り逃しを防ぎます。
- Replay - 別のストリームを使用し、過去5日以内のデータを回収します。
- Backfill - 5分以内に再接続し、中断地点から再開します。
- Recovery and redundancy features - 回復と冗長性に関する詳細情報。
- Historical PowerTrack - X の全アーカイブからデータを回収します。
- Additional recovery options - 追加の回復オプションとガイダンス。
ヘルプ
質問を投稿する前に
- X の開発者向けドキュメントで、該当する情報を検索する
- 他の開発者による類似の質問がないか、コミュニティフォーラムを検索する
- コミュニティフォーラムのガイドラインを確認する
質問を投稿する際は、次の情報を必ず含めてください
- 問題の概要
- 実行した API コール(可能であればヘッダーも含める)
- 返ってきた X のレスポンス(エラーメッセージがあれば含める)
- 本来想定していた結果
- これまでに実施したトラブルシューティング手順
- 再現手順
- 該当する場合:問題が発生した期間
- 該当する場合:アプリ ID、Post ID など
- 関連するコードサンプルやスクリーンショット