APIリファレンス
エラーコード

エラーコード

TWP公開APIが返すエラーコードの一覧です。

エラーレスポンス形式

{
  "error": {
    "code": "ERROR_CODE",
    "message": "エラーの説明"
  }
}

バリデーションエラーの場合は、詳細情報が含まれます。

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Validation failed",
    "details": [
      {
        "field": "email",
        "message": "メールアドレスの形式が正しくありません"
      }
    ]
  }
}

共通エラーコード

認証・認可

コードHTTPステータス説明
UNAUTHORIZED401APIキーが指定されていない
INVALID_API_KEY401APIキーが無効
EXPIRED_API_KEY401APIキーの有効期限切れ
FORBIDDEN403権限不足

リクエスト

コードHTTPステータス説明
MISSING_BODY400リクエストボディが空
INVALID_JSON400JSONのパースエラー
VALIDATION_ERROR422バリデーションエラー
NOT_FOUND404リソースが見つからない
METHOD_NOT_ALLOWED405許可されていないHTTPメソッド

サーバー

コードHTTPステータス説明
INTERNAL_ERROR500サーバー内部エラー
RATE_LIMITED429レート制限超過

コンテンツAPI固有のエラー

コードHTTPステータス説明
CATEGORY_NOT_FOUND404指定されたカテゴリが存在しない
MISSING_CATEGORY400カテゴリの指定が必要
MISSING_ID400IDの指定が必要
MISSING_SLUG400スラッグの指定が必要
INVALID_CURSOR400カーソルの形式が不正
INVALID_LIMIT400limit値が不正(1〜100の範囲外)
INVALID_SORT_PARAM400ソートパラメータが不正
TOO_MANY_FILTERS400フィルター条件が多すぎる(最大3件)
TAG_FILTER_SORT_NOT_SUPPORTED400タグフィルターとソートの併用は非対応

検索API固有のエラー

コードHTTPステータス説明
MISSING_QUERY400検索クエリが指定されていない
QUERY_TOO_LONG400検索クエリが長すぎる(500文字超)
INVALID_SIZE400size値が不正(1〜100の範囲外)
INVALID_FROM400from値が不正(負の値)
SEARCH_ERROR500検索エンジンエラー

プレビュー機能のエラー

コードHTTPステータス説明
INVALID_PREVIEW_TOKEN401プレビュートークンが無効または期限切れ
PREVIEW_TOKEN_TENANT_MISMATCH401プレビュートークンのテナントが一致しない
PREVIEW_TOKEN_VERIFICATION_ERROR401プレビュートークンの検証エラー
INVALID_PREVIEW_TYPE400プレビュートークンの種類が不正
CONTENT_ID_MISMATCH403プレビュートークンとコンテンツIDが一致しない

問い合わせAPI固有のエラー

コードHTTPステータス説明
MISSING_CATEGORY_CODE400カテゴリコードが指定されていない
INVALID_CATEGORY_CODE400カテゴリコードが無効
MISSING_INQUIRER_INFO400問い合わせ者情報が不足

エラーハンドリングの例

async function fetchContent(id) {
  const response = await fetch(`${API_URL}/v1/cms/contents/${id}`, {
    headers: { 'X-API-Key': API_KEY },
  });
 
  if (!response.ok) {
    const error = await response.json();
 
    switch (error.error.code) {
      case 'NOT_FOUND':
        // コンテンツが見つからない
        return null;
      case 'UNAUTHORIZED':
      case 'INVALID_API_KEY':
        // 認証エラー - 設定を確認
        throw new Error('APIキーを確認してください');
      case 'RATE_LIMITED':
        // レート制限 - リトライ
        await sleep(1000);
        return fetchContent(id);
      default:
        throw new Error(error.error.message);
    }
  }
 
  return response.json();
}