Guides / Rate limits

レート制限とクォータ

どちらの API にも、短い時間枠の上限(Data API は1分あたり、PRO API は1秒あたり)と1日のクォータを併せて適用します。1日の区切りは韓国時間(KST)の0時です。

Data API

Data API の等級別上限
等級1分あたりのリクエスト1日のリクエストAI 呼び出し(1日)
Launch120回3,334回50回
Business600回16,667回200回
Scale1,800回66,667回500回
Enterprise6,000回標準 1,000,000回 · 契約に応じてアカウントごとに調整標準の上限なし

すべての等級ですべてのエンドポイントをご利用いただけます。Launch・Business・Scale の1日の上限は、契約した月間の利用枠(100,000・500,000・2,000,000回)を30で割り、切り上げた値です。月間の利用枠で呼び出しを止めることはなく、1日の上限と1分あたりの上限のみを適用します。

PoC(トライアル、基本7日間)

PoC では、契約を予定している目標等級(Launch・Business・Scale)を決め、その等級のトライアル上限ですべてのエンドポイントをご利用いただけます。目標等級を決めない場合は Launch です。期間は基本7日間で、アカウントの発行時点から数えます。期間はご相談のうえ調整できます。

PoC の目標等級別上限
PoC の目標等級1分あたりのリクエスト1日のリクエストAI 呼び出し(1日)
Launch60回2,000回20回
Business300回8,000回80回
Scale900回30,000回200回
  • 1分あたりの上限はキーごとにカウントします。そのキーの最初のリクエストから60秒が1つの時間枠で、枠が終わると次のリクエストから新しい枠が始まります。上限を超えたリクエストもその枠にカウントされます。
  • 1日のクォータはアカウント単位のため、同じアカウントのすべてのキーで共有します。日付は韓国時間基準で(X-Quota-Period)、1分あたりの上限で拒否されたリクエストは1日のクォータにカウントしません。
  • 表の数値は等級の標準値です。契約に応じてアカウントごとに調整でき、現在適用中の値は GET /key または開発者コンソールで確認できます。
  • 契約外の市場(銘柄・market)へのリクエストは、上限をカウントする前に 403 MARKET_NOT_ENTITLED で拒否します。日本・中国は準備中のため 400 MARKET_NOT_AVAILABLE です。拒否されたリクエストは1分あたりの上限・1日のクォータ・AI 呼び出し上限にカウントしません。
  • PoC 期間が終了するとアカウントが停止します。アカウントのすべてのキーに 403 POC_ENDED が返り、期間の延長または正式契約のあと、同じキーで再びご利用いただけます。
  • 有料等級の契約期間が終了するとアカウントは Free に切り替わり、Free で利用できないエンドポイントは 403 PLAN_REQUIRED を返します。
  • 以前に発行した無料トライアルキー(ニュース・検索、1日10回 · 1分1回)は引き続きご利用いただけますが、新規発行は行っていません。

レスポンスヘッダー

Data API の上限ヘッダー
ヘッダー意味
X-RateLimit-Limit1分あたりの上限
X-RateLimit-Remaining現在の時間枠で残っているリクエスト数
X-Quota-Limit1日の上限(アカウント)
X-Quota-Remaining本日の残りリクエスト数
X-Quota-Periodクォータの日付(韓国時間、YYYY-MM-DD)
X-Quota-Reset1日のクォータが再び利用可能になる次の韓国時間0時(ISO 8601)
X-Planプラン(Free · PoC · Launch · Business · Scale · Enterprise)
X-Plan-TierPoC の目標等級(Launch · Business · Scale)。それ以外は現在のプラン
X-Plan-Expiresプランの終了日時。期間のないプランでは付きません
X-Markets契約中の市場(例: KR,US)
Retry-After429 の場合に、再試行できるまでの残り秒数(1分あたりの上限は時間枠の終わり、1日・AI の上限は次の韓国時間0時まで)

AI 呼び出し上限

