### 1.9. Get details for multiple papers at once `POST /graph/v1/paper/batch` 一次取回多篇论文的详情。 | 参数 | 必填 | 说明 | |---|---|---| | `fields` | 否 | 查询参数,不在 body 里 | | `ids` | 是 | JSON body:`{"ids": [...]}`,最多 500 个 | ```bash curl -X POST "https://fetchpaper.com/graph/v1/paper/batch?fields=title,year" \ -H "Content-Type: application/json" \ -d '{"ids":["204e3073870fae3d05bcbc2f6a8e263d9b72e776","DOI:10.1145/3437963.3441673","999999999"]}' ``` ```json [{"paperId": "204e3073870fae3d05bcbc2f6a8e263d9b72e776", "title": "Attention is All you Need", "year": 2017}, {"paperId": "d4d7bbf38578642eab5926733c9facc9ca1e2b0a", "title": "Graph Mining with Graph Neural Networks", "year": 2021}, null] ``` 顶层就是数组,顺序与 `ids` 一一对应,查不到的位置给 `null`(不会整批报错)。 **`ids` 元素形态判据**(两个 batch 端点同一套,实测): | 元素写法 | 结果 | |---|---| | 字符串:§1.5 任何一种(`CorpusId:` / `DOI:` / `ARXIV:` 前缀、裸 sha…),首尾空白被 strip | 按 §1.5 解析,`" 13756489 "` 与 `13756489` 解到同一篇 | | JSON 整数,如 `13756489` | **等于它的字符串写法**。必须的:响应里 `externalIds.CorpusId` 就是 JSON 数字,原样回传不该被判「库里没有」 | | `null` / `true` / `false` / 浮点 / 对象 / 数组 | 该槽 `null`,整批仍 200。布尔**不会**被当成整数 | | 位数超过 4,300 的整数 | 400 `Invalid JSON body: Exceeds the limit (4300 digits) for integer string conversion…`(来自 stdlib JSON 解析,本地没放宽);4,300 位及以内解析得过,只是查不到 → `null` | 一槽一条:同一 id 的五种写法一起提交就得到五行,**不去重**、长度和 `ids` 严格相等;`ids` 上限 `paper/batch` 500、`author/batch` 1000,超了 400 `Too many ids: 501 (max 500)`。 `GET /graph/v1/paper/batch` 回 405 `Batch lookup requires POST`(`author/batch` 同理,文案不同), `batch` 后面再挂路径段回 404。