Roles
A role is a job opening you’re hiring for. Roles are stored independently of assessments, and an assessment can be linked to one or more roles. A role holds a title, an optional job description (markdown) and/or posting URL, and up to five custom priority skills selected from the JD.List Roles
Create Role
string
required
The role title, e.g. “Senior Product Manager”.
string
The job description body (markdown). Optional.
string
A URL to the job posting. Optional.
{ role } with a 201 status.
Import Roles from ATS
Bulk-create roles from open jobs in a connected ATS. One role is created per selected job, with its title and job description filled in from the ATS. Jobs already linked to a role (same provider and job id) are auto-skipped, so the call is idempotent — re-running it never creates duplicate roles. Requires the ATS integrations feature to be enabled for the org.string
required
The ATS provider to import from, e.g.
ashby or greenhouse.array
required
The jobs to import. Each item is
{ jobId, title? }, where jobId is the
ATS job’s external id. title is optional and used only for skip/failure
display.{ imported, skipped, failed }, where imported is the list of created
roles ({ jobId, roleId, title }), skipped covers jobs already imported, and
failed covers jobs whose detail fetch or role creation errored.
Get Role
404 if it does not exist or
has been deleted.
Update Role
string
New role title. Cannot be set to empty.
string
Replace the job description body.
string
Replace the job posting URL.
string
The workspace member who owns this role. Pass
null to unassign.string
The workspace member acting as recruiter for this role. Pass
null to unassign. (Update-only — not accepted by Create Role.)Extract Skills From The JD
fallback result is never cached.
boolean
default:"false"
Ignore any cached result and extract again.
{ skills, source, cached }. Each skill is
{ name, evidencePhrases, suggestedPriority } — name is always an exact
taxonomy entry, evidencePhrases are verbatim JD substrings supporting it, and
suggestedPriority marks the two to four most role-defining skills. source is
"ai" for a model extraction or "fallback" for the deterministic keyword
matcher, which is used automatically whenever the model is unavailable, so this
endpoint does not fail on an extraction error.
Delete Role
deleted_at). Linked assessments are unaffected.