コンテンツにスキップ
Twexapi
日本語
Esc
↑↓移動↵開く⌘Jプレビュー
このページの内容

エラー処理

TwexAPI の HTTP エラー、MCP ツール失敗、クレジット制限、書き込みアクションのリトライから復旧する。

TwexAPI のエラーは 2 層に分かれます。MCP JSON-RPC エラー(ツール実行前の認証)と REST HTTP エラー(API に到達した後)。ステータスコード、レスポンスボディ、カーソル、ID を保持し、リトライと人間による確認を安全に保ちましょう。

REST レスポンスエンベロープ

成功時:

{
  "code": 200,
  "msg": "success",
  "data": {}
}

HTTP ステータスが 2xx でない場合、ボディに code があっても失敗として扱います。ボディ全体、リクエストパス、消費済みカーソルをログに残してください。

HTTP ステータス別の復旧

ステータス 意味 対処法
400 無効なクエリ、欠落フィールド、不正なボディ 入力を修正。そのままリトライしない。
401 API キー欠落または無効 dashboard から認証情報を差し替え。Authorization: Bearer 形式を確認。
403 クレジット枯渇、アカウント制限、アクション不可 Get Balance を確認。チャージするか、書き込みステップを外す。
404 ツイート、ユーザー、リスト、リソース未検出 ID、スクリーン名、カーソルの鮮度を確認。
422 構造化入力の検証失敗 エンドポイントページのスキーマフィールドを修正。そのままリトライしない。
429 レート制限超過 Rate Limits でバックオフ。next_cursor と完了行を保持。
5xx 一時的なサービスまたは上流取得失敗 指数バックオフと上限付きでリトライ。

クレジットと残高

従量課金の読み取り・書き込みはアカウントクレジットを消費します。多ページ処理では、長時間ジョブの前後に残高を確認しましょう。

curl --request GET \
  --url 'https://api.twexapi.io/balance' \
  --header 'Authorization: Bearer YOUR_API_KEY'

403 がクレジットやアクセスに言及する場合:

  1. API を叩き続けるスケジュールジョブを停止。
  2. ダッシュボードで残高を確認。
  3. クレジット復旧後、最後に保存したカーソルから再開。

ページネーション安全なリトライ

検索、フォロワー、タイムライン、DM 履歴では:

  • next_cursor、has_next_page、task_id をエージェント会話の外に保存。
  • 429 や 5xx 後は同じカーソルでリトライ(次ページではない)。
  • 400、404、422 後は ID とクエリパラメータを確認してからリトライ。

書き込みアクション

書き込みエンドポイント(ツイート、返信、いいね、フォロー、DM 送信)には以下が必要です。

  • 有効な TwexAPI API キー
  • リクエスト上の保存済み Twitter cookie または auth_token

復旧ルール:

状況 推奨アクション
書き込みで 401 リトライ前に API キーと cookie 認証情報を修正。
書き込みで 403 クレジットと接続アカウントの権限を確認。
成功が曖昧 読み取りエンドポイントでツイート、DM、エンゲージメント状態を確認してから重複実行。
エージェントワークフロー read_only: false の MCP 呼び出し前に人間の承認を必須に。

TwexAPI は別途の書き込みポーリング API を提供していません。副作用を繰り返す前に、べき等な読み取りチェック(ツイート参照、DM ステータス)を優先。cookie 設定と 403 復旧は。

Idempotency-Key で投稿を安全に再試行する

POST /twitter/tweets/create と POST /twitter/tweets/quote は、任意の Idempotency-Key ヘッダーを受け付けます。投稿ごとに新しい値(UUID など)を使い、タイムアウトやネットワークエラーのあとで同じ投稿を再試行するときは同じ値を送ってください。

curl https://api.twexapi.io/twitter/tweets/create \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 8f14e45f-ceea-467f-a8d1-1f0b4c2a9e01" \
  -d '{"cookie": "auth_token=...; ct0=...", "tweet_content": "Hello from TwexAPI"}'
