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。
概览
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。
普通调用
适合用户自己的后端服务、脚本、数据看板或内部系统,按 API key 和 quota 读取数据。
Agent 调用
适合外部 Agent、自动化研究流程或工具调用层,把 Onmine 数据作为只读上下文来源。
http://127.0.0.1:8010。
快速开始
-
1
打开订阅服务
在 Onmine 左侧栏进入
订阅服务 > API 密钥。 - 2 创建 API key 填写 label 创建 API key。创建成功后,完整 key 会显示在当前页面。
- 3 保存 key 复制完整 key。后续列表页只展示 key prefix,不会展示完整 key。
- 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 只在创建后展示一次。
密钥保存
请按生产密钥管理方式保存,不要放进公开仓库、截图、浏览器客户端代码或可公开访问的日志。
403 API_KEY_REVOKED。
鉴权
每个请求都需要携带 API key。支持
Authorization: Bearer 和
X-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 | 时间窗口。当前常用值为 24H、7D、30D、ALL。 |
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>。
返回示例展示字段形状和常见结构,真实数值会随钱包、时间窗口和已生产数据变化。
配额与用量
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§ions=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 已达到上限。