股價指數 API 參考文件
18 種指數的點位與歷史資料
概覽
18 種股價與波動率指數的點位與歷史點位。每個請求都需要 Bearer 金鑰,REST 與 MCP 共用同一個額度餘額。
id 是指數的標準代碼,例如 SPX 代表 S&P 500,NDX 代表 Nasdaq-100,DJI 代表道瓊工業平均指數。大小寫皆可。清單路由會回傳每個 id 及其名稱、地區與幣別。
指數的日資料就緒後,價格會附上前收盤價、漲跌與漲跌幅。
基礎網址: https:/。 MCP 工具是 indices, with one action ,適用於下列每個路由。
每個帳戶都能取得的內容
| 費用 | 所有帳戶 |
|---|---|
| 最新點位 | 在線 |
| 日線柱狀數據 | 完整歷史資料 |
| 1 分鐘 K 線 | 最近 12 個月 |
| 指數清單 | 已包含 |
查看 定價 說明每次呼叫的費用。除非路由另有說明,請求依其所屬 API 的價格計費。
- 歷史資料從我們持有的起點開始。S&P 500 自 2023 年 2 月起。
- 波動率指數(VIX、OVX、GVZ)不是金額,因此其回應不含幣別。
- market_session 依指數公布的交易時段為 open 或 closed。已收市的指數會回傳最後點位,且不算過時。開市中的指數若點位超過 15 分鐘未更新,即為過時。
- 日 K 線涵蓋一個交易日,於 00:00 UTC 出現。當日尚未完成的 K 線不會顯示。
- K 線不含成交量。一分鐘 K 線保留 12 個月,單一請求最多涵蓋 5 天。
- 一個批次最多包含 50 個 id,每個回傳點位的 id 計為一次呼叫。未知的 id 會列在 errors,且不計次。
端點
每個路由都是 GET 請求,並需要將你的金鑰放在以下請求標頭中: Authorization: Bearer 標頭。範例僅展示回應的結構,並非即時資料。
提供報價的指數
GET /v1/indices
我們提供報價的所有指數序列,依 id 排序,並附名稱與單位。資料來自我們自己的清單,所有帳號皆可使用,計為一次呼叫。
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"
}
]
}單一指數序列的最新價格
GET /v1/indices/{id}/price
最新價格。market_ 依序列的交易時段為 open 或 closed;已收市的序列會回傳最後價格,只有開市中的序列在最近 15 分鐘內沒有價格時,stale 才為 true。previous_ 是前一個交易日的收盤價,change_ 以百分比表示。
MCP:工具 indices, action price。
參數
| 參數 | 位置 | 必填 | 類型 | 含義 |
|---|---|---|---|---|
id | path | 是 | 字串 | 指數 id,例如 SPX、NDX 或 DJI。大小寫皆可。 |
回應欄位
| 欄位 | 類型 | 傳送 | 含義 |
|---|---|---|---|
id | 字串 | 固定回傳 | 指數代碼。 |
name | 字串 | 固定回傳 | 名稱,依我們代號清單所載。 |
currency | 字串 | 選填 | 指數的計價幣別。波動率指數不是金額,因此省略。 |
price | 字串 | 固定回傳 | 指數的最新點位。 |
previous_ | 字串 | 選填 | 前一個交易日的收盤價。未知時省略。 |
change | 字串 | 選填 | price 減去 previous_。 |
change_ | 字串 | 選填 | 以百分比表示的漲跌幅(1.5 代表 1.5%)。與 change 一併省略。 |
market_ | open、closed 擇一 | 固定回傳 | 序列依公布時段交易時為 open,否則為 closed。已收市的序列仍會回傳最後價格;時段內遇到假日時顯示為 open,並標示為 stale。 |
timestamp | 日期時間 | 固定回傳 | 價格有效的時間(UTC,精確到秒)。 |
stale | 布林值 | 固定回傳 | 序列開市中且價格超過 15 分鐘未更新,或無法更新時為 true。已收市的序列不算過時。 |
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 計為一次呼叫,並一次性扣款:若餘額不足以支付已解析的 id,整個請求會以 402 insufficient_credits 拒絕。未回傳價格的 id 會列在 errors(以 id 表示),不收費;若沒有任何 id 能解析,回應仍為 200,且 prices 為空。previous_ 是前一個交易日的收盤價,change_ 以百分比表示。
最多可傳入 50 個 ID。批次一次扣款:若餘額不足以支付可解析的 ID,整個請求會回傳 402 insufficient_credits。
MCP:工具 indices, action prices。
參數
| 參數 | 位置 | 必填 | 類型 | 含義 |
|---|---|---|---|---|
ids | query | 是 | 字串 | 以逗號分隔的 id,去除重複後最多 50 個。每個 id 的規則與單一價格路由相同。每個回傳價格的 id 計為一次呼叫。 |
回應欄位
| 欄位 | 類型 | 傳送 | 含義 |
|---|---|---|---|
prices | 物件陣列 | 固定回傳 | 每個成功解析的 ID 各有一筆價格,以 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。已收市的序列仍會回傳最後價格;時段內遇到假日時顯示為 open,並標示為 stale。 |
prices[].timestamp | 日期時間 | 固定回傳 | 價格有效的時間(UTC,精確到秒)。 |
prices[].stale | 布林值 | 固定回傳 | 序列開市中且價格超過 15 分鐘未更新,或無法更新時為 true。已收市的序列不算過時。 |
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"
}
]
}單一指數序列的價格 K 線
GET /v1/indices/{id}/bars
日(1d,每個交易日一根 K 線)或一分鐘(1m)K 線,由舊到新排列。某日的 K 線在該日結束後的 00:00 UTC 產生;當日尚未完成的 K 線不會顯示。一分鐘 K 線保留 12 個月。歷史資料:全部,所有帳號皆可取得。每頁最多 5,000 根 K 線,並附 next_。每頁計為一次呼叫。
MCP:工具 indices, action bars。
參數
| 參數 | 位置 | 必填 | 類型 | 含義 |
|---|---|---|---|---|
id | path | 是 | 字串 | 指數 id,例如 SPX、NDX 或 DJI。大小寫皆可。 |
interval | query | 否 | 下列其一:1d、1m | 1d(每個交易日一根 K 線,以所屬日期標記)或 1m(一分鐘 K 線,保留 12 個月)。其他值會回傳 400 invalid_interval。 |
start | query | 否 | 字串 | 第一根 K 線。1d:日期(YYYY-MM-DD),含該日;省略時為最舊的一根。1m:UTC 時間(YYYY-MM-DDTHH:MM:SSZ,或以日期代表 UTC 00:00),含該時間;省略時為 end 的前一天。 |
end | query | 否 | 字串 | 最後一根 K 線。1d:日期,含當日;省略表示最近一個已完成的日子。1m:UTC 時間,不含;省略表示現在,或 start 之後五天。1m 的 start 與 end 最多相隔 5 天(400 range_too_large)。 |
cursor | query | 否 | 字串 | 上一頁的 next_,且參數須與前次相同。 |
回應欄位
| 欄位 | 類型 | 傳送 | 含義 |
|---|---|---|---|
id | 字串 | 固定回傳 | |
currency | 字串 | 選填 | 指數的計價幣別。波動率指數不是金額,因此省略。 |
start | 字串 | 選填 | 不會回傳:start 不會被調整。 |
end | 字串 | 選填 | 不會回傳:日 K 線不會被截斷。 |
bars | 物件陣列 | 固定回傳 | 每頁最多 5,000 根 K 線。 |
bars[].timestamp | 日期時間 | 固定回傳 | K 線所屬期間的起點(UTC):日 K 線為該交易日的 00:00,一分鐘 K 線為該分鐘。 |
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
}錯誤
錯誤使用共用的問題格式,並包含 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 | 此區域目前無法回應。 |
此頁面對你有幫助嗎?