Quickstart
不需要安装任何 SDK。有 HTTP 客户端就够了。
curl -H "Authorization: Bearer $SQUAWK_API_KEY" \ "https://api.squawkquant.com/v1/bars/1m/AAPL\ ?start=2026-08-19&end=2026-08-19&session=regular"
import os, requests, pandas as pd
r = requests.get(
"https://api.squawkquant.com/v1/bars/1m/AAPL",
params={"start": "2026-08-19", "end": "2026-08-19"},
headers={"Authorization": f"Bearer {os.environ['SQUAWK_API_KEY']}"},
timeout=30,
)
r.raise_for_status()
body = r.json()
df = pd.DataFrame(body["data"]["AAPL"], columns=body["meta"]["columns"])
df[["o", "h", "l", "c"]] /= body["meta"]["price_scale"]const res = await fetch(
"https://api.squawkquant.com/v1/bars/1m/AAPL?start=2026-08-19&end=2026-08-19",
{ headers: { Authorization: `Bearer ${process.env.SQUAWK_API_KEY}` } },
);
if (!res.ok) throw new Error((await res.json()).title);
const { data, meta } = await res.json();
const bars = data.AAPL.map((row) =>
Object.fromEntries(meta.columns.map((c, i) => [c, row[i]])),
);req, _ := http.NewRequest("GET",
"https://api.squawkquant.com/v1/bars/1m/AAPL"+
"?start=2026-08-19&end=2026-08-19", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SQUAWK_API_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil { log.Fatal(err) }
defer resp.Body.Close()
var out struct {
Data map[string][][]any `json:"data"`
Meta struct{ Columns []string `json:"columns"` } `json:"meta"`
}
json.NewDecoder(resp.Body).Decode(&out) {
"data": {
"AAPL": [
[1787146200, 2266714, 2267334,
2263072, 2263483, 13078, 85,
2264630, "regular"]
]
},
"meta": {
"columns": ["ts","o","h","l","c",
"v","n","vw","session"],
"price_scale": 10000,
"as_of": "2026-08-19T20:00:00Z",
"partial": false,
"count": 390
}
} Features
不只是把数据丢给你,还告诉你数据的边界在哪里。
每个交易日、每个标的的实际 K 线数与预期数都可查询。你能把「数据缺失」和「那分钟本来就没成交」区分开 —— 这是做严肃回测的前提。
GET /v1/coverage 供应商事后修正过的 K 线会留下完整记录:旧值、新值、检测时间。多数廉价 API 静默改数据,你永远不知道自己缓存的历史已经过期。
GET /v1/corrections 日内分析要的是真实成交价。我们不回溯改写历史,拆股分红单独提供,你按需自行换算 —— 昨天拉的数据今天不会变。
GET /v1/corporate-actions 交易日历直接给出每天的盘前、常规、盘后边界(含半日与夏令时)。你不必自己维护一份美东时区换算 —— 那正是最容易出错的地方。
GET /v1/calendar 所有价格以 ×10000 的整数返回。你拿我们的数据和别家逐根对账时,不会因为浮点舍入产生伪差异。
price_scale: 10000 结果被 limit 截断时 meta.partial 为 true。我们绝不用「200 + 空数组」表示失败 —— 出错就是出错的状态码。
meta.partial FAQ
不可以。订阅仅授权你在自己的应用与策略中使用。把数据原样或经轻微加工后转售、公开展示给第三方,需要单独的再分发授权 —— 这受我们上游供应商合同约束。有此需求请先联系我们。
秒级与逐笔数据供内部系统使用,对外统一提供 1 分钟。这既是产品定位,也让我们能对完整率做出可兑现的承诺。
每根 K 线在其收盘后约 5~10 秒可查询。我们建议每分钟轮询一次;`/v1/snapshot` 的 `meta.as_of` 会告诉你数据截止到哪一分钟,据此判断是否有新数据即可,不必高频空转。
当前只提供 REST 拉取。1 分钟粒度下每分钟轮询一次完全够用,且实现更简单、更容易排障。推流在我们的二期规划中。
S&P 500 成分股与主流 ETF,约 500 支。完整清单可通过 `GET /v1/symbols` 查询。
控制台可立即吊销。也支持带宽限期的轮换:新旧密钥在宽限期内同时有效,让你先完成部署再淘汰旧密钥,避免计划内停服。