メインコンテンツまでスキップ

エラー

すべてのエラーレスポンスは同じ形です。

{
"ok": false,
"error": {
"code": "E_UNKNOWN_MATERIAL",
"message": "Material 'allpvs' not found in manifest.",
"at": "materials[0].name"
}
}
  • code — 安定した機械可読エラーコード。クライアントは message ではなく code で分岐すること。
  • message — 人間が読める説明。文言はリリース間で変わる可能性あり。
  • at — リクエストボディ内の該当値への JSON-pointer 風パス。フィールド固有のエラーのときだけ存在。

正式なエラーコード

認証 / 認可

HTTPコード発生条件
401E_UNAUTHORIZEDAuthorization ヘッダが無いか無効
403E_FORBIDDEN認証は成功したが、このユーザーはこの tracking_id にアクセスできない

リクエスト構造

HTTPコード発生条件
400E_INVALID_JSONボディが JSON としてパースできない
400E_MISSING_FIELD必須トップレベルフィールドが無い
400E_UNKNOWN_FIELD認識できないトップレベルキーがある
400E_TIME_REQUIREDtime.start / time.end / time.tz のどれかが無い
400E_INVALID_TZtime.tz が有効な IANA タイムゾーンでない
400E_INVALID_TIME_RANGEtime.end <= time.start、または範囲がありえない値

Materials / Views / Result

HTTPコード発生条件
400E_UNKNOWN_MATERIAL仕様書に存在しないマテリアル名
400E_UNKNOWN_VIEWresult.usemake で定義されていないビューを参照
400E_UNKNOWN_COLUMNkeep / filter / sort がマテリアルに存在しないカラムを参照
400E_DUPLICATE_VIEWmake 内で同名ビューが複数
400E_LIMIT_REQUIREDcount_only でないのに result.limit が無い

機能

HTTPコード発生条件
400E_FEATURE_DISABLEDこのサーバーで enabled: false の機能を使っている
400E_FEATURE_NOT_AVAILABLE機能は存在するが、サーバーの api_update が機能の since より古い

実行

HTTPコード発生条件
400E_BAD_JOIN宣言されていない JOIN キーで JOIN しようとした
400E_CARDINALITY_GUARDJOIN で行数が安全閾値を超えそう (例: フィルタなしの gscallpv)
500E_EXECUTOR_FAILED内部実行エラー。ジッター付きで1回だけリトライ可
504E_TIMEOUTクエリがサーバーの時間予算を超えた。time を狭める、フィルタを足す、または高価な JOIN を落とす

リトライ戦略

  • 401/403 — リトライしない。認証情報を直す。
  • 400 (構造系) — 盲目的にリトライしない。クライアント側のバグ。AI クライアントが 400 を受けたら、スキーマが動いている可能性があるので /guide を読み直してクエリを再考する。
  • 500 — ジッター付きで1回リトライ。
  • 504 — 同じクエリをリトライしない。リクエストを狭める。

次に読むページ