简历诊断

接入方后端可提交简历文件、纯文字或开放平台的 resumeData,平台会解析内容、完成 AI 深度诊断,并同步生成详细的 PDF 诊断报告。接口不创建编辑会话,只扣开发者账户余额。

价格:1.00 元/次。诊断或 PDF 生成失败时,本次费用会自动退回。
这是同步非流式接口,通常需要 20~90 秒。接入方网关和 HTTP 客户端的读取超时建议设置为至少 180 秒,请勿在等待期间使用同一个 requestId 重复发起请求。

接口

POST https://www.qmjianli.com/api_open/v1/resumes/diagnose
Authorization: Bearer {appSecret}

文件可用 application/json(Base64)或 multipart/form-data 提交;纯文字和 resumeData 使用 JSON。

请求字段

字段必填说明
requestId是幂等请求 ID,8~64 位字母、数字、下划线、冒号或连字符。已使用过的 ID 返回 REQUEST_ALREADY_PROCESSED。
targetRole否目标岗位,最长 200 个字符。传入后优先按该岗位分析匹配度和 ATS 关键词。
fileName条件JSON Base64 方式下的简历文件名,例如 resume.pdf。与 fileData 一起使用。
fileData条件JSON Base64 方式下的文件内容,可带或不带 data:...;base64, 前缀。支持 PDF、DOC、DOCX、TXT,解码后最大 3MB。
file / resume条件multipart 方式下的二进制文件字段,二选一即可。支持 PDF、DOC、DOCX、TXT,最大 3MB。
content条件简历纯文字内容。也兼容字段名 resumeText。
resumeData条件开放平台简历 JSON,可为解析结果或编辑器完整结构,最大 2MB。
文件(Base64 或 multipart)、content、resumeData 必须且只能提交一种。PDF 须能选中文字,暂不支持扫描图片 OCR。

文件上传:Base64 与 multipart

两种文件上传方式均可,按接入方习惯选择其一,不要混用。

对比项Base64 JSONmultipart 表单
Content-Typeapplication/jsonmultipart/form-data
文件正文fileData(Base64 字符串)二进制文件字段 file 或 resume
文件名单独传 fileName由表单文件名自带,一般不必再传 fileName
其他字段同级 JSON:requestId、targetRole 等同级表单字段:requestId、targetRole 等

纯文字用 content,结构化简历用 resumeData,都不需要文件字段。

方式一:Base64 上传文件

POST https://www.qmjianli.com/api_open/v1/resumes/diagnose
Authorization: Bearer {appSecret}
Content-Type: application/json

{
  "requestId": "DIAGNOSE_20260819_0001",
  "targetRole": "高级前端开发工程师",
  "fileName": "resume.pdf",
  "fileData": "JVBERi0xLjQK..."
}

本地文件读成 Base64(Node.js)

const fs = require("fs");
const path = require("path");

var filePath = "/path/to/resume.pdf";
var fileName = path.basename(filePath);
var fileData = fs.readFileSync(filePath).toString("base64");

var response = await fetch("https://www.qmjianli.com/api_open/v1/resumes/diagnose", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer " + process.env.QM_APP_SECRET
  },
  body: JSON.stringify({
    requestId: "DIAGNOSE_" + Date.now(),
    targetRole: "高级前端开发工程师",
    fileName: fileName,
    fileData: fileData
  })
});
var result = await response.json();

本地文件读成 Base64(Python)

import base64, os, requests

file_path = "/path/to/resume.pdf"
with open(file_path, "rb") as f:
    file_data = base64.b64encode(f.read()).decode("ascii")

resp = requests.post(
    "https://www.qmjianli.com/api_open/v1/resumes/diagnose",
    headers={"Authorization": "Bearer " + os.environ["QM_APP_SECRET"]},
    json={
        "requestId": "DIAGNOSE_001",
        "targetRole": "高级前端开发工程师",
        "fileName": os.path.basename(file_path),
        "fileData": file_data,
    },
    timeout=180,
)
print(resp.json())

方式二:multipart 上传文件

curl -X POST "https://www.qmjianli.com/api_open/v1/resumes/diagnose" \
  -H "Authorization: Bearer {appSecret}" \
  -F "requestId=DIAGNOSE_20260819_0001" \
  -F "targetRole=高级前端开发工程师" \
  -F "file=@/path/to/resume.pdf"

文件字段名为 file 或 resume,支持 PDF、DOC、DOCX、TXT,最大 3MB。

提交纯文字

POST https://www.qmjianli.com/api_open/v1/resumes/diagnose
Authorization: Bearer {appSecret}
Content-Type: application/json

{
  "requestId": "DIAGNOSE_20260819_0002",
  "targetRole": "高级前端开发工程师",
  "content": "张三\n前端开发工程师\n工作经历:..."
}

提交 resumeData

POST https://www.qmjianli.com/api_open/v1/resumes/diagnose
Authorization: Bearer {appSecret}
Content-Type: application/json

{
  "requestId": "DIAGNOSE_20260819_0003",
  "targetRole": "高级前端开发工程师",
  "resumeData": {
    "setData": { "tplId": 1013 },
    "basicInfo": { "name": "张三" },
    "moduleData": []
  }
}

成功返回

{
  "code": 1,
  "status": "success",
  "data": {
    "requestId": "DIAGNOSE_20260819_0003",
    "sourceType": "resumeData",
    "fileName": "",
    "report": {
      "reportTitle": "简历诊断报告",
      "candidateName": "张三",
      "targetRole": "高级前端开发工程师",
      "overallScore": 78,
      "atsScore": 74,
      "contentScore": 80,
      "structureScore": 82,
      "keywordScore": 70,
      "summary": "总体诊断摘要",
      "keyProblems": [],
      "strengths": [],
      "sectionReviews": [],
      "rewriteExamples": [],
      "actionPlan": [],
      "atsKeywords": [],
      "conclusion": "诊断结论"
    },
    "fileId": "F...",
    "downloadUrl": "https://www.qmjianli.com/api_open/v1/files/...",
    "expiresAt": "2026-08-20T01:30:00.000Z",
    "billing": {
      "action": "resume_diagnose",
      "amountCents": 100,
      "amount": "1.00",
      "balanceCents": 9900,
      "balance": "99.00"
    }
  }
}

返回字段

字段说明
requestId本次请求 ID。
sourceType来源类型:file、content 或 resumeData。
fileName上传文件名;非文件来源时为空字符串。
report结构化诊断报告,可用于页面展示。
report.overallScore综合评分,0~100。
report.atsScore / contentScore / structureScore / keywordScoreATS、内容、结构、关键词分项评分。
report.keyProblems关键问题列表,含优先级、影响和建议。
report.sectionReviews分模块诊断。
report.rewriteExamples表达改写示例。
report.actionPlan可执行行动计划。
report.atsKeywords建议补充的 ATS 关键词。
fileIdPDF 临时文件 ID。
downloadUrlPDF 诊断报告临时下载地址,默认 24 小时有效。
expiresAt下载地址过期时间。
billing扣费信息:action 为 resume_diagnose,金额 1.00 元。

需要长期保存 PDF 时,请在 expiresAt 前自行转存。

全民简历开放平台 · 与个人简历账号完全独立