Onmine External API 使用文档

Developer Guide

External API 使用文档

面向已开通订阅服务的开发者、服务端应用和外部 Agent,说明如何使用 API key 调用 Onmine 的 72 个外部只读 API。当前接口只提供稳定数据读取能力, 不提供写入、ingest、刷新任务或 key 管理 HTTP endpoint。

Onmine External API 是面向钱包研究、交易行为分析和风险监控场景的数据访问层, 将已生产的 Hyperliquid 钱包 facts 与 read models 组织为统一的 RESTful 接口。 开发者可以用同一套认证、分页、字段投影和错误结构,读取钱包发现、画像、持仓、 成交、订单、PnL、风险和行为时间序列数据。

该 API 面向生产级服务端集成设计,适合接入自有后端、量化研究脚本、数据看板、 风控系统和外部 Agent 工具层。External API 专注于稳定只读查询,不在请求路径中触发 数据采集、策略执行或 Onmine 内部 Agent runtime。

Base URL: http://127.0.0.1:8010 版本: /v1 72 个 endpoint 只读 API

概览

External API 用于读取钱包发现、画像、综合分析、持仓、成交、订单、PnL、风险、 行为时间序列和当前 key 的用量信息。所有业务数据来自已生成的 facts/read model, 不会在请求路径中触发数据生产。

  • 覆盖核心钱包分析数据 围绕钱包维度提供 discovery、context、detail、analysis、positions、fills、orders、PnL、risk 和 activity 数据。
  • 统一的只读 RESTful 访问模式 接口使用一致的路径结构、Bearer API key、分页参数、字段投影和错误响应,便于服务端与数据系统集成。
  • 面向研究、看板和外部 Agent 适合构建钱包筛选、交易复盘、风险监控、自动化研究流程和工具调用层。
  • 清晰的数据生产边界 API 只读取 data-plane 已生成的 facts/read models,不暴露写入、ingest、刷新任务或内部 Agent 私有 payload。
72 当前 /v1 endpoint 总数
70 钱包数据只读 endpoint
7 业务模块
2 鉴权与用量 endpoint

普通调用

适合用户自己的后端服务、脚本、数据看板或内部系统,按 API key 和 quota 读取数据。

Agent 调用

适合外部 Agent、自动化研究流程或工具调用层,把 Onmine 数据作为只读上下文来源。

生产环境使用时,请将 Base URL 切换为正式域名。本地联调时,前端和后端通常使用 http://127.0.0.1:8010
这里的 Agent 调用指外部 Agent 使用 API key 读取 Onmine 数据;External API 不接入 Onmine 内部 Agent runtime,也不会返回 Agent 私有 payload、watchlist 或 monitor 等用户私有字段。

快速开始

  1. 1 打开订阅服务 在 Onmine 左侧栏进入 订阅服务 > API 密钥
  2. 2 创建 API key 填写 label 创建 API key。创建成功后,完整 key 会显示在当前页面。
  3. 3 保存 key 复制完整 key。后续列表页只展示 key prefix,不会展示完整 key。
  4. 4 调用 health 接口 使用下面的 curl 验证鉴权与服务状态。
curl http://127.0.0.1:8010/v1/health \
  -H "Authorization: Bearer $EXTERNAL_API_KEY"

获取 API key

API key 通过 Onmine 前端创建。当前入口在 订阅服务 > API 密钥,创建、撤销和列表查看都在同一个页面完成。

key prefix

新创建的 External API key 使用 sa_... 前缀。完整 key 只在创建后展示一次。

密钥保存

请按生产密钥管理方式保存,不要放进公开仓库、截图、浏览器客户端代码或可公开访问的日志。

撤销 key 后会立即影响 External API 鉴权。撤销后的请求会返回 403 API_KEY_REVOKED

鉴权

每个请求都需要携带 API key。支持 Authorization: BearerX-API-Key 两种方式。

curl http://127.0.0.1:8010/v1/health \
  -H "Authorization: Bearer sa_xxx"
curl http://127.0.0.1:8010/v1/usage \
  -H "X-API-Key: sa_xxx"

明文 key 只在创建后展示。请避免在日志、截图、文档或公开渠道中暴露完整 key。

接口速览

当前 `/v1` 共 72 个 endpoint,全部需要 API key。`/health` 和 `/usage` 是鉴权与用量接口,其余 70 个按 7 个钱包业务模块组织。

鉴权与用量

2 个 endpoint
  • GET/v1/health
  • GET/v1/usage

1. 钱包发现与筛选

3 个 endpoint
  • GET/v1/wallets/search
  • GET/v1/leaderboards/traders
  • GET/v1/leaderboards/trades

2. 总览与核心分析

4 个 endpoint
  • GET/v1/wallets/{address}/context
  • POST/v1/wallets/context/batch
  • GET/v1/wallets/{address}/detail
  • GET/v1/wallets/{address}/analysis

3. 持仓模块 API

