Developers

Paper endpoints

Longer articles below are still in Chinese.

Base:NEXT_PUBLIC_API_URL / LLMWIKI_BASE_URL(本地 http://localhost:8000)。
鉴权:Authorization: Bearer <token>(登录 JWT 或 sv_ 密钥)。

场景与 Node 示例见 论文对接 · 场景示例


创建任务文献库(幂等)

空间 · 创建 同一接口POST /v1/knowledge-bases,带上 external_task_id

POST /v1/knowledge-bases
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "论文任务-大模型评测",
  "external_task_id": "lp_task_abc123",
  "description": "可选"
}
字段说明
external_task_id论文平台任务 ID,同一用户下唯一;已存在则返回原库(HTTP 200
name显示名;已存在时可更新
description可选

响应:空间对象本身。新建 201,复用 200。请持久化 idslug

兼容旧路径 POST /v1/integrations/paper/task-libraries(返回 { created, knowledge_base })。


写入文献(上传 / 导入)

上传文件 共用:

方式说明文档
批量导入参考文献JSON 元数据 → Markdown批量导入参考文献
multipart 上传PDF/Word 等一次上传简易文件上传
TUS大文件断点续传TUS 上传

参考文献短索引

GET /v1/knowledge-bases/{kb_id}/reference-index
Authorization: Bearer <token>

可选查询参数 variants(默认 source,preview),与下方「获取文件地址」相同。

返回参考文献短列表(编号、标题、预签名 URL 等),供引用表或 HTTP 回退时挑条注入写作 prompt。

{
  "knowledge_base_id": "...",
  "count": 35,
  "variants": ["source", "preview"],
  "items": [
    {
      "index": 1,
      "document_id": "...",
      "title": "…",
      "citation": "[1] 标题。作者。期刊,2024。 DOI: …",
      "external_id": "ref_1",
      "doi": "10.1000/xyz",
      "file_type": "md",
      "status": "ready",
      "urls": { "source": null, "preview": null }
    },
    {
      "index": 2,
      "document_id": "...",
      "title": "…",
      "citation": "[2] …",
      "external_id": "ref_2",
      "doi": null,
      "file_type": "pdf",
      "status": "ready",
      "urls": { "source": "https://…", "preview": "https://…" }
    }
  ]
}
urls含义
preview阅读地址。有值即可在浏览器打开
source原件地址。没有 preview 时请展示正文,不要把 Word / PPT 当附件下载
  • 预签名默认约 1 小时有效;无对象或 Markdown 参考文献无存储文件时对应值为 null(上例 md 条目属正常)。
  • 未配置对象存储时 urls 各 variant 均为 null
  • 其它取值见下方「获取文件地址」/ 文档 · 单篇 URLconvertedtaggedocr

获取文件地址(批量)

按任务 external_task_id 一次返回任务文献库内各文档的预签名 URL:

GET /v1/integrations/paper/task-libraries/by-external/{external_task_id}/files?variants=source,preview
Authorization: Bearer <token>

等价(已有 kb_id 时):

GET /v1/knowledge-bases/{kb_id}/files?variants=source,preview
Authorization: Bearer <token>
查询参数说明
variants可选,默认 source,previewsource / converted / tagged / ocr / preview
path可选,如 path=/ 只取原始层
include_scaffold可选,默认 false

响应(节选)

{
  "knowledge_base_id": "...",
  "external_task_id": "lp_task_abc123",
  "count": 2,
  "variants": ["source", "preview"],
  "items": [
    {
      "document_id": "...",
      "filename": "paper.pdf",
      "file_type": "pdf",
      "status": "ready",
      "external_id": "ref_1",
      "has_content": true,
      "urls": { "source": "https://…", "preview": "https://…" }
    }
  ]
}
  • 预签名默认约 1 小时有效。
  • 某 variant 无对象时值为 null(不导致整请求失败)。
  • 导入的 Markdown 参考文献通常无存储文件:urls 可能全 null,用 GET /v1/documents/{id}/contenthas_content 标明是否有正文。

单篇见 文档 · 获取文件地址(单篇)


同步文档到知识库

对接方在用户勾选「同步到知识库」后调用。你只需传 目标知识库 id源文档 id;Textira 会完成拷贝,不要先拉 /files 再自行上传。

前置条件:

  • 目标库 kind 必须为 knowledge(不能是任务文献库)
  • 源文档与 Token 属同一用户
  • 源文档 status 不能是 pending / processing(未就绪会 409,稍后重试)

请求

POST /v1/knowledge-bases/{targetKbId}/documents/import
Authorization: Bearer <token>
Content-Type: application/json

{
  "sourceDocumentId": "<task-lib-doc-uuid>",
  "directory": "/",
  "tags": ["论文同步"],
  "duplicateStrategy": "reuse"
}
字段说明
路径 {targetKbId}目标知识库 UUID。不要传任务文献库 id / external_task_id
sourceDocumentId任务文献库中的文档 UUID。可从 文件地址items[].document_id 取得
directory可选,目标目录(如 //papers/);默认沿用源 path;不可为 /wiki/
tags省略=沿用源标签;[]=无标签;非空数组=覆盖
category可选,写入目标 metadata.category
duplicateStrategyreuse(默认)或 reject,见下

同一 sourceDocumentId 再同步:reuse 返回已有文档(200);reject 返回 409

成功响应

新建 201,已存在且 reuse200

{
  "source_document_id": "...",
  "knowledge_document_id": "...",
  "target_knowledge_base_id": "...",
  "status": "completed",
  "duplicate": false,
  "has_binary": true
}
字段对接方用法
knowledge_document_id持久化到论文侧,作为知识库内该文档 id
duplicate: true幂等命中,视为成功,勿当错误
其它字段可忽略

批量

POST /v1/knowledge-bases/{targetKbId}/documents/import-batch
Authorization: Bearer <token>
Content-Type: application/json

{
  "sourceDocumentIds": ["…", "…"],
  "directory": "/papers/",
  "duplicateStrategy": "reuse"
}

响应含 completed / already_exists / failed 与逐条 results。单次最多 100 条;单条失败不中断整批。

错误码

HTTP含义建议
404目标库或源文档不存在,或不是当前 Token 用户的核对 id 与鉴权
400目标不是知识库,或 directory / duplicateStrategy 非法修正参数
409源仍在解析轮询源 status=ready 后重试
409reject 且已同步过改用已有 knowledge_document_id,或改 reuse

接入步骤

  1. UI 勾选 → 准备好源 document_id 与目标知识库 id
  2. POST …/documents/import,body 至少 { "sourceDocumentId": "…" }
  3. 保存返回的 knowledge_document_id(含 duplicate: true
  4. 收到「仍在解析」类 409 则稍后重试

按大纲生成插图

POST /v1/integrations/paper/figures:提交论文大纲,Textira 判断需要哪些图并异步出图。轮询 GET …/figures/{id} 直到 succeeded,用 figures[].url 打开图片,用 slot 插入对应章节。

outline 必填,文字或 JSON 均可(章节标题 + 要点即可)。不必传 plotting_plan / plot_typematerials.ideamaterials.experimental_log 可选;没有实测数字时只出方法示意图。有样品或装置时可能再补 0–2 张组图(一张 PNG,A/B/C 拼版)。

POST /v1/integrations/paper/figures
Authorization: Bearer <token>
Content-Type: application/json
{
  "locale": "zh",
  "outline": "1 引言\n2 方法:双塔检索与重排序\n3 实验设计与评价指标",
  "materials": {
    "idea": "可选。方法简述,有则更准",
    "experimental_log": "可选。有实测数字才会规划数据图"
  }
}

outline 也可以是章节 JSON(标题、小节、要点),结构不限。

字段说明
outline必填。论文大纲(文字或 JSON)
materials.idea可选。方法简述
materials.experimental_log可选。实验记录;无实测则只出示意图
localezhen

一次最多 8 张。同一用户最多 2 个进行中的任务。大纲为空会 400

响应 202statusqueued,此时 figures 可能仍是空数组(还在判断画什么)。轮询:

GET /v1/integrations/paper/figures/{id}
Authorization: Bearer <token>

statusqueuedrunningsucceeded / failed。成功后 figures[].url 可在浏览器打开(约 1 小时有效,请重新 GET 再开)。slot / plot_type 是 Textira 判定的结果,按 slot 放到章节即可。

{
  "id": "…",
  "status": "succeeded",
  "figures": [
    {
      "figure_id": "fig_method",
      "slot": "METHOD",
      "caption": "方法流程。展示模块关系",
      "title": "方法流程",
      "plot_type": "diagram",
      "url": "https://textira.com/v1/storage/…/fig_method.png?…"
    }
  ]
}

出图需要数分钟。请轮询,不要把 POST 当同步接口。


选模板 + Markdown → PDF / Word

选一个期刊或学位论文模板,提交 Markdown,用 format 选择 PDF 或 Word。不必先创建稿件。鉴权与其它接口相同(登录 JWT 或 sv_ 密钥)。

列出模板

GET /v1/render/templates
Authorization: Bearer <token>

用返回的 id 作为 template_id。中文稿请选 langzh 的模板,英文稿选 en。当前可用模板如下。

英文会议 / 期刊

template_id名称lang
aaai2026AAAI 2026en2
aclACL (*ACL)en2
acmACMen2
arxivarXiv 预印本en1
colm2025COLM 2025en1
cvpr2025CVPR 2025en2
emnlpEMNLPen2
iccv2025ICCV 2025en2
iclr2025ICLR 2025en2
icml2026ICML 2026en2
ieeeIEEEen2
ijcai2026IJCAI 2026en2
ijcvIJCVen2
jairJAIRen1
jmlrJMLRen1
neurips2025NeurIPS 2025en1
taclTACLen2
tnnlsIEEE TNNLSen2
tpamiIEEE TPAMIen2
zh-jcstJCSTen2

中文刊 / 通用学科

template_id名称lang
zh-aas中文刊 · 自动化学报zh2
zh-agri通用 · 环境农林zh2
zh-amas中文刊 · 应用数学学报zh1
zh-aps中文刊 · 应用概率统计zh1
zh-art通用 · 艺术传媒zh1
zh-bio通用 · 生命科学zh2
zh-bus通用 · 经管zh1
zh-crd中文刊 · 计算机研究与发展zh2
zh-edu通用 · 教育社科zh1
zh-edr中文刊 · 教育研究zh1
zh-engi通用 · 工学zh2
zh-erj中文刊 · 经济研究zh1
zh-aes中文刊 · 电子学报zh2
zh-hum通用 · 人文zh1
zh-jos中文刊 · 软件学报zh1
zh-jsc中文刊 · 计算机学报zh2
zh-jssc中文刊 · 系统科学与数学zh2
zh-med通用 · 医学zh1
zh-nmj中文刊 · 中华医学杂志zh1
zh-sci通用 · 理科zh2
zh-ssi中文刊 · 中国科学信息科学zh1

学位论文

template_id名称lang
zh-thesis-bs学位论文 · 本科zh1
zh-thesis-ms学位论文 · 硕士zh1
zh-thesis-phd学位论文 · 博士zh1
zh-thesis-fdu-ms复旦大学 · 硕士zh1
zh-thesis-pku-ms北京大学 · 硕士zh1
zh-thesis-sjtu-ms上海交通大学 · 硕士zh1
zh-thesis-thu-ms清华大学 · 硕士zh1
zh-thesis-ucas-ms中国科学院大学 · 硕士zh1
zh-thesis-ustc-ms中国科学技术大学 · 硕士zh1
zh-thesis-whu-ms武汉大学 · 硕士zh1
zh-thesis-zju-ms浙江大学 · 硕士zh1

生成 PDF 或 Word

POST /v1/render
Authorization: Bearer <token>
Content-Type: application/json

{
  "template_id": "zh-jos",
  "format": "pdf",
  "markdown": "# 题目\n\n## 引言\n\n正文……\n"
}
字段说明
template_id必填,来自「列出模板」
markdown必填。# 一级标题作为题目;## 摘要、关键词和章节标题会尽量套进所选模板
formatpdfdocx(Word)。省略时为 pdf
title可选。Markdown 里没有一级标题时,用这个当题目

成功:200,响应体就是文件。format=pdf 时为 PDF,format=docx 时为 Word。
失败:400 模板不存在、正文为空,或中文稿选了英文模板;413 正文过长;503 Word 暂时无法生成;500 生成失败(原因在 JSON 的 detail 里)。


Markdown → PPT

选一个演示稿模板,提交 Markdown,得到 PowerPoint。

列出演示稿模板

GET /v1/render/slides/templates
Authorization: Bearer <token>

用返回的 id 作为 template_id

template_id名称用途
academic-paper文献汇报 · 蓝组会 / journal club
academic-graphite文献汇报 · 灰更克制的汇报
academic-defense答辩 / 开题 · 藏青答辩 / 开题 / 中期

生成 PPT

POST /v1/render/slides
Authorization: Bearer <token>
Content-Type: application/json

{
  "template_id": "academic-paper",
  "markdown": "# 题目\n\n## 背景\n\n……\n\n## 方法\n\n……\n\n## 结论\n\n……\n"
}
字段说明
template_id必填,来自「列出演示稿模板」
markdown必填。# 一级标题作为题目
title可选。Markdown 里没有一级标题时,用这个当题目
authors可选。写在封面
locale可选,zhen。省略时按正文自动判断

成功:200,响应体就是 .pptx 文件。
失败:400 模板不存在或正文为空;413 正文过长;503 暂时无法生成;500 生成失败(原因在 JSON 的 detail 里)。


删除稿件

DELETE /v1/paper-tasks/{task_id}
Authorization: Bearer <token>

仅任务所有者可删。会先停止仍在生成/精修的进程,再删除数据库行(版本、分享链接级联删除)以及磁盘上的任务目录。成功返回 204,无响应体。不存在或不属于当前用户返回 404


相关:HTTP API 总览 · 论文对接 · 场景示例 · 文档