Guides / Rate limits
レート制限とクォータ
どちらの API にも、短い時間枠の上限(Data API は1分あたり、PRO API は1秒あたり)と1日のクォータを併せて適用します。1日の区切りは韓国時間(KST)の0時です。
Data API
| 等級 | 1分あたりのリクエスト | 1日のリクエスト | AI 呼び出し(1日) |
|---|---|---|---|
| Launch | 120回 | 3,334回 | 50回 |
| Business | 600回 | 16,667回 | 200回 |
| Scale | 1,800回 | 66,667回 | 500回 |
| Enterprise | 6,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 の目標等級 | 1分あたりのリクエスト | 1日のリクエスト | AI 呼び出し(1日) |
|---|---|---|---|
| Launch | 60回 | 2,000回 | 20回 |
| Business | 300回 | 8,000回 | 80回 |
| Scale | 900回 | 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回)は引き続きご利用いただけますが、新規発行は行っていません。
レスポンスヘッダー
| ヘッダー | 意味 |
|---|---|
X-RateLimit-Limit | 1分あたりの上限 |
X-RateLimit-Remaining | 現在の時間枠で残っているリクエスト数 |
X-Quota-Limit | 1日の上限(アカウント) |
X-Quota-Remaining | 本日の残りリクエスト数 |
X-Quota-Period | クォータの日付(韓国時間、YYYY-MM-DD) |
X-Quota-Reset | 1日のクォータが再び利用可能になる次の韓国時間0時(ISO 8601) |
X-Plan | プラン(Free · PoC · Launch · Business · Scale · Enterprise) |
X-Plan-Tier | PoC の目標等級(Launch · Business · Scale)。それ以外は現在のプラン |
X-Plan-Expires | プランの終了日時。期間のないプランでは付きません |
X-Markets | 契約中の市場(例: KR,US) |
Retry-After | 429 の場合に、再試行できるまでの残り秒数(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
| プラン | 1日の呼び出し(標準) | 1秒あたり(標準) | 含まれる内容 |
|---|---|---|---|
| Data | 1,000回 | 2回 | AI 開示要約のオンデマンド生成 1日50件 |
| Ask | 1,000回 | 2回 | 対話型の質問 月300回を含む · 1日最大300回(Web 版 PRO と合算) |
| Bundle | 1,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です。
レスポンスヘッダー
| ヘッダー | 意味 |
|---|---|
X-RateLimit-Limit | 1秒あたりの上限 |
X-RateLimit-Remaining | 現時点で残っているリクエスト数 |
X-Quota-Limit | 1日の呼び出し上限(アカウント) |
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-After | 429 の場合に、再試行できるまでの残り秒数(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;
}
}
}