NuminorBeta

开发者

构建数据 API

订阅构建数据产品、生成 API 密钥,即可以签名 URL parquet 形式获取每日更新的因子数据。REST 接口,Bearer 鉴权,无需 SDK。

快速开始

  1. 1

    在 /lab/data 订阅产品 — 每个订阅都会授予您的密钥访问该产品数据的权限。

  2. 2

    在账户页面生成 API 密钥。完整密钥仅显示一次,请妥善保存。

  3. 3

    发起第一个请求 — manifest 端点是验证密钥与订阅是否生效的最省事方式:

curl -H "Authorization: Bearer $NUMINOR_KEY" \
  https://api.numinor.io/v1/constructs/sam-amplifier/manifest

鉴权

每个请求都以 Bearer token 形式发送密钥。一个密钥即可访问您订阅的所有产品(权限由您的有效订阅决定)。沙盒层密钥不提供 REST 原始导出 — 这是 API 层功能。

Authorization: Bearer nm_live_…

核心概念

时点延迟
API 层提供当前数据;沙盒内层延迟 30 天。每一行都明确标注时点(PIT),确保回测无前视偏差。
签名 URL
数据端点返回短时效签名 S3 URL(约 4 小时)。直接从 S3 下载 parquet — 该传输不计量、不限流。
Parquet 格式
所有文件均为 Apache Parquet。可用 pyarrow、DuckDB 或 polars 读取 — 常见场景无需服务端查询端点。
速率限制
每个密钥每分钟最多 1000 次请求。超限返回 429 并附带 Retry-After 响应头。

端点参考

基础 URL: https://api.numinor.io/v1

GET/constructs/{sku}/manifest

产品的数据新鲜度、覆盖范围与签名 URL 有效期。

参数位置说明
sku*path产品标识,例如 sam-amplifier。
curl -H "Authorization: Bearer $NUMINOR_KEY" \
  https://api.numinor.io/v1/constructs/sam-amplifier/manifest
响应示例
{
  "sku": "sam-amplifier-construct-v1",
  "tier": "api",
  "status": "green",
  "latest_trade_date": "2026-06-18",
  "signed_url_ttl_seconds": 14400,
  "historical_coverage": {
    "start": "2016-01-04",
    "end": "2026-06-18"
  }
}
GET/constructs/{sku}/day/{date}

指向某一交易日分区的签名 URL。

参数位置说明
sku*path产品标识,例如 sam-amplifier。
date*path交易日,格式 YYYYMMDD 或 YYYY-MM-DD。
# get a signed URL for one trading day, then download the parquet
curl -H "Authorization: Bearer $NUMINOR_KEY" \
  https://api.numinor.io/v1/constructs/sam-amplifier/day/20260515
响应示例
{
  "url": "https://numinor-construct-data.s3.ap-northeast-2.amazonaws.com/…&X-Amz-Signature=…",
  "trade_date": "2026-05-15",
  "expires_in": 14400,
  "format": "parquet"
}
GET/constructs/{sku}/range

日期区间(含端点)内每个已发布交易日的签名 URL。

参数位置说明
sku*path产品标识,例如 sam-amplifier。
start*query区间起始(含),YYYYMMDD。
end*query区间结束(含),YYYYMMDD。
curl -H "Authorization: Bearer $NUMINOR_KEY" \
  "https://api.numinor.io/v1/constructs/sam-amplifier/range?start=20260501&end=20260531"
响应示例
{
  "sku": "sam-amplifier-construct-v1",
  "tier": "api",
  "count": 21,
  "days": [
    {
      "trade_date": "2026-05-06",
      "url": "https://…signed…"
    }
  ],
  "format": "parquet"
}
GET/constructs/{sku}/historical

指向完整历史批量文件(2016 至今)的签名 URL。

参数位置说明
sku*path产品标识,例如 sam-amplifier。
curl -H "Authorization: Bearer $NUMINOR_KEY" \
  https://api.numinor.io/v1/constructs/sam-amplifier/historical
响应示例
{
  "url": "https://…signed-bulk-file…",
  "expires_in": 14400,
  "format": "parquet"
}
POST/constructs/{sku}/query

内联筛选查询 — 规划中(目前返回 501)。

参数位置说明
sku*path产品标识,例如 sam-amplifier。
# roadmap — returns 501 today
curl -X POST -H "Authorization: Bearer $NUMINOR_KEY" \
  https://api.numinor.io/v1/constructs/sam-amplifier/query
响应示例
{
  "ok": false,
  "error": "not_implemented",
  "detail": "Roadmap — fetch signed URLs via /day or /range and read the parquet locally."
}

错误码

状态错误含义
401missing_bearer_token · invalid_api_key缺少或无效的 API 密钥。
403not_subscribed · rest_requires_api_tier您的密钥没有该产品的 API 层订阅(或仅有沙盒层)。
404unknown_construct · no_partition未知产品,或该日期无已发布分区。
400bad_date · bad_range · missing_params日期或区间格式有误,或缺少查询参数。
413range_too_large区间跨越天数过多 — 请改用历史批量文件。
429rate_limited超出速率限制(1000/分钟)。请遵循 Retry-After 响应头。
501not_implemented该端点尚在规划中,暂未实现。

产品

准备好开发了?先查看定价,再生成密钥。