X API v2 HTTP ステータスコード
Code | Text | 説明 | トラブルシューティングのヒント |
---|---|---|---|
200 | OK | リクエストは成功しました。 | |
400 | Bad Request | リクエストが無効であるか、処理できません。付随するエラーメッセージが詳細を説明します。認証がない、または無効な query パラメータを含むリクエストは無効と見なされ、このレスポンスが返されます。 | JSON の query の形式を再確認してください。たとえば、ルールに厳密一致やその他のオペレーターに関連する二重引用符が含まれる場合、JSON 構造と区別するためにバックスラッシュでエスケープする必要がある場合があります。 |
401 | Unauthorized | リクエストの認証に問題がありました。これは、認証情報の欠落や誤りが原因である可能性があります。未定義の状況で返される場合もあります。 | 正しい認証方法を使用していること、ならびに認証情報が正しいことを確認してください。 |
403 | Forbidden | リクエストは理解されましたが、拒否されたか、アクセスが許可されていません。付随するエラーメッセージが理由を説明します。 | 使用しようとしている endpoint へのアクセス権がデベロッパーアカウントに付与されていることを確認してください。App を許可リストに追加してもらう必要がある場合(例: Engagement API や X Ads API)や、アクセスの申請が必要な場合もあります。 |
404 | Not Found | 要求された URI が無効であるか、ユーザーなど要求されたリソースが存在しません。 | 使用している endpoint に対して有効なパラメータと正しい URI を使用していることを確認してください。 |
409 | Connection Exception | ルールのない Filtered stream に接続しようとしたときに返されます。 | 接続先の stream に少なくとも 1 つのルールを作成していることを確認してください。Filtered stream はアクティブなルールに一致する Posts のみを返します。ルールがない場合、stream は Posts を返しません。 |
429 | Too Many Requests | App のレートリミットまたはPost上限を使い切ったためにリクエストを処理できない場合に返されます。詳しくはレートリミットを参照してください。 | 使用している endpoint で許可されている一定時間あたりのリクエスト数を確認してください。時間枠のリセットを待ってください。リクエストの間隔を空けてレートリミットに達しないようにするか、次の利用可能なデータプランにアップグレードしてください。 |
500 | Internal Server Error | 何かが壊れています。通常は一時的なエラーで、高負荷の状況や endpoint に一時的な問題がある場合などに発生します。 | X API のステータスページまたはデベロッパーコミュニティフォーラムを確認して、他の人にも同様の問題が発生していないかを確認するか、時間をおいて再試行してください。 |
501 | Unimplemented | X API はこの endpoint をサポートしておらず、リクエストを処理できません。 | |
503 | Service Unavailable | X のサーバーは稼働していますが、リクエストが過負荷です。後でもう一度お試しください。 | X API のステータスページまたはデベロッパーコミュニティフォーラムを確認して、他の人にも同様の問題が発生していないかを確認するか、時間をおいて再試行してください。 |
部分的なエラー
エラー情報
タイトル | タイプ | 説明 |
---|---|---|
一般的な問題 | about:blank | HTTP ステータスコードで提供される情報以外に追加情報のない一般的な問題です。 |
無効なリクエストの問題 | 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 のレスポンスを正しくパースできていない。
認証に関する問題
認証に関する問題
- endpoint に必要な適切な認証方法を使用していることを確認してください。これは endpoint の API リファレンスページで確認できます。
- 認証情報が正しいことを確認してください。developer ダッシュボードのApps セクション(「Details」内)で、App のキーおよびトークンを確認または再生成できます。
oauth_nonce
、oauth_signature
、oauth_timestamp
を用いて、OAuth 1.0a リクエストを正しく認可していることを確認してください。- 問題が解決しない場合は、OAuth ライブラリ、Postman や Insomnia のような REST クライアント、または xurl の利用を検討してください。
レートリミットとPost上限に関する問題
レートリミットとPost上限に関する問題
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 のガイドを参照してください。
Post が欠落している場合の問題
Post が欠落している場合の問題
Post が返されるはずだったのに、endpoint から配信されなかった場合は、以下の手順に従ってください。
- 使用している operators と syntax が正しいか、ルールを確認してください。正しい構文を使用していることを確認するため、ルールをより小さな句に分割してください。
- Post を送信したアカウントが、その Post 作成時点で保護された状態だった場合、たとえ endpoint へのリクエスト時点でアカウントが公開であっても、その Post は返されません。通常、これは X Advanced Search を使用して確認できます。X Advanced Search で Post が表示されない場合、その Post は endpoint から返されないと考えるべきです。
- Post が送信されたとき、stream に接続していましたか?Post オブジェクトで配信される timestamp は UTC を示すことを忘れないでください。Post の送信時に切断が発生していた場合は、取り逃した data を補完するために利用可能な リカバリーおよび冗長化機能を確認してください。
- Post が送信されたとき、そのルールは有効になっていましたか?Post オブジェクトで配信される timestamp は UTC を示すことを忘れないでください。
フルバッファ切断の問題
フルバッファ切断の問題
stream が当社の配信速度に追従できず、かつ App が stream からの data を十分な速度で消費できていない場合、次のいずれかのエラーが発生することがあります:当社側では一定期間の遅延を許容し、各 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 の開発者向けドキュメントで検索する
- 他の開発者による類似の質問がないか、コミュニティフォーラムで検索する
- コミュニティフォーラムのガイドラインを確認する
質問を投稿する際は、次の情報を必ず含めてください
- 問題の説明
- 実行した API 呼び出し(可能であればヘッダーも含める)
- 返ってきた X のレスポンス(エラーメッセージがあれば含める)
- 本来想定していた結果
- 実施したトラブルシューティング手順の一覧
- 問題を再現するために必要な手順の一覧
- 該当する場合、問題が発生した期間
- 該当する場合、App ID、Post ID など
- 関連するコードサンプルまたはスクリーンショット