API REFERENCE

API 参考

职引 Open API v1 全部端点。基础地址 https://api2.bysjob.com,所有接口走 Authorization: Bearer hecn_live_… 鉴权,建议传 Idempotency-Key 头防重复执行。

快速开始

1. 申请 API Key:登录后进入「用户中心 → API 密钥」,点击「创建 API Key」。Key 明文仅展示一次,请立即保存。

2. 认证:每个请求带 Authorization: Bearer hecn_live_…

3. 幂等:写入类接口建议带 Idempotency-Key 头(≤160 字符),重复请求返回首次结果且不重复扣费。

4. 计费:按量付费,仅扣付费积分与注册赠送积分;资源包、订阅、促销不参与。余额不足返回 402。

角色权限:求职者可调用简历解析、人岗匹配;JD 优化、批量筛选仅招聘者可用(求职者调用返回 403 recruiter_only)。

错误码

HTTPerror含义
400invalid_input参数校验失败,见 detail
401unauthorized缺少或无效的 API Key
402insufficient_points付费积分不足,充值后重试
403recruiter_only该接口仅招聘者可用
409idempotency_key_in_progress同 Key 请求正在执行,稍后重试
413payload_too_large请求体超 75MB 或 data URL 超 25M 字符
429open_api_quota_exceeded超出日/月请求限额
500internal_error服务异常,凭 request_id 联系排查

端点概览

方法路径计费
POST/api/open/v1/resumes/parse按页计费:TextIn xParse 0.05 积分/页(5 point_cents/页),不向上取整
POST/api/open/v1/matches/resume-jd固定计费:1 积分/次(100 point_cents),与模型实际消耗无关
POST/api/open/v1/jds/optimize按模型实际 token 消耗计费,最低 1 积分/次(100 point_cents)
POST/api/open/v1/batches/screen按候选人数量计费:1 积分/位(100 point_cents/位)
GET/api/open/v1/batches/:id本接口不扣费

简历解析

POST/api/open/v1/resumes/parse

将 PDF 简历解析为结构化纯文本,按页计费。适合 ATS、校招系统与人才库做入库前预处理。

参数类型必填说明
fileDataUrlstringPDF 的 base64 data URL,形如 data:application/pdf;base64,...,最长 25,000,000 字符。
fileNamestring文件名,最长 240 字符,仅用于审计展示。
pagesinteger显式指定页数(1–10000)。不传则按 PDF 内部 /Type /Page 估算。
timeoutMsinteger单次解析超时(10000–660000 毫秒)。不传走默认。
curl
curl -X POST https://api2.bysjob.com/api/open/v1/resumes/parse \
  -H "Authorization: Bearer hecn_live_xxx" \
  -H "Idempotency-Key: parse-resume-001" \
  -H "Content-Type: application/json" \
  -d '{
    "fileDataUrl": "data:application/pdf;base64,JVBERi0xLjQK...",
    "fileName": "张三_前端工程师.pdf",
    "pages": 3
  }'
json
{
  "ok": true,
  "request_id": "8f3c...e21",
  "data": {
    "text": "张三 | 前端工程师\n联系方式:...\n教育背景:...",
    "pages": 3
  },
  "usage": { "pages": 3, "provider": "textin", "model": "xparse-document-parse" },
  "billing": {
    "billed_point_cents": 15,
    "billed_points": 0.15,
    "balance_point_cents": 9985,
    "resource_point_cents": 0
  }
}

计费:按页计费:TextIn xParse 0.05 积分/页(5 point_cents/页),不向上取整。3 页 = 0.15 积分。

  • 解析走 B 端 TextIn xParse,原文不长期存储,批量任务入库时以占位符替代明文。
  • data URL 过大(超 25M 字符)直接返回 413;全局请求体上限 75MB。

人岗匹配

POST/api/open/v1/matches/resume-jd

输入 JD 与简历文本,返回匹配分、优势、差距、关键词覆盖与下一步复核建议。

参数类型必填说明
resume_textstring简历正文,最长 12,000 字符。也接受 camelCase resumeText。
jd_textstring岗位描述正文,10–8,000 字符。也接受 camelCase jdText。
job_titlestring岗位名称,最长 200 字符,辅助匹配定向。也接受 camelCase jobTitle。
curl
curl -X POST https://api2.bysjob.com/api/open/v1/matches/resume-jd \
  -H "Authorization: Bearer hecn_live_xxx" \
  -H "Idempotency-Key: match-001" \
  -H "Content-Type: application/json" \
  -d '{
    "resume_text": "张三,5 年前端经验,精通 React/TypeScript...",
    "jd_text": "招聘高级前端工程师,要求熟悉 React、TypeScript、Webpack..."
  }'
json
{
  "ok": true,
  "request_id": "a1b2...c3d4",
  "data": {
    "score": 78,
    "strengths": ["React 5 年实战", "TypeScript 类型体系熟悉"],
    "gaps": ["缺少 Node.js 后端经验"],
    "actions": ["建议补充 1-2 个全栈项目案例"]
  },
  "usage": { "prompt_tokens": 1820, "completion_tokens": 320, "total_tokens": 2140 },
  "billing": {
    "billed_point_cents": 100,
    "billed_points": 1,
    "balance_point_cents": 9885,
    "resource_point_cents": 0
  }
}

