メインコンテンツへスキップ

HTTPステータスコード

ステータス意味リトライ可能
200成功N/A
400不正リクエスト(無効なパラメータ、無効なミント、非対応トークンプログラム)いいえ
401未認証(APIキーの欠落または無効)いいえ
404非対応マーケットまたはミント未インデックスいいえ(下記参照)
422処理不能(有効なリクエストだが実行可能なルートなし)いいえ
429レート制限はい
502Bad Gateway(上流RPCまたはDEX障害)はい
503サービス利用不可(ルーター未準備またはポーズ中)はい
500内部サーバーエラーはい

レスポンスエンベロープ

成功

{
  "status": "ok",
  "tx": "base64-encoded unsigned transaction",
  "route": { "market_type": "pumpswap", "pool_id": "..." }
}

非対応マーケット

サポートされているDEXでミントに実行可能なルートがない場合に返されます。messageフィールドは人間とAIが読める説明を提供します。
{
  "status": "unsupported",
  "reason": "no_route",
  "message": "No supported market found for this mint. Supported DEXs: PumpSwap, Raydium (CPMM, Launchpad), Meteora (DBC, DAMM v2), Pump.fun."
}
理由ステータス説明
no_route404サポートされているDEXにこのミントのプールがない
invalid_mint400ミントアドレスがオンチェーンに存在しない
unsupported_token_program400トークンがSPL TokenまたはToken-2022以外のプログラムを使用

未インデックス

ミントは存在するがまだ解決されていない場合に返されます。短い遅延後にリトライしてください。
{
  "status": "not_indexed",
  "mint": "So11111111111111111111111111111111111111112",
  "reason": "mint not indexed yet; try again shortly"
}

エラー

バリデーション失敗、レート制限、サーバーエラーの一般的なエラーレスポンスです。
{
  "error": "descriptive error message"
}
SDKはすべてのレスポンスバリアントを解析し、ExitApiError型を通じて提供します。

ExitApiErrorの種類

すべてのSDKはkind識別子を持つExitApiError(または同等のもの)を公開します:
種類トリガーリトライ可能
transportネットワーク障害、DNSエラー、タイムアウトはい
http_status非2xx HTTPレスポンスステータスが500以上または429の場合はい
envelope_statusサーバーが{ "status": "error" }を返したいいえ
parseレスポンスボディをJSONとして解析できなかったいいえ

リトライ可能性の確認

import { ExitApiError } from "@lasersell/lasersell-sdk";

try {
  const response = await client.buildSellTx(request);
} catch (error) {
  if (error instanceof ExitApiError) {
    console.log("Kind:", error.kind);
    console.log("Retryable:", error.isRetryable());
    console.log("HTTP status:", error.status);
    console.log("Body:", error.body);
  }
}

組み込みリトライ動作

すべてのSDKには以下のデフォルトで自動リトライが含まれています:
設定デフォルト値
最大試行回数2
初期バックオフ25 ms
最大バックオフ25 ms
ジッター25 ms
接続タイムアウト200 ms
試行タイムアウト900 ms
リトライはisRetryable()trueを返すエラー(トランスポート障害、5xxレスポンス、429レート制限)に対してのみ発動します。

リトライポリシーのカスタマイズ

const client = ExitApiClient.withOptions("YOUR_API_KEY", {
  attempt_timeout_ms: 2000,
  retry_policy: {
    max_attempts: 3,
    initial_backoff_ms: 50,
    max_backoff_ms: 200,
    jitter_ms: 50,
  },
});

ベストプラクティス

  • 400401422エラーはリトライしないでください。コードで修正すべきリクエストまたは認証の問題を示しています。
  • "status": "unsupported"404リトライしないでください。ミントにサポートされているマーケットがありません。
  • "status": "not_indexed"4041回リトライしてください。ミントの解決に少し時間が必要な場合があります。
  • 429レスポンスには指数バックオフで待機してください。組み込みリトライがこれを自動処理します。
  • 502および503エラーにはバックオフ付きでリトライしてください。一時的なインフラ問題です。
  • デバッグ用にkindstatusbodyを含むエラー詳細をログに記録してください
  • 一貫してenvelope_statusエラーが発生する場合は、mintアドレスとuser_pubkeyが正しいことを確認してください。