跳转到内容
Get Started

数据面

文件

POST /v1/files、GET /v1/files、DELETE /v1/files/{file_key} —— 上传报告、获取抽取文本、列出与删除。

将健康文档上传到 Subject 的存储。Mirobody 会先保存原文件,再在后台抽取其中的可读文本 —— PDF 与图片走 OCR,表格与文本文件直接转换 —— 并对其运行与 POST /v1/standardize 相同的标准化管道,因此上传一份化验报告也会落成标准化记录。agent 作答时会读取两者。

POST /v1/files
Authorization: Bearer mb_live_*
Content-Type: multipart/form-data
字段说明
file文档(PDF / 图片 / Excel / CSV)。
user文件所属的 Subject。可选 —— 省略时会回退到你账户的 default Subject,因此为实现按终端用户隔离,请始终传入它。
retention此处可选(与 POST /v1/data 不同,那里为必填)。取值与数据留存相同。
session_id可选;将 retention=session 的上传限定到某个会话
Terminal window
curl https://api.mirobody.ai/v1/files \
-H "Authorization: Bearer $MIROBODY_API_KEY" \
-F "user=alice" \
-F "file=@checkup_2026.pdf"

响应:

{
"object": "file",
"id": "AUmIn_R-Ddg.../b/bM--fG29X....pdf",
"filename": "checkup_2026.pdf",
"bytes": 20544,
"status": "processed",
"created_at": 1782924296,
"subject": "alice"
}

文件标识符是 id(一个含斜杠的键)—— 在下方的获取与删除调用中将其用作 {file_key}created_atepoch 秒

一次上传让文档文本可供 agent 读取,同时 Mirobody 也会从中读出报告里的读数 —— 按与 POST /v1/data 写入完全相同的方式做标准化 —— 并作为记录存入 Subject 的存储。无需重新录入即可从 GET /v1/data 查询;重复上传同一个文件不会产生重复记录。若想自己先跑一遍抽取、检查读数无误再入库,改用 POST /v1/standardize。已有结构化记录则直接用 POST /v1/data

GET /v1/files?user=alice
Authorization: Bearer mb_live_*
{
"object": "list",
"data": [
{
"object": "file",
"id": "AUmIn_R-Ddg.../b/bM--fG29X....pdf",
"file_key": "AUmIn_R-Ddg.../b/bM--fG29X....pdf",
"filename": "checkup_2026.pdf",
"file_type": "application/pdf",
"bytes": 20544,
"created_at": 1782924296
}
],
"subject": "alice"
}

data 存放文件;subject 回显该 Subject。每一项都同时暴露 idfile_key(二者值相同)。created_atepoch 秒,与上传响应一致。

GET /v1/files/{file_key}?user=alice
Authorization: Bearer mb_live_*

返回单个文件抽取后的文本 —— 与 agent 所读取的内容一致:

{
"object": "file",
"id": "AUmIn_R-Ddg.../b/bM--fG29X....pdf",
"filename": "checkup_2026.pdf",
"extracted_text": "Annual checkup 2026-06-16\nFasting glucose 97 mg/dL (ref 70-110)\n...",
"abstract": "",
"subject": "alice"
}

文件文本仍在处理时,extracted_text 可能为空。abstract 也可能为空,并非每种文件类型都会生成摘要。

大导出或实时采集可走 wss://…/v1/files/stream:单连接分块上传、带进度。鉴权走查询串(浏览器无法给 WebSocket 设 header):

wss://api.mirobody.ai/v1/files/stream?key=mb_live_...&user=alice&retention=permanent

帧序列(均为 JSON 文本帧):

  1. 服务端 → 你{"type": "connection_established"} —— 收到前不要发任何东西。
  2. 你 → 服务端{"type": "upload_start", "messageId": "<批次id>", "files": [{"filename", "contentType", "size"}]} —— 整批一个 messageId
  3. 你 → 服务端,每 256 KB 一块:{"type": "upload_chunk", "messageId", "filename", "chunk": "<base64>", "chunkIndex", "totalChunks"}
  4. 你 → 服务端{"type": "upload_end", "messageId"} → 全部原文件保存后,服务端返回 upload_end_response;此时文本可能仍在处理中。

单文件 100 MB 上限、Subject 隔离与 POST /v1/files 完全一致 —— 用 GET /v1/files 可列出。

DELETE /v1/files/{file_key}?user=alice
Authorization: Bearer mb_live_*

立即将该文件从 API 表面移除(若不是该 Subject 的文件或已删除则返回 404):

{ "object": "file", "id": "AUmIn_R-Ddg.../b/bM--fG29X....pdf", "deleted": true, "subject": "alice" }

有时限的上传也会在留存到期时自动移除 —— 过期文件立即从所有 GET /v1/files* 读取中消失,随后被永久删除。如需一次性擦除某个 Subject 的一切,请使用 DELETE /v1/subjects/{user} —— 参见合规