---
title: "Recommend Skills From Jd"
method: POST
path: "/api/job-roles/recommend-skills"
tags: ["Job Roles"]
---

# Recommend Skills From Jd

`POST /api/job-roles/recommend-skills`

## Request

- Base URL: `https://api.thebetterhire.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.thebetterhire.ai/api/job-roles/recommend-skills`
- Auth: HTTP bearer

Layer-2 recommender over an inline JD blob. Same proposal semantics as
the per-role route below — including that suggestions are NOT filtered to
runnable skills; see that route's docstring for where the filtering lives.
Used by the role editor's "Suggest rounds"
(docs/design/role-assessment-plan.md Phase 1).

## Request body

- RecommendSkillsRequest: Inline-JD variant of recommend-skills (mirrors ExtractCompetenciesRequest): the role create/edit forms hold *unsaved* JD text — the create page has no role row at all, and on edit the in-form JD is fresher than the DB row — so they can't use the per-role route.
  - `jd_text` string, required
  - `job_title` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/thebetterhire/apis/interanalysis-b2b-api.md) · [All operations](https://skmtc.dev/thebetterhire/apis/interanalysis-b2b-api/llms.txt) · [OpenAPI document](https://skmtc.dev/thebetterhire/apis/interanalysis-b2b-api/revisions/c8ad03e900ea?raw)