7 个 endpoint
  • GET/v1/wallets/{address}/positions
  • GET/v1/wallets/{address}/positions/by-coin/{coin}
  • GET/v1/wallets/{address}/positions/history
  • GET/v1/wallets/{address}/positions/timeseries
  • GET/v1/wallets/{address}/positions/funding-summary
  • GET/v1/wallets/{address}/positions/by-coin/{coin}/history
  • GET/v1/wallets/{address}/positions/by-coin/{coin}/funding-history

4. 交易与成交模块

19 个 endpoint
  • GET/v1/wallets/{address}/fills
  • GET/v1/wallets/{address}/fills/by-id/{fill_id}
  • GET/v1/wallets/{address}/fills/by-coin/{coin}
  • GET/v1/wallets/{address}/fills/by-time
  • GET/v1/wallets/{address}/fills/fee-breakdown
  • GET/v1/wallets/{address}/fills/summary
  • GET/v1/wallets/{address}/fills/pnl-summary
  • GET/v1/wallets/{address}/fills/coins
  • GET/v1/wallets/{address}/fills/by-tx/{tx_hash}
  • GET/v1/wallets/{address}/fills/largest
  • GET/v1/wallets/{address}/fills/calendar
  • GET/v1/wallets/{address}/orders
  • GET/v1/wallets/{address}/orders/by-id/{order_id}
  • GET/v1/wallets/{address}/orders/by-coin/{coin}
  • GET/v1/wallets/{address}/orders/snapshots
  • GET/v1/wallets/{address}/orders/current
  • GET/v1/wallets/{address}/orders/by-status/{status}
  • GET/v1/wallets/{address}/orders/summary
  • GET/v1/wallets/{address}/orders/recent

5. PnL 模块

12 个 endpoint
  • GET/v1/wallets/{address}/pnl
  • GET/v1/wallets/{address}/pnl/by-fill
  • GET/v1/wallets/{address}/pnl/by-coin
  • GET/v1/wallets/{address}/pnl/by-day
  • GET/v1/wallets/{address}/pnl/history
  • GET/v1/wallets/{address}/pnl/funding
  • GET/v1/wallets/{address}/pnl/fees
  • GET/v1/wallets/{address}/pnl/realized
  • GET/v1/wallets/{address}/pnl/unrealized
  • GET/v1/wallets/{address}/pnl/hourly
  • GET/v1/wallets/{address}/pnl/breakdown
  • GET/v1/wallets/{address}/pnl/comparison

6. 风险模块

13 个 endpoint
  • GET/v1/wallets/{address}/risk
  • GET/v1/wallets/{address}/risk/positions
  • GET/v1/wallets/{address}/risk/positions/by-coin/{coin}
  • GET/v1/wallets/{address}/risk/positions/by-coin/{coin}/history
  • GET/v1/wallets/{address}/risk/exposure/by-coin
  • GET/v1/wallets/{address}/risk/exposure/by-side
  • GET/v1/wallets/{address}/risk/leverage/positions
  • GET/v1/wallets/{address}/risk/margin/positions
  • GET/v1/wallets/{address}/risk/concentration/positions
  • GET/v1/wallets/{address}/risk/history
  • GET/v1/wallets/{address}/risk/liquidation
  • GET/v1/wallets/{address}/risk/liquidation/positions
  • GET/v1/wallets/{address}/risk/liquidation/positions/by-coin/{coin}

7. 行为与时间序列模块

12 个 endpoint
  • GET/v1/wallets/{address}/timeseries
  • GET/v1/wallets/{address}/activity-distribution
  • GET/v1/wallets/{address}/activity/by-hour
  • GET/v1/wallets/{address}/activity/by-weekday
  • GET/v1/wallets/{address}/activity/by-date
  • GET/v1/wallets/{address}/activity/heatmap
  • GET/v1/wallets/{address}/activity/coins
  • GET/v1/wallets/{address}/activity/sides
  • GET/v1/wallets/{address}/activity/recent
  • GET/v1/wallets/{address}/activity/gaps
  • GET/v1/wallets/{address}/activity/position-changes
  • GET/v1/wallets/{address}/activity/funding

参数说明

参数 适用接口 说明 示例
address wallet 相关接口 钱包地址 path 参数。后端会做地址规范化;建议传入完整 EVM 地址。 0x004ed...
timeframe search / context / analysis / leaderboards / timeseries 时间窗口。当前常用值为 24H7D30DALL timeframe=30D
start_time / end_time positions / fills / pnl / risk / activity / analysis ISO datetime 范围。后端校验开始时间不能晚于结束时间。 start_time=2026-05-01T00:00:00Z
coin positions / fills / orders / pnl / risk / activity 币种过滤。后端会 trim 并转为大写。 coin=BTC
sections analysis 逗号分隔,只允许 context,positions,trading,pnl,risk,activity sections=context,pnl,risk
limit 列表和聚合明细接口 返回数量上限。不同 endpoint 上限不同,常见上限为 100 或 1000。 limit=20
offset 列表和聚合明细接口 分页偏移量。和 limit 一起使用。 offset=40
fields 支持字段投影的读取接口 只返回指定 public 字段。不要假设可以请求内部、Agent 或 user-private 字段。 fields=address,score