モデルの利用コストが発生する呼び出しは、通常の1日の上限とは別にアカウントあたり韓国時間の1日単位でカウントします。上限は上の表の等級別の値で(PoC は目標等級のトライアル上限)、Enterprise には標準の AI 上限はありません。

  • カウント対象: GET /rag(回答モデルを実際に呼び出した場合のみ)、GET /disclosures/{id}/summary・GET /briefings/{symbol}(保存済みのものがなく新たに生成する場合、または fresh=true で再生成する場合のみ)。POST /query はモデルを呼び出さない計算のためカウントしません。同じアカウントで PRO API を利用している場合は、質問・要約生成(MCP を含む)と同じカウンターを共有します。
  • 上限を超えると、429 AI_QUOTA_EXCEEDED と韓国時間の0時までの Retry-After が返ります。通常のデータ呼び出しは引き続き利用できます。
  • 契約により AI 呼び出しの月間上限を設定できます(Enterprise を含む)。1か月はプランの開始日時から韓国時間で数えます。超えると 429 AI_MONTHLY_QUOTA_EXCEEDED と次の周期(またはプラン終了)までの Retry-After が返ります。月間上限のあるアカウントには X-AI-Quota-Monthly-Limit・X-AI-Quota-Monthly-Remaining・X-AI-Quota-Monthly-Reset ヘッダーも付きます。
  • 残り回数は、該当エンドポイントのレスポンスヘッダー X-AI-Quota-Limit・X-AI-Quota-Remaining・X-AI-Quota-Reset、GET /key の ai_quota、開発者コンソールで確認できます。

PRO API

PRO API のプラン別上限
プラン1日の呼び出し(標準)1秒あたり(標準)含まれる内容
Data1,000回2回AI 開示要約のオンデマンド生成 1日50件
Ask1,000回2回対話型の質問 月300回を含む · 1日最大300回(Web 版 PRO と合算)
Bundle1,000回2回Data と Ask の両方
  • 1秒あたりの上限は、キーごとにトークンバケット方式でカウントします。1秒あたり2回の場合、2回を連続で送ったあとは0.5秒ごとに1回ずつ再び送れるようになります。同じキーで接続した MCP ツールの呼び出しも同じバケットを使います。
  • 1日の呼び出しはアカウント単位で、REST と MCP ツールの呼び出しを合算してカウントします。GET /me と GET /ask/{job_id} は1日の呼び出しにカウントしません(1秒あたりの上限は適用されます)。
  • AI コストの上限: AI 開示要約のオンデマンド生成と対話型の質問は、アカウントの月間 AI コスト上限の範囲内で処理します。上限に達すると 402 BUDGET_EXCEEDED が返りますが、保存済みの要約は引き続き取得できます。
  • 上記の数値はプランの標準値です。契約に応じてアカウントごとに調整でき、現在適用されている値は GET /me で確認できます。
  • プラン期間が終了すると、次のリクエストから 403 PLAN_EXPIRED が返ります。開始前の場合は PLAN_NOT_STARTED、停止・解約された場合は PLAN_INACTIVE、プランがない場合は PLAN_REQUIRED です。

レスポンスヘッダー

PRO API の上限ヘッダー
ヘッダー意味
X-RateLimit-Limit1秒あたりの上限
X-RateLimit-Remaining現時点で残っているリクエスト数
X-Quota-Limit1日の呼び出し上限(アカウント)
X-Quota-Remaining本日の残り呼び出し数
X-Quota-Reset次の韓国時間0時(ISO 8601、UTC)
X-Quota-Periodクォータの日付(韓国時間、YYYY-MM-DD)
X-Budget-Remaining今月の AI コストの残額(USD)
X-Ask-Remaining本日の残り質問数(Web 版 PRO を含む)
Retry-After429 の場合に、再試行できるまでの残り秒数(1日の上限超過を含む)

再試行

  • 429: Retry-After がある場合は、その秒数だけ待ってから再送します。
  • 503 UNAVAILABLE: 少し時間をおいて、指数バックオフで再試行します。
  • それ以外の 4xx は、同じリクエストを再送しても結果は変わりません。エラーコードを確認してリクエストを修正してください。

JavaScript — Retry-After に従う再試行

javascript
// 429 は Retry-After の秒数だけ待ち、503 は短い間隔でバックオフしてから再試行します。それ以外の 4xx は再試行しません。
async function callWithRetry(url, init, attempts = 4) {
  for (let i = 0; ; i++) {
    const res = await fetch(url, init);
    if (res.ok || i === attempts - 1) return res;
    if (res.status === 429) {
      const wait = Number(res.headers.get("Retry-After"));
      if (!Number.isFinite(wait) || wait > 60) return res; // 1日のクォータ超過など、長い待機は呼び出し側で処理
      await new Promise((r) => setTimeout(r, wait * 1000));
    } else if (res.status === 503) {
      await new Promise((r) => setTimeout(r, 2 ** i * 500 + Math.random() * 250));
    } else {
      return res;
    }
  }
}

さらに上限が必要な場合

Data API は上位等級の契約またはアカウントごとの調整で、PRO API はプランの調整で上限を引き上げられます。利用申請または導入のお問い合わせから、想定の利用量と用途をお知らせください。