Quick Start
快速开始
签约后发放 app_id 与 app_secret,五步完成一次分析。完整规范见 OpenAPI(正式接入时提供)。
# ① 换取短期访问令牌(缓存复用,2 小时有效) curl -X POST https://api.cleerscience.com/v1/token \ -H "Content-Type: application/json" \ -d '{"grant_type": "client_credentials", "app_id": "app_xxx", "app_secret": "您的AppSecret"}' → {"access_token": "at-…", "expires_in": 7200} # ② 上传文件(申报 SHA-256,分片直传对象存储) curl -X POST https://api.cleerscience.com/v1/uploads \ -H "Authorization: Bearer $TOKEN" \ -H "Idempotency-Key: $(uuidgen)" \ -d '{"filename": "sample.xrdml", "content_type": "application/xml", "size": 102400, "sha256": "文件内容SHA-256"}' → {"upload_id": "upl_…", "part_size_bytes": 8388608, "total_parts": 1} # ③ 完成上传(校验通过,获得资产引用) curl -X POST …/v1/uploads/upl_…/complete … → {"asset_ref": {"asset_id": "ast_…", "version": 1}, "status": "ready"} # ④ 发起分析(XRD 物相检索) curl -X POST …/v1/analyses \ -H "Authorization: Bearer $TOKEN" -H "Idempotency-Key: $(uuidgen)" \ -d '{"algorithm_id": "xrd-phase-analysis", "inputs": [{"asset_id": "ast_…", "version": 1}]}' → 202 {"analysis_id": "run_…", "status": "queued"} # ⑤ 轮询至终态,读取结果信封与产物下载地址 curl …/v1/analyses/run_… -H "Authorization: Bearer $TOKEN" curl …/v1/analyses/run_…/result -H "Authorization: Bearer $TOKEN"
Authentication
鉴权与令牌
POST/v1/token
用 AppID + AppSecret 换取短期访问令牌,后续所有业务请求携带 Authorization: Bearer 头。
- Token 有效期 2 小时,请缓存复用、过期前(如剩余 5 分钟)再刷新;Token 接口有独立频控(60 次/分钟/应用)
- Token 只通过 Authorization 头传输,不要放进 URL、日志或代码仓库
- 收到
401 token_expired时重新获取 Token 并重试原请求 - 密钥疑似泄露的止损方式是重置 AppSecret——重置后所有旧 Token 即刻失效
Upload
文件上传
上传完成并通过校验后获得 asset_ref(asset_id + version),发起分析时引用它;同一资产可复用于多次分析。
大文件:分片直传(推荐统一使用)
POST/v1/uploads
POST/v1/uploads/{upload_id}/parts/{n}/url
POST/v1/uploads/{upload_id}/complete
- 申报文件名、类型、大小与 SHA-256 → 创建会话(返回分片大小 8MB 与总分片数)
- 逐分片取短期预签名地址(15 分钟有效)直传,PUT 时不带 Authorization 头;文件字节不经 API 服务器
- 全部传完后提交各分片 ETag 完成上传;平台回读校验大小与 SHA-256,一致才
ready,不一致返回 422 需重新上传 - 小于等于 8MB 的文件只有 1 个分片,流程退化为"一址一传一完成"
请确保申报的 sha256 与文件字节一致——这是"平台分析的确实是这份字节"的全程锚点,结果中会回传同一摘要。
小文件:一步上传(≤ 20MB)
POST/v1/uploads/direct
multipart/form-data 一步上传(网关内部完成分片编排与校验),适合谱图文本等小文件;超过 20MB 返回 413。
Analysis
发起分析(标准式)
GET/v1/algorithms
POST/v1/analyses
GET/v1/analyses/{analysis_id}
DELETE/v1/analyses/{analysis_id}
- 先调算法目录获取已开通算法(含输入与参数 Schema,
mode标注 standard / conversational) - 创建必须带
Idempotency-Key头(如 UUID):网络超时重试不重复计费、不重复跑任务;注意失败任务重试须换新键 - 状态机:
queued → running → cancelling → succeeded / failed / cancelled / timed_out - 轮询建议退避间隔 2s → 5s → 10s 封顶;任务生命周期由平台管理,无需维持长连接
Conversational
对话式应答
POST/v1/analyses/{analysis_id}/answers
对话式算法(如 NMR 结构求解、MS 需要前体 m/z 时)运行中会以结构化表单发起提问,任务状态变为 waiting_for_input:
{
"status": "waiting_for_input",
"interaction": {
"interaction_id": "itx_…",
"form": {
"fields": [
{ "key": "precursor_mz", "type": "number",
"label": "前体离子 m/z" },
{ "key": "ion_mode", "type": "single_choice",
"options": ["positive", "negative"] }
]
},
"expires_at": "2026-09-17T10:30:00Z"
}
}
- 按
fields的 key 提交键值对应答;应答幂等(重答同内容无副作用、换内容 409) - 已知样品背景可在创建时用
prefilled_answers预填,引擎跳过对应提问(免对话模式) - 超时未答任务自动结束且不计费;结果会带
answers问答溯源
Result
获取结果
GET/v1/analyses/{analysis_id}/result
GET/v1/analyses/{analysis_id}/artifacts/{artifact_id}/download
结果采用"信封固定、内容随算法"两层设计——外层所有模态一致,算法指标按版本化 Schema 单独提供。产物 download_url 为限时地址(24 小时),过期后重新调用结果接口获取新地址。
{
"analysis_id": "run_…",
"algorithm": {"id": "xrd-phase-analysis", "version": "0.7.0"},
"status": "succeeded",
"created_at": "2026-09-17T08:30:12Z",
"finished_at": "2026-09-17T08:31:40Z",
"inputs": [{ "asset_id": "ast_…", "version": 1,
"filename": "sample.xrdml", "sha256": "9f2c…" }],
"result": { "schema_version": "0.7", /* 算法指标,按算法版本化 */ },
"artifacts": [{ "type": "report", "filename": "report.pdf",
"sha256": "e3b0…", "download_url": "https://…(限时)" }],
"answers": [],
"usage": { "compute_seconds": 88 }
}
Catalog
算法目录
按合作范围开通;以下为平台当前能力与输入格式要求。GET /v1/algorithms 返回贵司实际开通的清单。
| 模态 | 版本 | 状态 | 输入格式 | 能力与说明 |
|---|---|---|---|---|
| XRD 物相检索 | 0.7.0 | 正式 | 两列粉末衍射谱(2θ/强度):.csv .txt .xy .dat .xrdml .xls .xlsx .asc .ras .uxd |
420k COD 全库检索 |
| Raman 光谱识别 | 0.6.0 | 正式 | 两列光谱(波数/强度):CSV / TXT |
RRUFF 物相级数据库(窗内 1959 物相) |
| NMR 波谱解析 | 0.2.2 | 正式 对话式 | JCAMP-DX(.jdx)1–4 份(PEAKTABLE/XYDATA)、CSV |
解析 + 峰表为默认;提供分子式可经问答完成结构求解 |
| MS 质谱鉴定 | 0.2.1 | 正式 对话式 | mzML / MassBank JSON / XML / CSV / TSV(单谱) | MassBank 2025.10 全库鉴定;需前体 m/z(可经对话补充) |
| XPS | — | 演示 | 两列 CSV(结合能 eV / 强度) | 仪器格式 .vms 暂不支持,正式算法接入中 |
| IR | — | 演示 | 两列 CSV | .jdx 暂不支持,正式算法接入中 |
| TEM | — | 演示 | 径向分布 CSV | 衍射照片支持(jpg/tiff)接入中 |
| SAXS | — | 演示 | 两列散射曲线 CSV | 正式算法接入中 |
已知限制(务必知悉):XRD 检索波长锁定 Cu Kα——非铜靶数据属于算法侧已挂账的已知限制,接入前请与商务确认影响。NMR 的 Bruker 原始 ZIP 与 MS 的批次定量 ZIP 流程在算法侧已就绪,会话入口接入中。
Usage
用量与限流
GET/v1/usage
- 用量视图:按任务状态的调用次数 + 已终态任务的算力时长合计;计费口径以接入协议为准
- 限流三层(超出返回 429 及
Retry-After头):单应用请求频率 / 单应用并发分析数 / 机构级配额 - 所有创建类接口支持幂等键,网络重试安全
Errors
错误码
统一错误体:{"error": {"code": "...", "message": "..."}},响应均带 X-Request-Id 头供排查。
| HTTP | code | 说明与处理 |
|---|---|---|
| 400 | invalid_request | 参数错误,检查 Schema |
| 401 | invalid_credentials / token_expired | 检查凭证 / 重新获取 Token |
| 403 | scope_denied / entitlement_suspended | 未开通该算法 / 应用已停用,联系运营 |
| 404 | not_found / algorithm_not_found | ID 不存在、不属于当前应用或算法未开放 |
| 409 | idempotency_conflict / interaction_conflict / run_not_terminal | 同键不同请求体 / 重复应答不同答案 / 结果未就绪 |
| 410 | download_expired / cursor_expired | 下载令牌或事件游标过期,重新获取 |
| 413 | file_too_large | 超过直传上限,改用分片直传 |
| 422 | input_validation_failed / asset_integrity_mismatch | 文件类型/大小/摘要校验不通过 |
| 429 | rate_limited | 触发限流,按 Retry-After 退避 |
| 503 | service_unavailable | 平台维护或异常,退避重试 |
Sandbox
沙箱与安全
- 正式环境与沙箱联调环境(
sandbox-api.cleerscience.com,拟定)账号、数据、配额完全隔离,建议先沙箱联调再切生产 - AppSecret 仅服务端保管,不得进前端、App、代码仓库或日志
- 全链路 HTTPS;上传/下载地址均为短期授权,请勿固定化、转发或写入日志
- 客户数据仅在分析用途内使用,按约定保留策略管理,详见接入协议
文档中的接口地址、参数阈值(Token 时效、分片大小、限流数值等)均为拟定值,最终以双方确认的接入协议为准。