响应示例

Usage

{
  "key_prefix": "sa_xxx",
  "scopes": ["read"],
  "rate_limit_per_minute": 60,
  "monthly_quota": 1000,
  "used_this_month": 42,
  "remaining_this_month": 958
}

Analysis

{
  "address": "0x004edcd40360e293e4cf260d2ebdf8c7076c1bb8",
  "timeframe": "30D",
  "sections": ["context", "positions", "trading", "pnl", "risk", "activity"],
  "missing_sections": [],
  "data_freshness": {
    "context_snapshot_time": "2026-05-15T00:00:00+00:00",
    "latest_position_captured_at": "2026-05-15T00:00:00+00:00",
    "latest_fill_time": "2026-05-15T00:00:00+00:00"
  },
  "context": {
    "rank": 7,
    "account_value": "1500000.000000000000000000",
    "roi": "0.12000000",
    "risk_score": "0.20000000"
  },
  "positions": {
    "position_count": 3,
    "coin_count": 3,
    "total_position_value": "500000.000000000000000000"
  }
}

Wallet search

{
  "timeframe": "30D",
  "limit": 20,
  "offset": 0,
  "total": 128,
  "items": [
    {
      "address": "0x004edcd40360e293e4cf260d2ebdf8c7076c1bb8",
      "rank": 1,
      "account_value": "1500000.000000000000000000",
      "pnl": "25000.000000000000000000",
      "roi": "0.12000000",
      "risk_score": "0.20000000"
    }
  ]
}

72 个 API 请求与返回参考

下面按模块列出全部 `/v1` endpoint。每个示例都包含 Authorization: Bearer <YOUR_ONMINE_API_KEY>。 返回示例展示字段形状和常见结构,真实数值会随钱包、时间窗口和已生产数据变化。

文档里的地址、fill_id、order_id、tx_hash 都是示例占位。调用时请替换成你的目标钱包和实际实体 ID。 `context`、`context/batch`、`wallets/search`、`detail` 依赖 read model freshness;如果 read model 过期, 会返回明确的 404 stale/missing 错误。

配额与用量

Rate limit

每个 key 有独立的分钟级限流。超过限制时接口返回 429

Monthly quota

每个 key 有月度调用配额。达到月度上限后继续请求会返回 429

已鉴权请求会写入用量审计事件。成功请求会更新 key 的 last_used_at

调用示例

发现钱包

curl "http://127.0.0.1:8010/v1/wallets/search?timeframe=30D&min_account_value=100000&limit=20" \
  -H "Authorization: Bearer $EXTERNAL_API_KEY"

查询综合分析

curl "http://127.0.0.1:8010/v1/wallets/0x004edcd40360e293e4cf260d2ebdf8c7076c1bb8/analysis?timeframe=30D&sections=context,positions,pnl,risk,activity" \
  -H "Authorization: Bearer $EXTERNAL_API_KEY"

查询当前持仓

curl "http://127.0.0.1:8010/v1/wallets/0x004edcd40360e293e4cf260d2ebdf8c7076c1bb8/positions?fields=coin,direction,position_value,unrealized_pnl" \
  -H "Authorization: Bearer $EXTERNAL_API_KEY"

查询成交记录

curl "http://127.0.0.1:8010/v1/wallets/0x004edcd40360e293e4cf260d2ebdf8c7076c1bb8/fills?coin=BTC&limit=20" \
  -H "Authorization: Bearer $EXTERNAL_API_KEY"

查询交易员排行榜

curl "http://127.0.0.1:8010/v1/leaderboards/traders?timeframe=30D&limit=20" \
  -H "Authorization: Bearer $EXTERNAL_API_KEY"

查询当前 key 用量

curl "http://127.0.0.1:8010/v1/usage" \
  -H "Authorization: Bearer $EXTERNAL_API_KEY"

常见错误

错误响应通常包含机器可读的 error code 和可展示/记录的 message。

{
  "detail": {
    "code": "API_KEY_REVOKED",
    "message": "api key has been revoked"
  }
}
{
  "detail": {
    "code": "INVALID_FIELDS",
    "message": "Invalid fields."
  }
}
  • 400: 参数不在白名单中,例如 timeframe、fields、coin、side、pagination、analysis section。
  • 401: 缺少 key、key 格式错误或 key 不存在。
  • 403: key 已撤销、已过期或 scope 不足。
  • 404: 请求的钱包、read model、持仓、成交、订单或榜单数据不存在。
  • 429: rate limit 或月度 quota 已达到上限。
External API 当前不提供 admin HTTP endpoint、key management HTTP route、写入接口、 ingest 接口、analytics refresh 接口、read-model refresh 接口、WebSocket、News、BTC Mining 或复杂 Market Analysis。