Logotrimoji
免费试用

API Hard Skills

Trimoji Resume API 文档

最后更新:2024年5月22日

此 API 允许您分析(解析)简历、创建理想候选人画像(称为“Personi”)并根据这些画像对简历进行评分,以优化您的招聘流程。

配置

配置您的变量

在使用此 API 之前,请配置以下变量:

  • base_url:API 的基本 URL(例如:https://integration.trimoji.fr/api/v1/resume)。
  • partner_token:您的唯一合作伙伴认证令牌。
  • customer_token:您的特定客户 API 密钥。您可以在 Trimoji 面板 中通过点击“复制我的 API 密钥”按钮获取。

安全

认证

所有 API 请求都必须包含一个 Authorization 标头,其中包含您的 partner_token。

Authorization: 您的_partner_token_在此

异步

回调机制 (Webhook)

多项操作,例如上传简历,是异步的。处理完成后,Trimoji 会将结果发送到您提供的 callback_url。

成功回调

成功解析时发送到您的 callback_url 的数据将遵循此 JSON 结构:


{
  "metadatas": {
    "your_key": "custom_value"
  },
  "resumeData": {
    "firstname": "string",
    "lastname": "string",
    "email": "string",
    "phone": "string",
    "sex": "string ('f', 'm', or 'other')",
    "age": "integer | null",
    "introduction": "string | null",
    "address": "string | null",
    "lat": "number | null",
    "lon": "number | null",
    "processed_at": "datetime_string"
  },
  "experiences": [
    {
      "poste": "string",
      "company": "string",
      "size": "string | null ('AE', 'MIE', 'TPE', ...)",
      "start_date": "integer | null",
      "end_date": "integer | null",
      "duration": "integer | null",
      "tasks": ["string"]
    }
  ],
  "diplomas": [
    { "name": "string", "date": "integer | null" }
  ],
  "licenses": [
    { "name": "string", "desc": "string" }
  ],
  "languages": [
    { "name": "string (iso_code)", "level": "string" }
  ],
  "hobbies": ["string"],
  "telework": "string | null ('Flexible', 'Full time', ...)"
}

失败回调

如果简历处理失败,将发送一个包含错误详情和处理日志的回调。


{
  "metadatas": {
    "uid": "user123",
    "source": "webapp"
  },
  "error": {
    "code": "PROCESSING_FAILED",
    "message": "由于提供的文件格式无效,数据提取失败。"
  },
  "logs": [
    "[2024-05-21T10:00:05.123Z] [FILE_UPLOAD] [OK] File uploaded successfully.",
    "[2024-05-21T10:00:06.456Z] [PROCESS_STARTED] [OK] Processing started.",
    "[2024-05-21T10:00:15.789Z] [DATA_STRUCTURE_GENERATION] [ERROR] AI model returned an invalid structure."
  ]
}

简历解析

简历解析 API

1. 上传简历

提交简历文件进行异步解析。结果将发送到 callback_url。

POST /upload

Body 参数 (form-data)

键 类型 描述
customer_token * 文本 您的客户 API 密钥。
uploaded_file * 文件 简历文件。最大尺寸:5MB。允许的扩展名:pdf, docx, png, jpg, jpeg, txt, webp, doc, rtf, pptx, otp, odp, odt。
callback_url 文本 接收异步结果的 URL。
metadatas 文本 用于跟踪的自定义 JSON 字符串。
personi_id 文本 可选的 Personi ID,用于链接简历。
示例响应

{
    "success": true,
    "message": "Success",
    "data": {
        "resume_id": "6ff7d7fe-8e53-4ddf-b68a-f9d4658f5bc8"
    }
}

2. 获取简历信息

使用 resume_id 获取已解析的简历信息。

GET /get/{customer_token}/{resume_id}

示例响应

{
    "success": true,
    "message": "Success",
    "data": {
        "resumeData": {
            "firstname": "Lou",
            "lastname": "Pagès",
            "email": "[email protected]",
            "age": 22
        },
        "experiences": [ ... ],
        "diplomas": [ ... ]
    }
}

3. 获取进程日志

获取特定简历的处理日志,这对于调试解析问题很有用。

GET /get/{customer_token}/{resume_id}/logs

4. 删除简历

将简历标记为已删除(逻辑删除/软删除)。

DELETE /delete/{customer_token}/{resume_id}

Personi & Scoring

Personi & Scoring API

“Personi”是一个理想的候选人画像,以 JSON 格式定义,简历可以据此进行评分。

1. 创建 Personi

创建一个新的理想候选人画像。您可以手动提供详细标准,或使用 auto_weights 和 auto_keywords 标志,让我们的 AI 根据职位描述生成它们。

POST /personi/create

Body 参数 (JSON)

键 类型 描述
customer_token * String 您的客户 API 密钥。
custom_id * String 您系统中 Personi 的唯一 ID。
position * String 职位名称。
position_description * String 角色详细描述。
company_description * String 公司描述。
sector * String 职位所属行业。
company String 公司名称。
diploma String 所需最低学历水平。
telework String 远程工作政策。值:FLEXIBLE, FULLTIME, HYBRID, NEVER, OCCASIONAL, ONDEMAND, PARTTIME, ROTATION。
education_weight Number 教育分数权重(0-100)。
experience_weight Number 经验分数权重(0-100)。
skills_weight Number 技能分数权重(0-100)。
knowledge_weight Number 知识分数权重(0-100)。
keywords_weight Number 关键词分数权重(0-100)。
geolocation Object 地点标准:{"address": "string", "radius": number}。半径(公里,默认为 10)。
keywords Array 手动关键词:[{"word": "string", "is_mandatory": boolean}]。
languages Array 语言要求:[{"id": "iso_code", "level": "A1-C2"}]。级别:A1, A2, B1, B2, C1, C2。
driving_licenses Array 所需驾照,例如:["B", "C1"]。
auto_keywords Boolean 设置为 true 以自动生成关键词。
auto_weights Boolean 设置为 true 以自动设置权重。

关于权重说明:如果使用手动权重,所有 *_weight 字段的总和必须正好等于 100。如果未提供权重且 auto_weights 为 false,则使用默认分布。

请求示例

自动生成 (AI)


{
    "custom_id": "MKT_ASSIST_001",
    "customer_token": "your_token",
    "position": "Junior Marketing Assistant",
    "position_description": "We are looking for...",
    "company_description": "Innovate Corp...",
    "sector": "Marketing",
    "auto_keywords": true,
    "auto_weights": true
}

手动配置


{
    "custom_id": "SENIOR_DEV_002",
    "customer_token": "your_token",
    "position": "Senior Software Engineer",
    "position_description": "Seeking experienced...",
    "company": "Tech Solutions",
    "telework": "HYBRID",
    "education_weight": 10,
    "experience_weight": 40,
    "skills_weight": 20,
    "knowledge_weight": 10,
    "keywords_weight": 20,
    "keywords": [
        {"word": "Spring Boot", "is_mandatory": true}
    ],
    "geolocation": { "address": "Paris", "radius": 20 }
}
示例响应

{
    "success": true,
    "message": "Success",
    "data": {
        "personi_id": "f8e1e2c3-6337-4644-9fbf-7e382d089e3d"
    }
}

2. 获取所有 Personis

获取您客户帐户的所有活动 Personis 列表。如果多个 Personis 共享相同的 custom_id,则仅返回最新更新的一个。

GET /get/{customer_token}/personi/all

示例响应

{
    "success": true,
    "message": "Success",
    "data": [
        {
            "id": "f8e1e2c3...",
            "custom_id": "SENIOR_DEV_002",
            "name": "Senior Software Engineer Profile",
            "created_at": "2024-05-15T10:00:00.000Z"
        }
    ]
}

3. 获取 Personi 详细信息

获取特定 Personi 的完整配置和详细信息。

GET /get/{customer_token}/personi/details/{personi_id}

示例响应

{
    "success": true,
    "message": "Success",
    "data": {
        "id": "5e0273f8-8cfd-4673-9a89-3f4c934d3391",
        "name": "Associate Product Manager | London",
        "matching_settings": {
            "weights": { "percent_experience": 44, "percent_hardskills": 19 },
            "languages": [ { "lang": "English", "is_mandatory": true } ],
            "skills": [ { "skill": "active_listening", "value": 72 } ]
        }
    }
}

4. 将简历与 Personi 进行评分

计算特定简历与特定 Personi 的匹配分数。可选地返回分数的 HTML 解释。

POST /matching

Body 参数 (JSON)

键 类型 描述
resume_id * String 要评分的简历 ID。
personi_id * String 或 Array 要评分的 Personi ID(单个或多个)。
explainer String 返回分数的解释。值:'en', 'fr', 'es'。
示例响应(标准)

{
    "success": true,
    "message": "Success",
    "data": {
        "score": 60,
        "personi_name": "Développeur chez Trimoji"
    }
}

5. 将简历与所有 Personis 进行评分

计算您帐户中所有活动简历与单个 Personi 的匹配分数,并返回最佳匹配项的排序列表。

POST /matchingAll

Body 参数 (JSON)

键 类型 描述
resume_id * String 要评分的简历 ID。
customer_token * String 您的客户 API 密钥。
limit Integer 最大结果数(默认为 100)。
示例响应

{
    "success": true,
    "message": "Success",
    "data": [
        {
            "personi_id": "839d2953...",
            "personi_name": "SENIOR HR BUSINESS PARTNER...",
            "score": 100
        }
    ]
}

6. 将所有简历与一个 Personi 进行评分

计算您帐户中所有活动简历与单个 Personi 的匹配分数。

POST /matchingAllResumes

Body 参数 (JSON)

键 类型 描述
customer_token * String 您的客户 API 密钥。
personi_id * String 要评分的 Personi ID。
limit Integer 要评分的最大简历数。
示例响应

{
    "success": true,
    "message": "Success",
    "data": [
        {
            "resume_id": "ac4d685e-c8e4-474d-a92a-16758009fafe",
            "score": 100
        },
        {
            "resume_id": "602d7fc9-2b85-4064-9ae6-ad5be08d5bcb",
            "score": 95
        }
    ]
}

7. 删除 Personi

将 Personi 标记为已删除(逻辑删除/软删除)。

DELETE /delete/{customer_token}/personi/{personi_id}

Top