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

エラーコード一覧

コード定数メッセージ説明
0OKOK成功
4000ERROR_CODE_INVALID_UNITInvalid unit無効な広告ユニットID
4001ERROR_CODE_AD_INACTIVEAd inactive有効な広告キャンペーンなし
4002ERROR_CODE_AD_NO_FILLNo fill条件に合う広告なし
4003ERROR_CODE_INVALID_PARAMSInvalid params無効なパラメータ

エラー詳細説明

ERROR_CODE_INVALID_UNIT (4000)

原因:存在しないまたは無効化された広告ユニットIDでリクエストしました。 解決方法
  • コンソールで広告ユニットIDが正確か確認
  • 広告ユニットが有効な状態か確認
  • コピー/ペースト時に空白や特殊文字が含まれていないか確認
{
    "code": 4000,
    "msg": "Invalid unit",
    "result": null
}

ERROR_CODE_AD_INACTIVE (4001)

原因:該当広告ユニットに有効な広告キャンペーンがありません。 解決方法
  • コンソールでキャンペーンが実行中か確認
  • キャンペーンスケジュール(開始日/終了日)を確認
  • キャンペーン予算が消費されていないか確認
{
    "code": 4001,
    "msg": "Ad inactive",
    "result": null
}

ERROR_CODE_AD_NO_FILL (4002)

原因:ターゲティング条件に合う広告が見つかりません。 解決方法
  • ターゲティング設定が過度に制限的でないか確認
  • リトライロジックを実装(指数バックオフ推奨)
  • 代替コンテンツ(フォールバック)を準備
{
    "code": 4002,
    "msg": "No fill",
    "result": null
}
リトライ実装例
async function requestAdWithRetry(params, maxRetries = 3) {
    for (let i = 0; i < maxRetries; i++) {
        try {
            const response = await axios.get('https://api-v2.adrop.io/request', {
                params,
                headers: { 'Authorization': 'YOUR_APP_KEY' }
            });

            if (response.data.code === 0) {
                return response.data.result;
            }

            if (response.data.code === 4002) {
                // No fill - リトライ
                await new Promise(r => setTimeout(r, Math.pow(2, i) * 1000));
                continue;
            }

            // 他のエラーは即座に返却
            throw new Error(response.data.msg);
        } catch (error) {
            if (i === maxRetries - 1) throw error;
        }
    }

    return null; // フォールバックコンテンツを表示
}

ERROR_CODE_INVALID_PARAMS (4003)

原因:リクエストパラメータが正しくありません。 解決方法
  • 必須パラメータ(unit)が含まれているか確認
  • パラメータ値の形式が正しいか確認
  • パラメータ名に誤りがないか確認
{
    "code": 4003,
    "msg": "Invalid params",
    "result": null
}
パラメータチェックリスト
パラメータ必須有効な値の例
unit必須AD_UNIT_123
pf推奨androidiosweb
lcl推奨ja_JPen_US
theme任意lightdark

エラー処理のベストプラクティス

1. エラーコードに基づく分岐処理

function handleAdResponse(response) {
    switch (response.code) {
        case 0:
            // 成功 - 広告をレンダリング
            renderAd(response.result);
            break;
        case 4000:
            // ユニットIDエラー - ログ記録
            console.error('Invalid unit ID');
            break;
        case 4001:
        case 4002:
            // 広告なし - フォールバックコンテンツを表示
            showFallbackContent();
            break;
        case 4003:
            // パラメータエラー - 開発者に通知
            console.error('Invalid parameters:', response.msg);
            break;
        default:
            // 不明なエラー
            console.error('Unknown error:', response.code, response.msg);
    }
}

2. フォールバックコンテンツの準備

function showFallbackContent() {
    const container = document.getElementById('ad-container');
    container.innerHTML = `
        <div class="fallback-content">
            <img src="/images/house-ad.jpg" alt="House Ad" />
        </div>
    `;
}

3. モニタリングとロギング

function logAdError(code, message, params) {
    // エラー発生率をモニタリング
    analytics.track('ad_error', {
        error_code: code,
        error_message: message,
        unit_id: params.unit,
        timestamp: new Date().toISOString()
    });
}

HTTPステータスコード

REST APIは標準HTTPステータスコードも返します。
HTTPステータス説明
200リクエスト成功(エラーコードはレスポンスボディで確認)
401認証失敗(App Keyを確認)
500サーバー内部エラー
HTTP 200でもレスポンスボディのcode値を必ず確認してください。ビジネスロジックエラーはレスポンスボディに含まれます。

関連ドキュメント