招聘候选人 · 入职、Offer 与面试接口
本页是招聘候选人接口(租户令牌)的续篇,可结合前文一起阅读。
更新人才在职状态
标记人才「入职/离职」;仅适用于未通过飞书招聘投递入职的候选人,且通过本接口标记入职的只能用本接口标记离职。仅自建应用可用。限频:20 次/分钟。所需权限:hire:talent(更新人才信息)。
函数签名:
Task<FeishuNullDataApiResult?> UpdateTalentOnboardStatusAsync(
[Path] string talent_id,
[Body] UpdateTalentOnboardStatusRequest request,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
talent_id | string | ✅ | 人才 ID,示例值:6930815272790114324 |
request | UpdateTalentOnboardStatusRequest | ✅ | 请求体(operation 必填:1 入职 / 2 离职;onboard_time/overboard_time 按操作类型必填,毫秒时间戳) |
响应:
{
"code": 0,
"msg": "success",
"data": {}
}说明:仅自建应用可用;通过本接口标记入职的人才只能通过本接口标记离职。
加入/移出人才黑名单
按人才 ID 将人才加入或移出招聘黑名单。仅自建应用可用。限频:10 次/秒。所需权限:hire:talent_blocklist(更新黑名单信息)。
函数签名:
Task<FeishuNullDataApiResult?> ChangeTalentBlockAsync(
[Body] ChangeTalentBlockRequest request,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
request | ChangeTalentBlockRequest | ✅ | 请求体(talent_id 必填:人才 ID;option 必填:1 加入 / 2 移出;reason 加入黑名单时必填) |
响应:
{
"code": 0,
"msg": "success",
"data": {}
}说明:仅自建应用可用;option 为 1(加入黑名单)时 reason 必填。
获取背调信息列表
根据投递 ID 或背调更新时间,分页批量获取背调订单信息(含报告、进度、自定义字段等)(查询参数采用查询对象模式 BackgroundCheckOrderListQuery,见 AGENTS.md API-2)。限频:1000 次/分钟、50 次/秒。所需权限:hire:background_check_order(更新招聘背调信息)或 hire:background_check_order:readonly(获取招聘背调信息)。字段权限:contact:user.employee_id:readonly(user_id_type=user_id 时返回的发起人 ID)。
函数签名:
Task<FeishuApiResult<GetBackgroundCheckOrderListResult>?> GetBackgroundCheckOrderListAsync(
[Query] BackgroundCheckOrderListQuery? query = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
query | BackgroundCheckOrderListQuery? | ⚪ | 分页、投递 ID、更新时间范围与用户 ID 类型查询参数,该对象会整体展开为查询参数 |
响应:
{
"code": 0,
"msg": "success",
"data": {
"has_more": false,
"page_token": "",
"items": []
}
}说明:data.items 为 BackgroundCheckOrder[],含报告、进度与自定义字段;可按更新时间增量拉取。
查询背调信息列表
按背调 ID 列表、投递 ID、时间范围、订单状态等条件组合分页查询背调订单;传入 background_check_order_id_list 时其余查询字段全部失效。限频:10 次/秒。所需权限:hire:background_check_order(更新招聘背调信息)或 hire:background_check_order:readonly(获取招聘背调信息)。字段权限:contact:user.employee_id:readonly、hire:employee.email:readonly、hire:employee.mobile:readonly、hire:talent.email:readonly、hire:talent.mobile:readonly。
函数签名:
Task<FeishuApiResult<GetBackgroundCheckOrderListResult>?> BatchQueryBackgroundCheckOrderAsync(
[Body] BatchQueryBackgroundCheckOrderRequest request,
[Query("user_id_type")] string? user_id_type = null,
[Query("page_token")] string? page_token = null,
[Query("page_size")] int? page_size = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
request | BatchQueryBackgroundCheckOrderRequest | ✅ | 查询请求体(background_check_order_id_list 最大 20 个;application_id、order_status、创建/更新时间范围选填) |
user_id_type | string? | ⚪ | 用户 ID 类型(open_id/union_id/user_id),默认 open_id;取 user_id 时需 contact:user.employee_id:readonly 字段权限 |
page_token | string? | ⚪ | 分页标记,首次请求不填,翻页时取上一次返回的 page_token |
page_size | int? | ⚪ | 每页数量,默认 10,最大 100 |
响应:
{
"code": 0,
"msg": "success",
"data": {
"has_more": false,
"page_token": "",
"items": []
}
}说明:传入 background_check_order_id_list(最多 20 个)时其余查询字段全部失效。
创建三方协议
在校招投递上创建一条三方协议记录;需在招聘后台「设置-候选人流程管理-三方协议设置」勾选「通过 API 维护三方协议」,且投递为校招投递、Offer 办公地点在中国大陆。限频:10 次/秒。所需权限:hire:tripartite_agreement(更新三方协议)。
函数签名:
Task<FeishuApiResult<CreateTripartiteAgreementResult>?> CreateTripartiteAgreementAsync(
[Body] CreateTripartiteAgreementRequest request,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
request | CreateTripartiteAgreementRequest | ✅ | 创建请求体(application_id 必填:投递 ID;state 必填:协议状态;create_time 必填:创建时间毫秒时间戳) |
响应:
{
"code": 0,
"msg": "success",
"data": {
"id": ""
}
}说明:须先勾选「通过 API 维护三方协议」;仅限校招投递且 Offer 办公地点在中国大陆。
获取三方协议
按三方协议 ID 或投递 ID 查询三方协议信息(状态、创建/修改时间);application_id 与 tripartite_agreement_id 至少填一个,都填时以协议 ID 为准(当前接口只返回一条数据,page_size/page_token 实际无效)。限频:10 次/秒。所需权限:hire:tripartite_agreement(更新三方协议)或 hire:tripartite_agreement:readonly(查看三方协议信息)。
函数签名:
Task<FeishuApiResult<GetTripartiteAgreementListResult>?> GetTripartiteAgreementListAsync(
[Query("page_size")] int? page_size = null,
[Query("page_token")] string? page_token = null,
[Query("application_id")] string? application_id = null,
[Query("tripartite_agreement_id")] string? tripartite_agreement_id = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
page_size | int? | ⚪ | 分页大小(当前接口实际无效) |
page_token | string? | ⚪ | 分页标记(当前接口实际无效) |
application_id | string? | ⚪ | 投递 ID,示例值:6930815272790114324 |
tripartite_agreement_id | string? | ⚪ | 三方协议 ID,由创建接口返回,示例值:6930815272790114325 |
响应:
{
"code": 0,
"msg": "success",
"data": {
"items": [],
"page_token": "",
"has_more": false
}
}说明:application_id 与 tripartite_agreement_id 至少填一个,都填时以协议 ID 为准;当前只返回一条数据,分页参数无效。
更新三方协议
更新已有三方协议的状态与修改时间;需在招聘后台勾选「通过 API 维护三方协议」。限频:10 次/秒。所需权限:hire:tripartite_agreement(更新三方协议)。
函数签名:
Task<FeishuNullDataApiResult?> UpdateTripartiteAgreementAsync(
[Path] string tripartite_agreement_id,
[Body] UpdateTripartiteAgreementRequest request,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
tripartite_agreement_id | string | ✅ | 三方协议 ID,示例值:7084008015948283905 |
request | UpdateTripartiteAgreementRequest | ✅ | 更新请求体(state 必填:协议状态;modify_time 必填:修改时间毫秒时间戳,不可小于创建或上次修改时间) |
响应:
{
"code": 0,
"msg": "success",
"data": {}
}说明:modify_time 不可小于创建时间或上次修改时间。
删除三方协议
删除某投递下的三方协议记录;需在招聘后台勾选「通过 API 维护三方协议」。限频:10 次/秒。所需权限:hire:tripartite_agreement(更新三方协议)。
函数签名:
Task<FeishuNullDataApiResult?> DeleteTripartiteAgreementAsync(
[Path] string tripartite_agreement_id,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
tripartite_agreement_id | string | ✅ | 三方协议 ID,示例值:6930815272790114324 |
响应:
{
"code": 0,
"msg": "success",
"data": {}
}说明:成功时 data 为空对象;须先勾选「通过 API 维护三方协议」。
操作候选人入职
按投递 ID 操作候选人入职并创建员工;需在招聘后台开启「通过 e-HR / OA 办公系统同步候选人入职、转正、离职事件」,且投递须处于「待入职」阶段;仅自建应用可用。限频:20 次/秒。所需权限:hire:application(更新投递信息)。字段权限:contact:user.employee_id:readonly(user_id_type=user_id 时返回的用户 ID 字段)。
函数签名:
Task<FeishuApiResult<TransferOnboardResult>?> TransferOnboardAsync(
[Path] string application_id,
[Body] TransferOnboardRequest request,
[Query("user_id_type")] string? user_id_type = null,
[Query("department_id_type")] string? department_id_type = null,
[Query("job_level_id_type")] string? job_level_id_type = null,
[Query("job_family_id_type")] string? job_family_id_type = null,
[Query("employee_type_id_type")] string? employee_type_id_type = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
application_id | string | ✅ | 投递 ID,示例值:7073372582620416300 |
request | TransferOnboardRequest | ✅ | 请求体(actual_onboard_time 实际入职时间毫秒时间戳,不传默认当前时间;部门/上级/序列/职级等选填) |
user_id_type | string? | ⚪ | 用户 ID 类型(open_id/union_id/user_id),默认 open_id |
department_id_type | string? | ⚪ | 部门 ID 类型(open_department_id/department_id/people_admin_department_id),默认 people_admin_department_id |
job_level_id_type | string? | ⚪ | 职级 ID 类型(people_admin_job_level_id/job_level_id),默认 people_admin_job_level_id |
job_family_id_type | string? | ⚪ | 职位序列 ID 类型(people_admin_job_category_id/job_family_id),默认 people_admin_job_category_id |
employee_type_id_type | string? | ⚪ | 人员类型 ID 类型(people_admin_employee_type_id/employee_type_enum_id),默认 people_admin_employee_type_id |
响应:
{
"code": 0,
"msg": "success",
"data": {
"employee": {}
}
}说明:data.employee 为 Employee,含员工 ID、入职/转正状态与时间、部门/上级等;投递须处于「待入职」阶段。
取消候选人入职
取消待入职阶段候选人的入职(已入职者请改用更新员工状态接口做离职);集成了飞书人事且已在人事创建待入职记录的候选人只能在飞书人事取消;仅自建应用可用。限频:10 次/秒。所需权限:hire:application(更新投递信息)。
函数签名:
Task<FeishuNullDataApiResult?> CancelOnboardAsync(
[Path] string application_id,
[Body] CancelOnboardRequest request,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
application_id | string | ✅ | 投递 ID,示例值:1111111111 |
request | CancelOnboardRequest | ✅ | 请求体(termination_type 必填:1 我们拒绝了候选人 / 22 候选人拒绝了我们 / 27 其他;具体原因 ID 列表与备注选填) |
响应:
{
"code": 0,
"msg": "success",
"data": {}
}说明:仅自建应用可用;已入职者请改用「更新员工状态」接口办理离职。
通过投递 ID 获取入职信息
通过投递 ID 查询员工入职信息(查询参数采用查询对象模式 GetEmployeeByApplicationQuery,见 AGENTS.md API-2)。限频:1000 次/分钟、50 次/秒。所需权限:hire:employee(更新招聘员工信息)或 hire:employee:readonly(获取招聘员工信息)。字段权限:contact:user.employee_id:readonly(user_id_type=user_id 时返回的用户 ID 字段)。
函数签名:
Task<FeishuApiResult<GetEmployeeByApplicationResult>?> GetEmployeeByApplicationAsync(
[Query] GetEmployeeByApplicationQuery query,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
query | GetEmployeeByApplicationQuery | ✅ | 投递 ID(必填)与各类 ID 类型查询参数,该对象会整体展开为查询参数 |
响应:
{
"code": 0,
"msg": "success",
"data": {
"employee": {}
}
}说明:data.employee 为 Employee,含飞书人事雇佣 ID external_employment_id。
通过员工 ID 获取入职信息
通过员工 ID 查询入职信息。限频:1000 次/分钟、50 次/秒。所需权限:hire:employee:readonly(获取招聘员工信息)或 hire:employee(更新招聘员工信息)。字段权限:contact:user.employee_id:readonly(user_id_type=user_id 时返回的用户 ID 字段)。
函数签名:
Task<FeishuApiResult<GetEmployeeResult>?> GetEmployeeAsync(
[Path] string employee_id,
[Query("user_id_type")] string? user_id_type = null,
[Query("department_id_type")] string? department_id_type = null,
[Query("job_level_id_type")] string? job_level_id_type = null,
[Query("job_family_id_type")] string? job_family_id_type = null,
[Query("employee_type_id_type")] string? employee_type_id_type = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
employee_id | string | ✅ | 员工 ID,示例值:7379910335417927975 |
user_id_type | string? | ⚪ | 用户 ID 类型(open_id/union_id/user_id),默认 open_id |
department_id_type | string? | ⚪ | 部门 ID 类型(open_department_id/department_id/people_admin_department_id),默认 people_admin_department_id |
job_level_id_type | string? | ⚪ | 职级 ID 类型(people_admin_job_level_id/job_level_id),默认 people_admin_job_level_id |
job_family_id_type | string? | ⚪ | 职位序列 ID 类型(people_admin_job_category_id/job_family_id),默认 people_admin_job_category_id |
employee_type_id_type | string? | ⚪ | 人员类型 ID 类型(people_admin_employee_type_id/employee_type_enum_id),默认 people_admin_employee_type_id |
响应:
{
"code": 0,
"msg": "success",
"data": {
"employee": {}
}
}说明:data.employee 为 Employee 入职信息。
更新员工状态
根据员工 ID 更新招聘系统内的转正、离职、恢复待入职、撤销离职、撤销转正状态;仅自建应用可用。限频:1000 次/分钟、50 次/秒。所需权限:hire:employee(更新招聘员工信息)。字段权限:contact:user.employee_id:readonly(user_id_type=user_id 时返回的用户 ID 字段)。
函数签名:
Task<FeishuApiResult<PatchEmployeeResult>?> PatchEmployeeAsync(
[Path] string employee_id,
[Body] PatchEmployeeRequest request,
[Query("user_id_type")] string? user_id_type = null,
[Query("department_id_type")] string? department_id_type = null,
[Query("job_level_id_type")] string? job_level_id_type = null,
[Query("job_family_id_type")] string? job_family_id_type = null,
[Query("employee_type_id_type")] string? employee_type_id_type = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
employee_id | string | ✅ | 员工 ID,示例值:6891613503971461384 |
request | PatchEmployeeRequest | ✅ | 请求体(operation 必填:1 转正 / 2 离职 / 3 恢复至待入职 / 4 撤销离职 / 5 撤销转正;conversion_info 转正时必填、overboard_info 离职时必填) |
user_id_type | string? | ⚪ | 用户 ID 类型(open_id/union_id/user_id),默认 open_id |
department_id_type | string? | ⚪ | 部门 ID 类型(open_department_id/department_id/people_admin_department_id),默认 people_admin_department_id |
job_level_id_type | string? | ⚪ | 职级 ID 类型(people_admin_job_level_id/job_level_id),默认 people_admin_job_level_id |
job_family_id_type | string? | ⚪ | 职位序列 ID 类型(people_admin_job_category_id/job_family_id),默认 people_admin_job_category_id |
employee_type_id_type | string? | ⚪ | 人员类型 ID 类型(people_admin_employee_type_id/employee_type_enum_id),默认 people_admin_employee_type_id |
响应:
{
"code": 0,
"msg": "success",
"data": {
"employee": {}
}
}说明:operation 为 1 时 conversion_info 必填,为 2 时 overboard_info 必填;仅自建应用可用。
更新 e-HR 导入任务结果
处理完「导入 e-HR」事件后,向飞书回写该导入任务的成功/失败结果及跳转链接;仅自建应用可用。限频:50 次/秒(英文文档标注特殊限频)。所需权限:hire:ehr_import(更新导入 e-HR 任务)。
函数签名:
Task<FeishuNullDataApiResult?> PatchEhrImportTaskAsync(
[Path] string ehr_import_task_id,
[Body] PatchEhrImportTaskRequest request,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
ehr_import_task_id | string | ✅ | 导入任务 ID,来源于「导入 e-HR」事件中的 task_id,示例值:6914551145542568199 |
request | PatchEhrImportTaskRequest | ✅ | 请求体(state 必填:1 导入成功 / 2 导入失败;fail_reason 失败原因、redirect_url 跳转链接选填) |
响应:
{
"code": 0,
"msg": "success",
"data": {}
}说明:仅自建应用可用;ehr_import_task_id 取自「导入 e-HR」事件的 task_id。
创建 Offer
传入 Offer 基本信息,为指定投递创建 Offer(正式或实习);仅自建应用可用。限频:10 次/秒。所需权限:hire:offer(更新 offer 信息)。字段权限:contact:user.employee_id:readonly(user_id_type=user_id 时返回的敏感字段)。
函数签名:
Task<FeishuApiResult<CreateOfferResult>?> CreateOfferAsync(
[Body] CreateOfferRequest request,
[Query("user_id_type")] string? user_id_type = null,
[Query("department_id_type")] string? department_id_type = null,
[Query("job_level_id_type")] string? job_level_id_type = null,
[Query("job_family_id_type")] string? job_family_id_type = null,
[Query("employee_type_id_type")] string? employee_type_id_type = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
request | CreateOfferRequest | ✅ | 创建请求体(application_id 必填;basic_info 必填,含部门/直属上级/负责人/操作人;salary_info、customized_info_list 选填) |
user_id_type | string? | ⚪ | 用户 ID 类型(open_id/union_id/user_id/people_admin_id),默认 open_id |
department_id_type | string? | ⚪ | 部门 ID 类型(open_department_id/department_id),默认 open_department_id |
job_level_id_type | string? | ⚪ | 职级 ID 类型(people_admin_job_level_id/job_level_id),默认 people_admin_job_level_id |
job_family_id_type | string? | ⚪ | 职位序列 ID 类型(people_admin_job_category_id/job_family_id),默认 people_admin_job_category_id |
employee_type_id_type | string? | ⚪ | 人员类型 ID 类型(people_admin_employee_type_id/employee_type_enum_id),默认 people_admin_employee_type_id |
响应:
{
"code": 0,
"msg": "success",
"data": {
"offer_id": "",
"application_id": "",
"schema_id": "",
"offer_type": 0,
"basic_info": {},
"salary_info": {},
"customized_info_list": []
}
}说明:仅自建应用可用;schema_id 需使用「获取 Offer 申请表模板信息」返回的最新版本。
更新 Offer 信息
全量覆盖更新 Offer 的基本信息、薪资信息与自定义信息;状态为「Offer 已发送(6)」「候选人已接受(7)」时不可更新;仅自建应用可用。限频:10 次/秒。所需权限:hire:offer(更新 offer 信息)。字段权限:contact:user.employee_id:readonly(user_id_type=user_id 时返回的敏感字段)。
函数签名:
Task<FeishuApiResult<UpdateOfferResult>?> UpdateOfferAsync(
[Path] string offer_id,
[Body] UpdateOfferRequest request,
[Query("user_id_type")] string? user_id_type = null,
[Query("department_id_type")] string? department_id_type = null,
[Query("job_level_id_type")] string? job_level_id_type = null,
[Query("job_family_id_type")] string? job_family_id_type = null,
[Query("employee_type_id_type")] string? employee_type_id_type = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
offer_id | string | ✅ | Offer ID,可通过获取 Offer 列表接口获取,示例值:7085989097067563300 |
request | UpdateOfferRequest | ✅ | 更新请求体(schema_id 必填且须最新版;basic_info 必填;旧自定义字段不传=删除) |
user_id_type | string? | ⚪ | 用户 ID 类型(open_id/union_id/user_id/people_admin_id),默认 open_id |
department_id_type | string? | ⚪ | 部门 ID 类型(open_department_id/department_id),默认 open_department_id |
job_level_id_type | string? | ⚪ | 职级 ID 类型(people_admin_job_level_id/job_level_id),默认 people_admin_job_level_id |
job_family_id_type | string? | ⚪ | 职位序列 ID 类型(people_admin_job_category_id/job_family_id),默认 people_admin_job_category_id |
employee_type_id_type | string? | ⚪ | 人员类型 ID 类型(people_admin_employee_type_id/employee_type_enum_id),默认 people_admin_employee_type_id |
响应:
{
"code": 0,
"msg": "success",
"data": {
"offer_id": "",
"schema_id": "",
"basic_info": {},
"salary_info": {},
"customized_info_list": []
}
}说明:为全量覆盖更新,旧自定义字段不传视为删除;状态为「已发送/已接受」时不可更新。
获取 Offer 信息(按投递 ID)
根据投递 ID 获取该投递下的 Offer 数据;暂不支持查询实习 Offer。限频:20 次/秒。所需权限:hire:application(更新投递信息)或 hire:application:readonly(获取投递信息)。字段权限:contact:user.employee_id:readonly(返回的敏感字段)。
函数签名:
Task<FeishuApiResult<GetApplicationOfferResult>?> GetApplicationOfferAsync(
[Path] string application_id,
[Query("user_id_type")] string? user_id_type = null,
[Query("department_id_type")] string? department_id_type = null,
[Query("job_level_id_type")] string? job_level_id_type = null,
[Query("job_family_id_type")] string? job_family_id_type = null,
[Query("employee_type_id_type")] string? employee_type_id_type = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
application_id | string | ✅ | 投递 ID,示例值:6701528341100366094 |
user_id_type | string? | ⚪ | 用户 ID 类型(open_id/union_id/user_id),默认 open_id |
department_id_type | string? | ⚪ | 部门 ID 类型(open_department_id/department_id),默认 open_department_id |
job_level_id_type | string? | ⚪ | 职级 ID 类型(people_admin_job_level_id/job_level_id),默认 people_admin_job_level_id |
job_family_id_type | string? | ⚪ | 职位序列 ID 类型(people_admin_job_category_id/job_family_id),默认 people_admin_job_category_id |
employee_type_id_type | string? | ⚪ | 人员类型 ID 类型(people_admin_employee_type_id/employee_type_enum_id),默认 people_admin_employee_type_id |
响应:
{
"code": 0,
"msg": "success",
"data": {
"offer": {}
}
}说明:data.offer 为 Offer,含 basic_info、salary_plan、offer_status 与发送记录;暂不支持查询实习 Offer。
获取 Offer 详情
根据 Offer ID 获取 Offer 详细信息(含薪资计划、发送记录与签署信息)。限频:20 次/秒。所需权限:hire:offer:low_sensitive_info:readonly(查看 offer 的基础信息)/ hire:offer:readonly(获取 offer 信息)/ hire:offer(更新 offer 信息)。字段权限:hire:offer:readonly、hire:offer、contact:user.employee_id:readonly(remark、level、salary_plan 等敏感字段)。
函数签名:
Task<FeishuApiResult<GetOfferResult>?> GetOfferAsync(
[Path] string offer_id,
[Query("user_id_type")] string? user_id_type = null,
[Query("department_id_type")] string? department_id_type = null,
[Query("job_level_id_type")] string? job_level_id_type = null,
[Query("job_family_id_type")] string? job_family_id_type = null,
[Query("employee_type_id_type")] string? employee_type_id_type = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
offer_id | string | ✅ | Offer ID,示例值:7085989097067563300 |
user_id_type | string? | ⚪ | 用户 ID 类型(open_id/union_id/user_id/people_admin_id),默认 open_id |
department_id_type | string? | ⚪ | 部门 ID 类型(open_department_id/department_id),默认 open_department_id |
job_level_id_type | string? | ⚪ | 职级 ID 类型(people_admin_job_level_id/job_level_id),默认 people_admin_job_level_id |
job_family_id_type | string? | ⚪ | 职位序列 ID 类型(people_admin_job_category_id/job_family_id),默认 people_admin_job_category_id |
employee_type_id_type | string? | ⚪ | 人员类型 ID 类型(people_admin_employee_type_id/employee_type_enum_id),默认 people_admin_employee_type_id |
响应:
{
"code": 0,
"msg": "success",
"data": {
"offer": {}
}
}说明:data.offer 为 Offer 详情,含 offer_type、offer_status、basic_info、salary_plan 等;敏感字段需对应字段权限。
获取 Offer 列表
根据人才 ID 分页获取 Offer 列表。限频:1000 次/分钟、50 次/秒。所需权限:hire:offer:readonly(获取 offer 信息)或 hire:offer(更新 offer 信息)。字段权限:contact:user.employee_id:readonly(返回的用户 ID 字段)。
函数签名:
Task<FeishuApiResult<GetOfferListResult>?> GetOfferListAsync(
[Query("talent_id")] string talent_id,
[Query("page_token")] string? page_token = null,
[Query("page_size")] int? page_size = null,
[Query("user_id_type")] string? user_id_type = null,
[Query("employee_type_id_type")] string? employee_type_id_type = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
talent_id | string | ✅ | 人才 ID(必填),示例值:6930815272790114324 |
page_token | string? | ⚪ | 分页标记,首次请求不填,翻页时取上一次返回的 page_token |
page_size | int? | ⚪ | 每页数量,最大 200,默认 10 |
user_id_type | string? | ⚪ | 用户 ID 类型(open_id/union_id/user_id/people_admin_id),默认 open_id(将下线,不建议使用) |
employee_type_id_type | string? | ⚪ | 人员类型 ID 类型(people_admin_employee_type_id/employee_type_enum_id),默认 people_admin_employee_type_id |
响应:
{
"code": 0,
"msg": "success",
"data": {
"has_more": false,
"page_token": "",
"items": []
}
}说明:data.items 为 OfferListInfo[];talent_id 必填,user_id_type 默认 open_id(将下线)。
更新 Offer 状态
通过 Offer ID 更新 Offer 的审批状态或发送和接受状态(对接 OA 场景);需在飞书招聘 Offer 规则设置中开启对应 OA 开关,否则返回错误;仅自建应用可用。限频:100 次/分钟。所需权限:hire:offer(更新 offer 信息)。
函数签名:
Task<FeishuNullDataApiResult?> ChangeOfferStatusAsync(
[Path] string offer_id,
[Body] ChangeOfferStatusRequest request,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
offer_id | string | ✅ | Offer ID,示例值:7085989097067563300 |
request | ChangeOfferStatusRequest | ✅ | 请求体(offer_status 必填:2 审批中/3 审批已撤回/4 审批通过/5 审批不通过/6 已发送/7 被接受/8 被拒绝/9 已失效/10 已创建;6 时需 expiration_date,8 时需 termination_reason_id_list) |
响应:
{
"code": 0,
"msg": "success",
"data": {}
}说明:须先在 Offer 规则设置中开启对应 OA 开关;状态 6 需 expiration_date,状态 8 需 termination_reason_id_list。
更新实习 Offer 入/离职状态
对「实习待入职」的实习 Offer 确认入职/放弃入职,或对「实习已入职」的实习 Offer 操作离职;仅自建应用可用。限频:1000 次/分钟、50 次/秒。所需权限:hire:offer(更新 offer 信息)。
函数签名:
Task<FeishuApiResult<ChangeInternOfferStatusResult>?> ChangeInternOfferStatusAsync(
[Path] string offer_id,
[Body] ChangeInternOfferStatusRequest request,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
offer_id | string | ✅ | 实习 Offer ID,示例值:7085989097067563300 |
request | ChangeInternOfferStatusRequest | ✅ | 请求体(operation 必填:confirm_onboarding/cancel_onboarding/offboard;onboarding_info 在确认入职时必填,offboarding_info 在离职时必填) |
响应:
{
"code": 0,
"msg": "success",
"data": {
"offer_id": "",
"operation": "",
"onboarding_info": {},
"offboarding_info": {}
}
}说明:仅自建应用可用;确认入职时 onboarding_info 必填,离职时 offboarding_info 必填。
获取面试信息
按投递 ID、面试 ID 或面试开始时间区间筛选,分页获取面试列表;application_id、interview_id、start_time、end_time 不允许同时为空(查询参数采用查询对象模式 InterviewListQuery,见 AGENTS.md API-2)。限频:50 次/秒。所需权限:hire:interview:readonly(获取面试信息)或 hire:interview(更新面试信息)。字段权限:contact:user.employee_id:readonly(user_id_type=user_id 时返回的用户 ID 字段)。
函数签名:
Task<FeishuApiResult<GetInterviewListResult>?> GetInterviewListAsync(
[Query] InterviewListQuery? query = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
query | InterviewListQuery? | ⚪ | 分页、投递/面试 ID、面试开始时间范围与各类 ID 类型查询参数,该对象会整体展开为查询参数 |
响应:
{
"code": 0,
"msg": "success",
"data": {
"items": [],
"has_more": false,
"page_token": ""
}
}说明:application_id、interview_id、start_time、end_time 不允许同时为空;data.items 为 InterviewExtend[]。
获取人才面试信息
按人才 ID 获取该人才下所有投递的全部面试信息(不分页)。限频:1000 次/分钟、50 次/秒。所需权限:hire:interview:readonly(获取面试信息)或 hire:interview(更新面试信息)。字段权限:contact:user.employee_id:readonly(user_id_type=user_id 时返回的用户 ID 字段)。
函数签名:
Task<FeishuApiResult<GetInterviewByTalentResult>?> GetInterviewByTalentAsync(
[Query("talent_id")] string talent_id,
[Query("user_id_type")] string? user_id_type = null,
[Query("job_level_id_type")] string? job_level_id_type = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
talent_id | string | ✅ | 人才 ID(必填),示例值:6930815272790114324 |
user_id_type | string? | ⚪ | 用户 ID 类型(open_id/union_id/user_id/people_admin_id),默认 open_id;取 user_id 时需 contact:user.employee_id:readonly 字段权限 |
job_level_id_type | string? | ⚪ | 职级 ID 类型(people_admin_job_level_id/job_level_id),默认 people_admin_job_level_id |
响应:
{
"code": 0,
"msg": "success",
"data": {
"items": []
}
}说明:data.items 为 TalentInterview[],按投递分组(含 application_id、interview_list),结果不分页。
获取面试评价详细信息(v1)
按面试评价 ID 获取单条面试评价详情(结论、得分、面试官、题目与维度评价)。限频:20 次/秒。所需权限:hire:interview:readonly(获取面试信息)或 hire:interview(更新面试信息)。字段权限:contact:user.employee_id:readonly。
函数签名:
Task<FeishuApiResult<GetInterviewRecordResult>?> GetInterviewRecordAsync(
[Path] string interview_record_id,
[Query("user_id_type")] string? user_id_type = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
interview_record_id | string | ✅ | 面试评价 ID,示例值:7047318856652261676 |
user_id_type | string? | ⚪ | 用户 ID 类型(open_id/union_id/user_id),默认 open_id |
响应:
{
"code": 0,
"msg": "success",
"data": {
"interview_record": {}
}
}说明:data.interview_record 为 v1 版 InterviewRecord,含结论、得分、面试官、题目与维度评价。
获取面试评价详细信息(新版 v2)
按面试评价 ID 获取新版结构详情(record_score 总得分与 module_assessments 模块评价)。限频:20 次/秒。所需权限:hire:interview:readonly(获取面试信息)或 hire:interview(更新面试信息)。字段权限:contact:user.employee_id:readonly。
函数签名:
Task<FeishuApiResult<GetInterviewRecordV2Result>?> GetInterviewRecordV2Async(
[Path] string interview_record_id,
[Query("user_id_type")] string? user_id_type = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
interview_record_id | string | ✅ | 面试评价 ID,示例值:7047318856652261676 |
user_id_type | string? | ⚪ | 用户 ID 类型(open_id/union_id/user_id),默认 open_id |
响应:
{
"code": 0,
"msg": "success",
"data": {
"interview_record": {}
}
}说明:data.interview_record 为 InterviewRecordV2,含 record_score 总得分与 module_assessments 模块评价。
批量获取面试评价详细信息(v1)
按评价 ID 列表或分页批量获取面试评价(v1 旧结构);传入 ids 时不分页。限频:10 次/秒。所需权限:hire:interview:readonly(获取面试信息)或 hire:interview(更新面试信息)。字段权限:contact:user.employee_id:readonly。
函数签名:
Task<FeishuApiResult<GetInterviewRecordListResult>?> GetInterviewRecordListAsync(
[Query("page_size")] int? page_size = null,
[Query("page_token")] string? page_token = null,
[Query("ids")] string[]? ids = null,
[Query("user_id_type")] string? user_id_type = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
page_size | int? | ⚪ | 每页数量,默认 10,最大 100 |
page_token | string? | ⚪ | 分页标记,首次请求不填,翻页时取上一次返回的 page_token |
ids | string[]? | ⚪ | 面试评价 ID 列表,最大 100 个;使用该筛选项时不分页 |
user_id_type | string? | ⚪ | 用户 ID 类型(open_id/union_id/user_id),默认 open_id |
响应:
{
"code": 0,
"msg": "success",
"data": {
"items": [],
"page_token": "",
"has_more": false
}
}说明:data.items 为 InterviewRecord[];传入 ids(最大 100 个)时不分页。
批量获取面试评价详细信息(新版 v2)
按评价 ID 列表或分页批量获取面试评价(新版结构,含模块评价);传入 ids 时不分页。限频:10 次/秒。所需权限:hire:interview:readonly(获取面试信息)或 hire:interview(更新面试信息)。字段权限:contact:user.employee_id:readonly。
函数签名:
Task<FeishuApiResult<GetInterviewRecordListV2Result>?> GetInterviewRecordListV2Async(
[Query("ids")] string[]? ids = null,
[Query("page_size")] int? page_size = null,
[Query("page_token")] string? page_token = null,
[Query("user_id_type")] string? user_id_type = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
ids | string[]? | ⚪ | 面试评价 ID 列表,长度 0~100;使用该筛选项时不分页 |
page_size | int? | ⚪ | 每页数量,0~100;不传时默认按 ids 参数获取数据 |
page_token | string? | ⚪ | 分页标记,首次请求不填,翻页时取上一次返回的 page_token |
user_id_type | string? | ⚪ | 用户 ID 类型(open_id/union_id/user_id),默认 open_id |
响应:
{
"code": 0,
"msg": "success",
"data": {
"items": [],
"page_token": "",
"has_more": false
}
}说明:data.items 为 InterviewRecordV2[];不传 page_size 时默认按 ids 获取数据。
获取面试记录附件
获取面试记录 PDF 附件下载链接(含投递基本信息与面试评价信息);不传 interview_record_id 时返回该投递下所有面试评价的附件。限频:20 次/分钟。所需权限:hire:interview:readonly(获取面试信息)或 hire:interview(更新面试信息)。
函数签名:
Task<FeishuApiResult<GetInterviewRecordAttachmentResult>?> GetInterviewRecordAttachmentAsync(
[Query("application_id")] string application_id,
[Query("interview_record_id")] string? interview_record_id = null,
[Query("language")] int? language = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
application_id | string | ✅ | 投递 ID(必填),示例值:6701528341100366094 |
interview_record_id | string? | ⚪ | 面试评价 ID;不填则获取该投递下所有面试评价的附件 |
language | int? | ⚪ | 附件语言:1 中文(默认)/ 2 英文 |
响应:
{
"code": 0,
"msg": "success",
"data": {
"attachment": {}
}
}说明:data.attachment 为 InterviewAttachment,含 id、url(30 分钟有效)、name、mime、create_time。
获取面试速记明细
获取指定面试的速记(逐句转写)明细记录;仅自建应用可用。限频:10 次/秒。所需权限:hire:interview:readonly(获取面试信息)或 hire:interview(更新面试信息)。
函数签名:
Task<FeishuApiResult<GetInterviewMinutesResult>?> GetInterviewMinutesAsync(
[Query("interview_id")] string interview_id,
[Query("page_token")] string? page_token = null,
[Query("page_size")] int? page_size = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
interview_id | string | ✅ | 面试 ID(必填),示例值:7047318856652261676 |
page_token | string? | ⚪ | 分页标记,首次请求不填,翻页时取上一次返回的 page_token |
page_size | int? | ⚪ | 本次获取的语句最大数量,默认 20,范围 1~100 |
响应:
{
"code": 0,
"msg": "success",
"data": {
"minutes": {},
"page_token": "",
"has_more": false
}
}说明:data.minutes 为 InterviewMinutes,其 sentences 为速记句子列表;仅自建应用可用。
获取面试满意度问卷列表
批量获取面试满意度问卷(完成情况、题目及作答内容);application_id 与 interview_id 不可同时填写(查询参数采用查询对象模式 InterviewQuestionnaireListQuery,见 AGENTS.md API-2)。限频:1000 次/分钟、50 次/秒。所需权限:hire:questionnaire:readonly(获取面试满意度问卷信息)或 hire:questionnaire(更新面试满意度问卷信息)。
函数签名:
Task<FeishuApiResult<GetInterviewQuestionnaireListResult>?> GetInterviewQuestionnaireListAsync(
[Query] InterviewQuestionnaireListQuery? query = null,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
query | InterviewQuestionnaireListQuery? | ⚪ | 分页、投递/面试 ID 与更新时间范围查询参数,该对象会整体展开为查询参数 |
响应:
{
"code": 0,
"msg": "success",
"data": {
"has_more": false,
"page_token": "",
"items": []
}
}说明:data.items 为 InterviewQuestionnaire[];application_id 与 interview_id 不可同时填写。