简历诊断
接入方后端可提交简历文件、纯文字或开放平台的 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 JSON | multipart 表单 |
|---|---|---|
| Content-Type | application/json | multipart/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 / keywordScore | ATS、内容、结构、关键词分项评分。 |
| report.keyProblems | 关键问题列表,含优先级、影响和建议。 |
| report.sectionReviews | 分模块诊断。 |
| report.rewriteExamples | 表达改写示例。 |
| report.actionPlan | 可执行行动计划。 |
| report.atsKeywords | 建议补充的 ATS 关键词。 |
| fileId | PDF 临时文件 ID。 |
| downloadUrl | PDF 诊断报告临时下载地址,默认 24 小时有效。 |
| expiresAt | 下载地址过期时间。 |
| billing | 扣费信息:action 为 resume_diagnose,金额 1.00 元。 |
需要长期保存 PDF 时,请在 expiresAt 前自行转存。