同じキーで再試行 結果
最初のリクエストが成功済み(24 時間以内) 最初のレスポンスを Idempotent-Replayed: true ヘッダー付きで返します。再投稿せず、クレジットも消費しません。
最初のリクエストがまだ実行中 409。少し待ってから同じキーで再試行してください。
ボディが異なる 422。別の投稿には新しいキーを使ってください。
最初のリクエストが失敗 もう一度実行されます。失敗したリクエストはキーを保持しません。

キーは 1〜255 文字の表示可能な ASCII 文字で、API キーごとに分かれています。ヘッダーがなければ、リクエストのたびに投稿されます。MCP の twexapi_write は自動でキーを付けるため、10 分以内にまったく同じ呼び出しを繰り返すと最初の結果が返ります。

MCP エラー

ツール実行前の認証失敗

MCP の認証に失敗すると、どのツールも実行されません:

{
  "jsonrpc": "2.0",
  "id": null,
  "error": {
    "code": 401,
    "message": "Access token is invalid or expired"
  }
}

MCP クライアントから再度サインインするか、x-api-key / Authorization: Bearer を修正してから、ツールを呼び出し直してください。認証エラーのメッセージ一覧は MCP ツールリファレンス にあります。

クレジット残高がない

アカウントのクレジットがなくなっても MCP 接続は維持され、explore は無料で使えます。ただし、その他のツール呼び出しは API を呼ばずにエラー結果を返します:

{
  "error": "No credits left on this TwexAPI account. Top up at https://twexapi.io/dashboard and try again."
}

処理を止めて、ユーザーにチャージを依頼してください。再試行しても解決しません。

twexapi_request または twexapi_write で返る API エラー

下位の REST 呼び出しが失敗した場合は、ツールの結果をそのまま保持してください:

{
  "status_code": 429,
  "endpoint": "get_global_trending_tweets",
  "method": "GET",
  "path": "/twitter/global-trending/tweets",
  "result": {
    "code": 429,
    "msg": "Rate limit exceeded. QPS limit: 2 requests per second",
    "data": []
  }
}

上記の HTTP 復旧手順を適用してください。モデルに新しいパスを推測させず、ルートが変わった可能性がある場合は explore を呼び直してください。

SDK と CLI のエラー

生成 SDK は HTTP 失敗を言語ネイティブな例外にマップします。ジョブ境界で catch し、ステータスコードとレスポンスボディをログ、429/5xx はリトライポリシーへ。

Python 例:

import requests

try:
    response = requests.get(
        "https://api.twexapi.io/balance",
        headers={"Authorization": "Bearer YOUR_API_KEY"},
        timeout=30,
    )
    response.raise_for_status()
except requests.HTTPError as exc:
    status = exc.response.status_code
    body = exc.response.text
    if status == 429:
        # Back off, preserve cursor, retry later
        ...
    elif status in (400, 404, 422):
        # Fix input; do not retry unchanged
        ...
    raise

言語別パターンは各 SDK ページ を参照してください。

リトライバックオフテンプレート

429 と 5xx には上限付き指数バックオフ:

retry_delays_seconds = [5, 15, 45, 120]

for delay in retry_delays_seconds:
    response = call_twexapi()
    if response.ok:
        break
    if response.status_code in (429, 500, 502, 503, 504):
        time.sleep(delay)
        continue
    break  # 4xx other than 429: stop and fix input

バックオフは Rate Limits と組み合わせ、429 直後にフル QPS でジョブを再開しないようにしましょう。

フレームワーク別メモ

実行環境 推奨事項
LangChain ハンドオフモデルを検証。401 でグラフを停止。
Prefect ジッター付きタスクリトライ。カーソルはタスク状態に保存。
n8n / Zapier / Make 401/403 は運用アラートへ。429 リプレイは遅延。
MCP agents 部分成功後に next_cursor を破棄しない。

関連ページ

このページは役に立ちましたか?