Twitter API エラーコードと HTTP ステータスのリファレンス
TwexAPI の Twitter/X API エラーを解決:HTTP 401、403、429、5xx、無効な auth_token、重複ツイート、DM 制限、安全な再試行。
TwexAPI は Twitter/X API の失敗を HTTP ステータスコードと、取得できる場合は上流の X エラーコードで通知します。401 では認証情報の修正、403 ではアクセス権やアカウントの問題の解消、429 ではレート制限が解除されるまでの待機が必要です。再試行する前にレスポンス本文を確認してください。
このリファレンスでは、Twitter API エラーコード、invalid auth_token、重複ツイート、DM 制限への対処方法を説明します。エンドポイントのパスは現在の API リファレンス に準拠しています。MCP エラー、ページネーションの復旧、SDK の例については、エラー処理 を参照してください。
以下のメッセージと上流のコードは、トラブルシューティングの例です。レスポンスの構造や HTTP ステータスへの対応付けはエンドポイントによって異なる場合があります。エンドポイントのスキーマと実際のレスポンスを併せて確認してください。
Twitter API エラーの対処方法を見つける
- HTTP 401 /
Invalid auth_token:TwexAPI の API キーと、書き込みエンドポイントに使用する X セッションの認証情報の両方を確認してください。認証 を参照してください。 - HTTP 403:メッセージを確認し、クレジット不足、非公開投稿、アカウント制限、Premium 要件のどれに該当するか判断してください。同じリクエストを繰り返してもアクセス権は復旧しません。
- HTTP 429 /
Too Many Requests:Retry-Afterまたはretry_afterに従い、リクエストの頻度制限と X アカウントの 1 日の上限を区別してください。レート制限 を参照してください。 - HTTP 500 / 502 / 503:一時的な読み取りの失敗は、待機時間に上限を設けたバックオフで再試行してください。書き込みを繰り返す前に、すでに成功していないか確認してください。
- X コード 187、344、502:これらは上流の X コードであり、HTTP ステータスコードとは別のものです。Twitter/X コード表 と 再試行に関する質問 を確認してください。
エラーレスポンスの形式
HTTP ステータスと JSON 本文全体を保存してください。TwexAPI のレスポンスには code と msg が含まれる場合があり、リクエストの検証エラーでは detail が使用されます。
{
"code": 500,
"msg": "Internal server error"
}
{
"detail": [
{
"loc": ["body", "cookie"],
"msg": "Field required",
"type": "missing"
}
]
}
レスポンスに上流からの追加メタデータが含まれる場合は、それも保存してください。
error:提供される場合はエラーメッセージを示します。すべてのエンドポイントがこのフィールドを使用するとは限りません。twitter_error_code:提供される場合は X エラーコードを示します。HTTP ステータスとは別のもので、たとえば X コード502は DM 制限を指します。retry_after:提供される場合は待機する秒数を示します。HTTP のRetry-Afterヘッダーにも従ってください。
省略可能なフィールドの存在を必須としたり、メッセージの完全一致だけで処理を分岐したりしないでください。本文に別の code が含まれていても、HTTP ステータスが 2xx 以外なら失敗です。
よくあるエラー(すべてのエンドポイント)
どのリクエストでも、以下の条件を確認してください。実際のメッセージは異なる場合があります。
| ステータス | メッセージ | 意味 | 対処方法 |
|---|---|---|---|
| 401 | Invalid or missing API key |
API キーが未指定または不正 | Authorization: Bearer <key> ヘッダーを確認する |
| 400 | Missing required … param: <x> |
必須フィールドやパラメータが未指定または無効 | リクエストを修正する |
| 429 | Please try again shortly.(当サービスの処理能力)· Rate limit exceeded… · または X 側の制限メッセージ |
リクエスト過多、当サービスの処理能力、または X アカウントの上限(例:1 日の DM・ツイート上限。twitter_error_code が含まれる場合がある) |
retry_after / Retry-After に従う。アカウントの 1 日の上限では、より長く待つ必要がある |
| 403 | クレジットを使い切った、またはアクセスが拒否された | クレジットまたはアカウント権限が不足 | 残高とアカウントのアクセス権を確認する |
| 422 | 検証エラー(detail) |
リクエストのフィールドがスキーマ検証に失敗 | detail に示されたフィールドを修正する。同じ入力のまま再試行しない |
| 500 | Internal server error |
一時的なエラーが発生 | 少し待って再試行する |
Twitter API の HTTP ステータスコード
| ステータス | 意味 |
|---|---|
| 200 | 成功 |
| 202 | 受け付け済み。このステータスを返すエンドポイントでは、操作の完了待ち |
| 400 | 不正なリクエスト、パラメータの未指定・無効、不正なプロキシ URL、またはメディアサイズ超過 |
| 401 | 未認証。API キーが不正、または auth_token が無効・期限切れ |
| 403 | アクセス禁止。クレジット不足、対象アカウントが非公開または凍結されている(投稿を読み取れない)、使用中のアカウントが凍結・ロックされている、権限の制限、または Premium 専用の操作 |
| 404 | 見つからない。ユーザー、ツイート、またはリソースが存在しない |
| 409 | 競合。重複ツイート |
| 410 | リソースを利用できない。本文でアカウント凍結の詳細を確認する |
| 422 | リクエストの検証に失敗。detail を確認して入力を修正する |
| 423 | X が返した場合:アカウントがロックされているか、認証が必要 |
| 429 | リクエスト過多。レート制限に到達 |
| 500 / 502 / 503 | サーバーまたは上流の一時的なエラー。再試行する |
Twitter/X API エラーコード
レスポンスに上流の X コードが含まれる場合は、以下の意味を参照してください。これらは X コードであり、HTTP ステータスではありません。また、すべてのエンドポイントが twitter_error_code を公開するわけではありません。
| コード | 意味 | 対処方法 |
|---|---|---|
| 32 | 認証できなかった | cookie に指定した X セッションの認証情報を更新する |
| 63 | 対象アカウントが凍結されている | アクセス可能なアカウントを使用するか、アクセスの復旧を待つ |
| 64 | 自分のアカウントが凍結されている | 別のアカウントを使用する |
| 131 | X 内部の一時的なエラー | 再試行する |
| 139 | すでにいいね済み | 現在の状態を確認する。操作を繰り返さない |
| 144 | 指定された ID のツイートが見つからない | ツイートが削除されているか、ID が不正 |
| 187 | 重複ツイート | 前の投稿を確認し、新しい投稿を意図している場合は本文を変更する |
| 226 | リクエストが自動化されたものと判断された | 再試行する |
| 326 | アカウントが一時的にロックされている | x.com/account/access でロックを解除してから再試行する |
| 327 | すでにリツイート済み | 現在の状態を確認する。操作を繰り返さない |
| 344 | 投稿が一時的に制限されている(アカウントではなくネットワーク・IP の制限) | バックオフし、プロキシを指定した場合は確認する。再試行前に書き込み結果を確認する |
| 349 | このユーザーにメッセージを送れない | 相手が自分からの DM を受け付けていない |
| 399 | X セッションのログインに失敗 | X セッションの認証情報を確認する |
| 433 | 返信が制限されている、または Premium が必要 | ツイートの返信対象が制限されているか、操作に X Premium が必要 |
| 465 | 古いツイートをリツイートできない | ツイートが古すぎるためリツイートできない |
| 476 | メッセージリクエストの送信が許可されていない | アカウントが DM リクエストを送信できない |
| 502 | 1 日の DM(メッセージリクエスト)上限に到達 | 24 時間待つか、上限の高い X Premium アカウントを使用する |
ツイートの読み取りと検索
POST /twitter/{screen_name}/timeline/page、/twitter/tweets-replies/page、/twitter/advanced_search/page に適用されます。
| ステータス | メッセージ | 対処方法 |
|---|---|---|
| 403 | This account's posts are not available. The account is protected (private), suspended, or no longer active. |
同じリクエストを再試行しない。成功するにはアクセス条件の変更が必要。承認されたフォロワー以外は対象の投稿を読めない。公開アカウントを対象にする。 |
| 403 | This account is suspended, so its posts are not available. |
対象アカウントが凍結されている。アクセス可能なアカウントを使用するか、アクセスの復旧を待つ。 |
| 502 | Upstream returned an unexpected response — please retry. |
上流の障害。待機時間に上限を設けたバックオフで再試行する。同じカーソルを保持する。 |
投稿とエンゲージメント
ツイートの作成
POST /twitter/tweets/create
tweet_content、任意の reply_tweet_id、および cookie に X の認証情報を指定してください。ツイートまたは返信の作成 を参照してください。
| ステータス | コード | メッセージ | 対処方法 |
|---|---|---|---|
| 409 | 187 | Status is a duplicate. |
投稿がすでに存在するか確認する。新しい投稿なら本文を変更する |
| 403 | 433 | The original Tweet author restricted who can reply… |
そのツイートでは自分からの返信が許可されていない |
| 403 | 433 | 長文・長時間動画には Premium が必要 | Premium アカウントを使用するか、コンテンツを短くする |
| 403 | n/a | コミュニティのメンバーではない | 先にコミュニティに参加する |
| 429 | 344 | 投稿が一時的に制限されている(ネットワーク・IP の制限) | バックオフする。指定したプロキシを確認し、投稿が作成されたか確認する |
| 502 | n/a | X returned an empty result(結果未確認) |
再試行前にアカウントのタイムラインを読む。書き込み結果は未確認 |
| 400 | n/a | File size exceeds… |
メディアファイルのサイズを小さくする |
| 503 | 226 | This request looks automated |
バックオフし、再試行前に書き込み結果を確認する |
| 502 / 503 | n/a | 一時的な接続エラー | 再試行する(proxy を指定した場合は、動作しているか確認する) |
いいね・リツイート・ブックマーク
POST /twitter/tweets/{tweet_id}/like · /twitter/tweets/{tweet_id}/retweet · /twitter/tweets/{tweet_id}/bookmark
DELETE /twitter/tweets/{tweet_id}/like · /twitter/tweets/{tweet_id}/retweet · /twitter/tweets/{tweet_id}/bookmark
| ステータス | コード | メッセージ | 対処方法 |
|---|---|---|---|
| 403 | n/a | User is suspended, deactivated or offboarded |
アカウントを利用できない。別のアカウントに切り替える |
| 401 | 32 | Could not authenticate you |
cookie に指定した X セッションの認証情報を更新する |
| 403 | 465 | not permitted to retweet an outdated Tweet |
ツイートが古すぎるためリツイートできない |
| 状況により異なる | 139 / 327 | すでにいいね済み・すでにリツイート済み | 現在の状態を確認する。操作を繰り返さない |
| 429 | n/a | レート制限 | 頻度を下げてから再試行する |
| 502 / 503 | n/a | 一時的な接続エラー | 再試行する |
ツイートの削除
POST /twitter/tweets/delete-batch
1 件のツイートを削除するには target_id を指定してください。省略すると一括削除になります。エラーから復旧する際は、元のリクエストのフィールドを保持してください。
| ステータス | メッセージ | 対処方法 |
|---|---|---|
| 404 | No status found with that ID |
すでに削除されているか、ID が不正 |
| 403 | 投稿者ではない | 削除できるのは自分のツイートのみ |
| 401 | auth_token が無効 |
X セッションの認証情報を更新する |
フォロー・フォロー解除
POST /twitter/user/follow · DELETE /twitter/user/follow
| ステータス | メッセージ | 対処方法 |
|---|---|---|
| 404 | User not found |
ハンドル名・ID を確認する |
| 403 | 制限されている | 使用中のアカウントまたは対象が操作を許可していない |
| 401 | auth_token が無効 |
X セッションの認証情報を更新する |
| 429 | フォロー上限 | 待ってから再試行する |
プロフィール・アバター・バナーの更新
POST /twitter/profile
画像 URL には profile_image と profile_banner、X の認証情報には cookie を使用してください。
| ステータス | メッセージ | 対処方法 |
|---|---|---|
| 401 | Invalid auth_token - could not fetch credentials |
X セッションの認証情報を更新する |
| 400 | 画像サイズ超過・不正な形式 | 画像を修正する |
メディアの添付
ツイートの作成時や DM の送信時にメディアを添付します。現在のリファレンスには独立したメディアアップロード用ルートはありません。ツイート作成時の media_urls は、最大 4 枚の画像、1 件の GIF、または 1 件の動画に対応しています。GIF・動画を他のメディアと混在させないでください。アクセスできない URL、非対応の形式、拒否されたファイルサイズを修正してから再試行してください。フィールド名と制約はエンドポイントのスキーマに従ってください。
ダイレクトメッセージ
POST /v3/twitter/send-dm · /v3/twitter/dm-history · /v3/twitter/conversations
権限の確認には POST /v2/dm/status を使用してください。DM の送信 を参照してください。
| ステータス | コード | メッセージ | 対処方法 |
|---|---|---|---|
| 429 | 502 | You've hit your daily message request limit. Subscribe to Premium for higher limits. |
24 時間待つか、Premium アカウントを使用する |
| 403 | 476 | Sender is not verified to send message requests |
アカウントが DM リクエストを送信できない |
| 403 | 349 | Cannot send messages to this user |
相手が自分からの DM を受け付けていない |
| 401 | 32 | Could not authenticate you |
X セッションの認証情報を更新する |
| 404 | n/a | 会話・ユーザーが見つからない | 送信先を確認する |
データの読み取り
POST /v2/tweet/detail · /twitter/tweets/lookup · /twitter/users/by_ids · /v3/twitter/users/followers · /v3/twitter/users/following · /twitter/tweets/thread_by_id · /twitter/tweets/{tweet_id}/replies/page
GET /twitter/{screen_name}/about · /twitter/search-user/{keyword}/{target_count}
| ステータス | メッセージ | 対処方法 |
|---|---|---|
| 404 | Tweet not found: <id> |
ツイートが削除・非公開になっているか、ID が不正 |
| 404 | Could not resolve userId for @<handle> |
ハンドル名が存在しない、変更された、またはアカウントが凍結されている |
| 404 | Could not find user with ID: <id> |
ユーザー ID を確認する |
| 400 | Missing required query param: <x> |
必須パラメータを指定する |
| 429 | レート制限 | retry_after の時間だけ待ってから再試行する |
記事
POST /x/article · GET /x/article/{tweet_id}/markdown
書き込み:POST /x/articles/draft · PUT /x/articles/{article_id}/cover · /x/articles/{article_id}/title · /x/articles/{article_id}/content · POST /x/articles/{article_id}/publish または /x/articles/publish。
以下の Premium 要件は記事の公開に適用されます。article_id を保持し、失敗したステップだけを再試行できるよう、段階的な記事作成フロー の使用を推奨します。
| ステータス | メッセージ | 対処方法 |
|---|---|---|
| 403 | Premium が必要 | 記事の公開には X Premium アカウントが必要 |
| 404 | 記事が見つからない | 記事 ID を確認する |
| 401 | auth_token が無効 |
X セッションの認証情報を更新する |
| 400 | コンテンツが無効 | 記事本文を修正する |
再試行ガイド
| 発生したエラー | 再試行するか | 注意事項 |
|---|---|---|
| 429 | ✅ 指定された時間を待ってから | リクエストのレート制限に加え、アカウントの 1 日の上限にも従う |
| 422 | ❌ | 検証レスポンスに示されたフィールドを修正する |
| 500 / 502 / 503 | ✅ | 一時的なエラー。少し待って再試行する |
| X コード 226 | 書き込み結果を確認してから | バックオフする。再試行前にアカウント制限を確認する |
| 401 | ❌ | API キーを修正するか、X セッションの認証情報を更新する |
| 403(凍結・ロック) | ❌ | 別のアカウントを使用するか、先にロックを解除する |
| 404 | ❌ | ID・ハンドル名を確認する |
| 400 / 409 | ❌ | リクエストを修正する(パラメータ、メディアサイズ、重複した本文) |
ヒント: 429 と一時的な 5xx には、ジッターを加え、待機時間に上限を設けたバックオフを使用してください。400/401/403/404/409/422 では、先に入力、認証情報、またはアカウントのアクセス権を修正してください。
Twitter API エラーと再試行に関する質問
Twitter API が 401 または invalid auth_token を返すのはなぜですか?
HTTP 401 は、TwexAPI の API キーが未指定または無効であることを意味する場合があります。書き込みエンドポイントでは、Invalid auth_token または X コード 32 は X セッションの期限切れを意味する場合もあります。再試行前に Bearer ヘッダーを修正するか、cookie に指定した X の認証情報を更新してください。
Twitter API エラー 403 と 429 の違いは何ですか?
HTTP 403 は、クレジット不足、非公開コンテンツ、制限されたアカウント、Premium 専用の操作など、アクセス上の問題を示します。HTTP 429 はリクエストまたはアカウントの上限を示します。403 では原因を解消し、429 では示された上限がリセットされるまで待ってください。
Twitter API の 429 Too Many Requests を解決するにはどうすればよいですか?
Retry-After または retry_after が提供されている場合はその時間だけ待ち、同時実行数を減らして、待機時間に上限を設けたバックオフで再開してください。1 日のツイート・DM 上限では、短い待機だけではなく、上限がリセットされるまで待つ必要があります。読み取りを再試行する際は、失敗したページのカーソルを保持してください。
Twitter エラーコード 187 は何を意味しますか?
X エラーコード 187 はツイート本文の重複を意味します。前の書き込みですでに投稿が作成されていないか確認してください。別の投稿を公開するつもりなら、同じリクエストを繰り返さずに tweet_content を変更してください。
Twitter エラーコード 344 は何を意味しますか?
X エラーコード 344 は、ネットワークまたは IP に関連した一時的な投稿制限を示します。バックオフし、指定したプロキシを確認し、書き込みを再試行する前にアカウントのタイムラインを確認してください。これは X エラーコードであり、HTTP ステータスコードではありません。
Twitter API エラー 500、502、503 は再試行すべきですか?
一時的な読み取りの失敗は、ジッターを加え、待機時間に上限を設けたバックオフで再試行してください。書き込みがタイムアウトしたり 5xx を返したりした場合は、まずタイムライン、DM 履歴、またはエンゲージメントの状態を確認してください。失敗レスポンスは、書き込みが適用されなかったことを証明するものではありません。
TwexAPI の 422 検証エラーは再試行すべきですか?
同じ入力のまま再試行しないでください。TwexAPI はリクエストの検証エラーに HTTP 422 を使用します。detail で失敗したフィールド、場所、種類を確認し、エンドポイントのスキーマに従ってリクエストを修正してください。
Twitter エラーコード 502 は HTTP 502 と同じですか?
いいえ。X エラーコード 502 は 1 日の DM リクエスト上限を指し、HTTP 429 とともに返される場合があります。HTTP 502 は上流のレスポンス障害を示します。再試行方針を決める前に、HTTP ステータスと、提供されている場合は twitter_error_code の両方を確認してください。