Skip to content

エラーハンドリング

QuickTrust API のエラーレスポンスの形式と対処方法について説明します。

エラーレスポンスの形式

すべてのエラーレスポンスは以下の形式で返されます:

json
{
  "error": "Bad Request",
  "message": "Invalid request body"
}

HTTP ステータスコード

2xx 成功

コード説明
200成功
201リソース作成成功
202受理(非同期処理開始)
204成功(レスポンスボディなし)

4xx クライアントエラー

コード説明対処方法
400リクエストが不正リクエストボディを確認
401認証エラーAPIキーを確認
403アクセス権限なしリソースへの権限を確認
404リソースが見つからないIDを確認
409競合(重複など)既存リソースを確認
410リソースが期限切れ新しいセッションを作成
422処理できないエンティティビジネスロジックの要件を確認

5xx サーバーエラー

コード説明対処方法
500内部サーバーエラーサポートに連絡
503サービス利用不可時間をおいてリトライ

よくあるエラーと対処方法

400 Bad Request

リクエストボディのバリデーションエラー:

json
{
  "error": "Bad Request",
  "message": "callbackUrl must be a valid URL"
}

対処方法: リクエストボディの形式を確認してください。

401 Unauthorized

APIキーが無効または未指定:

json
{
  "error": "Unauthorized",
  "message": "Invalid or missing API key"
}

対処方法:

  • Authorization ヘッダーが正しく設定されているか確認
  • APIキーが有効か確認(管理画面で確認可能)

404 Not Found

指定したリソースが存在しない:

json
{
  "error": "Not Found",
  "message": "Verification session not found"
}

対処方法:

  • リソースIDが正しいか確認
  • リソースが削除されていないか確認

409 Conflict

処理が競合している:

json
{
  "error": "Conflict",
  "message": "Verification is already processing"
}

対処方法:

  • 既存の処理が完了するのを待つ
  • 重複したリクエストを送信していないか確認

410 Gone

セッションの有効期限切れ:

json
{
  "error": "Gone",
  "message": "Verification session has expired"
}

対処方法:

  • 新しいセッションを作成してください

422 Unprocessable Entity

ビジネスロジック上の制約違反:

json
{
  "error": "Unprocessable Entity",
  "message": "Cannot reprocess: verification is not in a reprocessable state"
}

対処方法:

  • エラーメッセージを確認し、要件を満たすようにリクエストを修正

503 Service Unavailable

外部サービスが一時的に利用不可:

json
{
  "error": "Service Unavailable",
  "message": "Liveness service temporarily unavailable"
}

対処方法:

  • 時間をおいてリトライしてください
  • 継続する場合はサポートに連絡

リトライ戦略

指数バックオフ

5xx エラーの場合は、指数バックオフでリトライすることを推奨します:

javascript
async function requestWithRetry(fn, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    try {
      return await fn();
    } catch (error) {
      if (error.status >= 500) {
        const delay = Math.pow(2, attempt) * 1000; // 1s, 2s, 4s
        await new Promise((resolve) => setTimeout(resolve, delay));
        continue;
      }
      throw error;
    }
  }
  throw new Error('Max retries exceeded');
}

// 使用例
const result = await requestWithRetry(() =>
  createVerificationSession({ callbackUrl: 'https://...' }),
);

リトライすべきエラー

エラーリトライ理由
500はい一時的なサーバーエラーの可能性
503はいサービス復旧を待つ
400いいえリクエストを修正する必要
401いいえ認証情報を修正する必要
404いいえリソースが存在しない

デバッグのヒント

ログの記録

エラー発生時は以下の情報を記録することを推奨します:

  • HTTP ステータスコード
  • エラーメッセージ
  • リクエストボディ(機密情報を除く)
  • タイムスタンプ

QuickTrust eKYC