计费:固定计费:1 积分/次(100 point_cents),与模型实际消耗无关。

  • 字段同时接受 snake_case 与 camelCase,建议统一用 snake_case。

JD 优化

POST/api/open/v1/jds/optimize

把招聘需求转成更清晰、合规、可发布的岗位描述,便于企业系统内嵌。

请求体约束

jd_text、job_title、requirements 至少传一个,否则返回 400 invalid_input。
参数类型必填说明
jd_textstring原始 JD 正文,最长 8,000 字符。也接受 camelCase jdText。
job_titlestring岗位名称,最长 200 字符。也接受 camelCase jobTitle。
requirementsstring岗位要求要点,最长 8,000 字符。
locationstring工作地点,最长 120 字符。
experiencestring经验要求,最长 120 字符。
curl
curl -X POST https://api2.bysjob.com/api/open/v1/jds/optimize \
  -H "Authorization: Bearer hecn_live_xxx" \
  -H "Idempotency-Key: jd-opt-001" \
  -H "Content-Type: application/json" \
  -d '{
    "job_title": "高级前端工程师",
    "requirements": "React/TypeScript/性能优化/跨团队协作",
    "location": "上海",
    "experience": "3-5 年"
  }'
json
{
  "ok": true,
  "request_id": "e5f6...7890",
  "data": {
    "content": "## 高级前端工程师(上海)\n\n### 岗位职责\n1. ..."
  },
  "usage": { "prompt_tokens": 960, "completion_tokens": 740, "total_tokens": 1700 },
  "billing": {
    "billed_point_cents": 100,
    "billed_points": 1,
    "balance_point_cents": 9785,
    "resource_point_cents": 0
  }
}

计费:按模型实际 token 消耗计费,最低 1 积分/次(100 point_cents)。

  • 仅招聘者可用;求职者调用返回 403 recruiter_only。

批量筛选

POST/api/open/v1/batches/screen

JD + 多份简历异步处理,立即返回 batch_id,随后用查询接口轮询进度与候选人排序。

参数类型必填说明
jd_textstring岗位描述正文,10–8,000 字符。也接受 camelCase jdText。
labelstring任务标签,最长 120 字符,便于检索。
resumesarray<object>候选人简历数组,1–20 条。每条含 text(必填,≤12,000 字符)与 label(可选,≤120 字符)。
curl
curl -X POST https://api2.bysjob.com/api/open/v1/batches/screen \
  -H "Authorization: Bearer hecn_live_xxx" \
  -H "Idempotency-Key: batch-001" \
  -H "Content-Type: application/json" \
  -d '{
    "jd_text": "招聘高级前端工程师,要求 React/TypeScript...",
    "label": "前端组-0625",
    "resumes": [
      { "label": "张三", "text": "5 年前端,精通 React..." },
      { "label": "李四", "text": "3 年前端,Vue 转 React..." }
    ]
  }'
json
{
  "ok": true,
  "request_id": "b7c8...d9e0",
  "data": { "batch_id": "f1a2...3b4c", "status": "running", "total": 2 },
  "billing": { "billed_point_cents": 0, "billed_points": 0, "balance_point_cents": 0, "resource_point_cents": 0 },
  "estimated_point_cents": 200,
  "billing_note": "费用按候选人数量 × 1 积分异步结算,首响应不计费。"
}

计费:按候选人数量计费:1 积分/位(100 point_cents/位)。失败项不扣费。费用异步结算,首响应仅给预估。

  • 仅招聘者可用;求职者调用返回 403 recruiter_only。
  • 批量任务异步执行,进程崩溃残留的 running 任务会在 30 分钟后被后台回收标 failed。
  • 真实扣费以 GET /api/open/v1/batches/:id 返回为准。

查询批量任务

GET/api/open/v1/batches/:id

按 batch_id 查询批量筛选任务的进度、候选人排序与汇总结论。

参数类型必填说明
idstring (path)创建批量任务时返回的 batch_id。
curl
curl -X GET https://api2.bysjob.com/api/open/v1/batches/f1a2...3b4c \
  -H "Authorization: Bearer hecn_live_xxx"
json
{
  "ok": true,
  "data": {
    "batch_id": "f1a2...3b4c",
    "status": "done",
    "total": 2,
    "completed": 2,
    "label": "前端组-0625",
    "created_at": "2026-06-25T10:00:00.000Z",
    "items": [
      { "candidate_label": "张三", "score": 82, "tags": ["React", "TypeScript"], "recommendation": "建议进入面试;补充全栈案例" },
      { "candidate_label": "李四", "score": 61, "tags": ["Vue"], "recommendation": "可考虑,需补充考察" }
    ],
    "summary": {
      "matchConclusion": "已完成 2 位候选人与 JD 的批量匹配,当前最匹配为「张三」(82 分,优先推进)。",
      "topReasons": ["第 1 名「张三」:82 分,优先推进;建议进入面试"]
    }
  }
}

计费:本接口不扣费。批量费用在创建任务时按候选人数量异步结算。

  • 仅招聘者可用;求职者调用返回 403 recruiter_only。
  • status 取值:running / done / failed。running 超过 30 分钟会被惰性回收为 failed。