株価指数APIリファレンス
18の指数の水準と履歴
概要
18の株価指数とボラティリティ指数の水準と水準の履歴。すべてのリクエストに Bearer キーが必要で、REST と MCP は同じクレジット残高を使います。
ID は指数の標準コードです。たとえば S&P 500 は SPX、Nasdaq-100 は NDX、ダウ工業株30種平均は DJI です。大文字小文字は問いません。一覧ルートは、すべての ID を名称、地域、通貨とともに返します。
指数の日次履歴が揃うと、価格には前日終値、変化、パーセント単位の変化が含まれます。
ベースURL: https:/。 MCP ツールは次のとおりです: indices, with one action 以下の各ルートに対応します。
すべてのアカウントで利用できるもの
| 課金額 | すべてのアカウント |
|---|---|
| 最新の水準 | ライブ |
| 日次バー | 全期間の履歴 |
| 1分足バー | 過去12か月 |
| 指数一覧 | 含まれる |
参照: 料金表 で、呼び出し1回の料金を確認できます。ルートに別の記載がない限り、リクエストはそのAPIの料金で課金されます。
- 履歴は、保有している時点から始まります。S&P 500 は2023年2月からです。
- ボラティリティ指数(VIX、OVX、GVZ)は金額ではないため、レスポンスに通貨は含まれません。
- market_session は、指数の公表された取引時間にもとづき open または closed になります。closed の指数は直近の水準を返し、古い値(stale)にはなりません。open の指数は、水準が15分より古いと古い値(stale)になります。
- 日次バーは1取引日分で、00:00 UTC に現れます。当日の途中のバーは表示されません。
- バーに出来高はありません。1分バーは12か月分を保持し、1回のリクエストで取得できるのは最大5日分です。
- バッチは最大50件の ID を受け付け、水準を返した ID ごとに1回の呼び出しとして数えます。不明な ID は errors に並び、数えません。
エンドポイント
すべてのルートは GET で、キーを次のヘッダーで渡す必要があります: Authorization: Bearer ヘッダー。例はレスポンスの形を示すもので、ライブデータではありません。
価格を提供している指数
GET /v1/indices
価格を提供しているすべての指数系列を、ID 順に名称と単位とともに返します。自社の一覧から読むため、すべてのアカウントで利用でき、1回の呼び出しとして数えます。
MCP: ツール indices, action list。
パラメータ
このルートにパラメーターはありません。
レスポンスフィールド
| フィールド | 種別 | 送信 | 意味 |
|---|---|---|---|
indices | オブジェクトの配列 | 常に | 価格を提供しているすべての指数を、ID 順に返します。 |
indices[].id | 文字列 | 常に | 指数コード(例: SPX)。 |
indices[].name | 文字列 | 常に | 指数の名称。 |
indices[].region | us、uk、europe、global、asia のいずれか | 常に | 構成銘柄が取引される地域。 |
indices[].currency | 文字列 | 任意 | 指数の通貨。金額ではないボラティリティ指数では省略されます。 |
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/indices"{
"indices": [
{
"id": "SPX",
"name": "S&P 500",
"region": "us",
"currency": "USD"
},
{
"id": "VIX",
"name": "Cboe Volatility Index",
"region": "us"
}
]
}指数系列1件の最新価格
GET /v1/indices/{id}/price
最新価格です。market_ は系列の取引時間にもとづき open または closed になります。closed の系列は直近価格を返し、stale が true になるのは、open の系列で直近15分以内の価格がない場合のみです。previous_ は前取引日の終値で、change_ はパーセント単位です。
MCP: ツール indices, action price。
パラメータ
| パラメータ | 場所 | 必須 | 種別 | 意味 |
|---|---|---|---|---|
id | パス | はい | 文字列 | 指数 ID(例: SPX、NDX、DJI)。大文字小文字は問いません。 |
レスポンスフィールド
| フィールド | 種別 | 送信 | 意味 |
|---|---|---|---|
id | 文字列 | 常に | 指数コード。 |
name | 文字列 | 常に | 自社のシンボル一覧にあるとおりの名称。 |
currency | 文字列 | 任意 | 指数の通貨。金額ではないボラティリティ指数では省略されます。 |
price | 文字列 | 常に | 指数の直近の水準。 |
previous_ | 文字列 | 任意 | 前取引日の終値。不明な場合は省略されます。 |
change | 文字列 | 任意 | price から previous_ を引いた値。 |
change_ | 文字列 | 任意 | パーセント単位の変化(1.5 は 1.5% を意味します)。change と同時に省略されます。 |
market_ | open、closed のいずれか | 常に | 系列が公表された取引時間内で取引されている間は open、それ以外は closed です。closed の系列も直近価格を返します。取引時間内の休日は open と表示され、stale になります。 |
timestamp | 日時 | 常に | 価格が有効だった時刻(UTC、秒単位)。 |
stale | ブール値 | 常に | 系列が open で、価格が15分より古い場合、または更新できなかった場合に true。closed の系列は古い値(stale)になりません。 |
delayed | 常に true | 任意 | 送信されません。価格はすべてのアカウントでリアルタイムです。 |
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/indices/SPX/price"{
"id": "SPX",
"name": "S&P 500",
"currency": "USD",
"price": "7696.46",
"previous_close": "7681.2",
"change": "15.26",
"change_percent": "0.2",
"market_session": "open",
"timestamp": "2026-10-29T18:38:00Z",
"stale": false
}最大50の指数系列の最新価格
GET /v1/indices/prices
指定した各 ID の最新価格を返します。価格を返した ID ごとに1回の呼び出しとして数え、一括で課金します。解決できた ID の分を残高で支払えない場合、リクエスト全体が 402 insufficient_credits で拒否されます。価格を返さなかった ID は errors に(id として)並び、課金されません。どの ID も解決できなくてもレスポンスは 200 で、prices は空になります。previous_ は前取引日の終値で、change_ はパーセント単位です。
ID は最大50件まで送れます。バッチは一括で課金されます。解決できた ID の分を残高で払えない場合、リクエスト全体が 402 insufficient_credits を返します。
MCP: ツール indices, action prices。
パラメータ
| パラメータ | 場所 | 必須 | 種別 | 意味 |
|---|---|---|---|---|
ids | クエリ | はい | 文字列 | カンマ区切りの ID。重複を除いて最大50件です。各 ID は単一価格ルートと同じ規則に従います。価格を返した ID ごとに1回の呼び出しとして数えます。 |
レスポンスフィールド
| フィールド | 種別 | 送信 | 意味 |
|---|---|---|---|
prices | オブジェクトの配列 | 常に | 解決できた ID ごとに1つの価格を、ID をキーにして返します。 |
prices[].id | 文字列 | 常に | 指数コード。 |
prices[].name | 文字列 | 常に | 自社のシンボル一覧にあるとおりの名称。 |
prices[].currency | 文字列 | 任意 | 指数の通貨。金額ではないボラティリティ指数では省略されます。 |
prices[].price | 文字列 | 常に | 指数の直近の水準。 |
prices[].previous_ | 文字列 | 任意 | 前取引日の終値。不明な場合は省略されます。 |
prices[].change | 文字列 | 任意 | price から previous_ を引いた値。 |
prices[].change_ | 文字列 | 任意 | パーセント単位の変化(1.5 は 1.5% を意味します)。change と同時に省略されます。 |
prices[].market_ | open、closed のいずれか | 常に | 系列が公表された取引時間内で取引されている間は open、それ以外は closed です。closed の系列も直近価格を返します。取引時間内の休日は open と表示され、stale になります。 |
prices[].timestamp | 日時 | 常に | 価格が有効だった時刻(UTC、秒単位)。 |
prices[].stale | ブール値 | 常に | 系列が open で、価格が15分より古い場合、または更新できなかった場合に true。closed の系列は古い値(stale)になりません。 |
prices[].delayed | 常に true | 任意 | 送信されません。価格はすべてのアカウントでリアルタイムです。 |
errors | オブジェクトの配列 | 常に | 価格を返さなかった ID。課金されません。 |
errors[].id | 文字列 | 常に | リクエストで指定された ID そのまま。 |
errors[].code | 常に "not_found" | 常に | not_found: そのような系列はありません。 |
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/indices/prices?ids=SPX,NDX,DJI"{
"prices": [
{
"id": "SPX",
"name": "S&P 500",
"currency": "USD",
"price": "7696.46",
"previous_close": "7681.2",
"change": "15.26",
"change_percent": "0.2",
"market_session": "open",
"timestamp": "2026-10-29T18:38:00Z",
"stale": false
},
{
"id": "NDX",
"name": "Nasdaq-100",
"currency": "USD",
"price": "27310.5",
"previous_close": "27264.9",
"change": "45.6",
"change_percent": "0.17",
"market_session": "open",
"timestamp": "2026-10-29T18:38:00Z",
"stale": false
}
],
"errors": [
{
"id": "XX",
"code": "not_found"
}
]
}指数系列1件の価格バー
GET /v1/indices/{id}/bars
日次(1d。1取引日につき1バー)または1分(1m)のバーを古い順に返します。1日のバーは、その翌日の 00:00 UTC に出ます。当日の途中のバーは表示されません。1分バーは12か月分を保持します。履歴はすべてのアカウントで全期間を取得できます。1ページ最大5,000バーで、next_ を返します。1ページにつき1回の呼び出しです。
MCP: ツール indices, action bars。
パラメータ
| パラメータ | 場所 | 必須 | 種別 | 意味 |
|---|---|---|---|---|
id | パス | はい | 文字列 | 指数 ID(例: SPX、NDX、DJI)。大文字小文字は問いません。 |
interval | クエリ | いいえ | 次のいずれか: 1d, 1m | 1d(1取引日につき1バー。属する日の日付)または 1m(1分バー。12か月分を保持)。それ以外は 400 invalid_interval です。 |
start | クエリ | いいえ | 文字列 | 最初のバー。1d では日付(YYYY-MM-DD)で、その日を含みます。省略すると存在する最古のバーになります。1m では UTC の時刻(YYYY-MM-DDTHH:MM:SSZ、または日付のみで UTC 00:00)で、その時刻を含みます。省略すると end の1日前になります。 |
end | クエリ | いいえ | 文字列 | 最後のバー。1d では日付で、その日を含みます。省略すると、確定済みの最新の日です。1m では UTC の時刻で、その時刻を含みません。省略すると現在時刻、または start の5日後です。1m では start と end の間は最大5日です(400 range_too_large)。 |
cursor | クエリ | いいえ | 文字列 | 前のページの next_。パラメーターは同じものを使います。 |
レスポンスフィールド
| フィールド | 種別 | 送信 | 意味 |
|---|---|---|---|
id | 文字列 | 常に | |
currency | 文字列 | 任意 | 指数の通貨。金額ではないボラティリティ指数では省略されます。 |
start | 文字列 | 任意 | 送信されません。start は動かされません。 |
end | 文字列 | 任意 | 送信されません。日足は切り詰められません。 |
bars | オブジェクトの配列 | 常に | 1ページ最大5,000本。 |
bars[].timestamp | 日時 | 常に | バーの期間の開始(UTC)。日次バーは取引日の 00:00、1分バーはその分の開始です。 |
bars[].open | 文字列 | 常に | 期間の最初の価格。 |
bars[].high | 文字列 | 常に | 期間の最高価格。 |
bars[].low | 文字列 | 常に | 期間の最安価格。 |
bars[].close | 文字列 | 常に | 期間の最後の価格。 |
next_ | 文字列 | 常に | 次のページを読むには、この値を渡します。最後のページでは null です。 |
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/indices/SPX/bars?interval=1d&start=2026-10-01"{
"id": "SPX",
"currency": "USD",
"bars": [
{
"timestamp": "2026-10-28T00:00:00Z",
"open": "7655.1",
"high": "7702.4",
"low": "7640.8",
"close": "7681.2"
}
],
"next_cursor": null
}エラー
エラーは共通の problem 形式で返され、次のコードを含みます: request_。参照: APIエラーとクレジット で形式とクレジットヘッダーを確認できます。失敗したリクエストには課金されません。
| コード | ステータス | 意味 |
|---|---|---|
invalid_ | 400 | パラメータが欠けている、未知である、重複している、または範囲外です。 |
invalid_ | 400 | ID またはペアが、この API の想定する書き方になっていません。 |
too_ | 400 | バッチに50件を超える ID が含まれています。 |
invalid_ | 400 | インターバルが 1d でも 1m でもないか、この銘柄では使えません。 |
range_ | 400 | 期間がルートの許容範囲を超えています。 |
not_ | 404 | そのような銘柄、ファンド、ペアはありません。 |
invalid_ | 400 | このカーソルは、このリクエストが返したものではないか、別のリクエストのものです。 |
insufficient_ | 402 | クレジット残高が、リクエストの費用に足りません。 |
area_ | 503 | この領域は現在応答できません。 |
このページは役に立ちましたか?