● Developer Docs
接口文档
统一 Base URL、统一鉴权、统一返回结构。所有算法部署在云端函数中,前端只需关心 HTTP 调用。
快速开始
三步完成首次调用:
- 注册账号并使用邮箱登录控制台;
- 在「API 密钥」页面创建一个 Key,复制完整字符串(仅展示一次);
- 按下方示例发起请求,
Authorization头携带 Key。
提示:免费额度为每日 200 次,超出后接口返回 429。算法未被赋予真实后端时返回演示数据,响应中会包含
_demo: true 字段。Base URL
| 环境 | 地址 |
|---|---|
| 正式环境 | https://bahnuer.com/api/v1 |
| 算法列表 | GET https://bahnuer.com/api/v1/algorithms |
| 健康检查 | GET https://www.bahnuer.com/healthz |
鉴权方式
所有接口使用 Bearer Token 鉴权,在 HTTP Header 中传入:
request headers
Authorization: Bearer sk-xxxxxxxxxxxxxxxx Content-Type: application/json
- Key 仅在创建时完整展示一次,请妥善保存到服务端环境变量,不要写入前端代码或 Git 仓库。
- 泄露时可立即在控制台吊销并重建,吊销立即生效。
- 未携带 Key 返回
40101,Key 无效或已吊销返回40102。
调用示例
cURL
curl -X POST "$API_BASE//vision/chest-xray" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"image": "data:image/jpeg;base64,<你的图片 Base64>", "threshold": 0.35, "with_box": true}'
Python
import os, httpx
API_BASE = "https://你的域名/api/v1"
API_KEY = os.environ["HEALTHCARE_API_KEY"]
resp = httpx.post(
f"{API_BASE}//vision/chest-xray",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"image": "data:image/jpeg;base64,<你的图片 Base64>", "threshold": 0.35, "with_box": true},
timeout=30,
)
resp.raise_for_status()
print(resp.json())
Node.js
const res = await fetch(`https://你的域名/api/v1//vision/chest-xray`, {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.HEALTHCARE_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"image": "data:image/jpeg;base64,<你的图片 Base64>", "threshold": 0.35, "with_box": true}),
});
const data = await res.json();
console.log(data);
展开全部算法的调用示例
胸部 X 光影像分析 —— POST https://bahnuer.com/api/v1/vision/chest-xray
cURL
curl -X POST "$API_BASE//vision/chest-xray" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"image": "data:image/jpeg;base64,<你的图片 Base64>", "threshold": 0.35, "with_box": true}'心电心律失常分析 —— POST https://bahnuer.com/api/v1/signal/ecg-arrhythmia
cURL
curl -X POST "$API_BASE//signal/ecg-arrhythmia" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"signal": [0.12, 0.15, 0.09, -0.02], "sample_rate": 250, "lead": "II"}'健康风险评估 —— POST https://bahnuer.com/api/v1/predict/health-risk
cURL
curl -X POST "$API_BASE//predict/health-risk" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"age": 46, "gender": "male", "bmi": 26.8, "indicators": {"fasting_glucose": 7.1, "systolic_bp": 138, "hdl": 0.9}, "lifestyle": {"smoking": true, "exercise_freq": 1}}'医疗文本结构化抽取 —— POST https://bahnuer.com/api/v1/nlp/medical-extract
cURL
curl -X POST "$API_BASE//nlp/medical-extract" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "患者男性,52 岁,多饮多尿 3 个月,确诊 2 型糖尿病,现口服二甲双胍 0.5g 每日两次。", "doc_type": "outpatient"}'运动姿态与动作评估 —— POST https://bahnuer.com/api/v1/vision/sport-pose
cURL
curl -X POST "$API_BASE//vision/sport-pose" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"video": "data:video/mp4;base64,<你的视频 Base64>", "action": "squat", "with_keypoints": false}'智能计步与步长估计 —— POST https://bahnuer.com/api/v1/motion/step-count
cURL
curl -X POST "$API_BASE//motion/step-count" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"x": [120, 118, 122, 119, 121, 117], "y": [80, 82, 79, 81, 83, 78], "z": [9810, 10320, 12410, 9900, 10380, 12460], "sample_rate": 50}'统一返回结构
| 字段 | 类型 | 说明 |
|---|---|---|
request_id | string | 本次请求唯一 ID,排查问题时请提供 |
code | int | 0 表示成功,其余见错误码表 |
message | string | 结果描述文案 |
data | object | 算法业务数据,各算法字段不同 |
响应头同时返回 X-Request-Id、X-Quota-Limit、X-Quota-Remaining,便于客户端做配额提示。
错误码
| code | HTTP | 含义 | 说明 |
|---|---|---|---|
0 | 200 | 成功 | 请求正常处理完成。 |
40101 | 401 | 缺少鉴权 | 请求头未携带 Authorization,请检查 Bearer Token。 |
40102 | 401 | Key 无效 | API Key 不存在或已被吊销,请到控制台确认。 |
40103 | 403 | 算法未开通 | 当前 Key 未开通该算法,请先在控制台申请权限。 |
40104 | 403 | 来源不合法 | 云函数侧内部凭证校验失败,请经门户网关调用,勿直连算法后端。 |
40105 | 503 | 后端未校验 | 算法后端未通过内部凭证校验,网关已拒绝转发,需管理员在算法运维页重新校验。 |
42901 | 429 | 超出配额 | 当日调用量已达上限,可升级套餐或次日重试。 |
42201 | 422 | 参数错误 | 必填参数缺失或类型不正确,见 detail 字段。 |
50001 | 502 | 算法后端异常 | 上游算法执行失败,request_id 可用于排查。 |
50002 | 504 | 算法超时 | 单次请求超过 30 秒,请缩小输入后重试。 |
配额与限流
- 免费额度:每日 200 次(按自然日统计,次日自动重置)。
- 付费套餐:按月额度累计,超出后返回
42901,可在控制台申请提额。 - 单请求超时 30 秒;单次 body 建议不超过 8MB,超大影像请先压缩或走对象存储 URL 方式。
计费说明
| 算法 | 单次价格 | 计费口径 |
|---|---|---|
| 胸部 X 光影像分析 /vision/chest-xray | ¥0.06 | 成功调用计入,5xx 与超时不计费 |
| 心电心律失常分析 /signal/ecg-arrhythmia | ¥0.04 | 成功调用计入,5xx 与超时不计费 |
| 健康风险评估 /predict/health-risk | ¥0.03 | 成功调用计入,5xx 与超时不计费 |
| 医疗文本结构化抽取 /nlp/medical-extract | ¥0.02 | 成功调用计入,5xx 与超时不计费 |
| 运动姿态与动作评估 /vision/sport-pose | ¥0.05 | 成功调用计入,5xx 与超时不计费 |
| 智能计步与步长估计 /motion/step-count | ¥0.02 | 成功调用计入,5xx 与超时不计费 |