Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: hyreflow engine (local) Qualify API
version: 0.1.0
tags:
- name: Qualify
paths:
/qualify:
post:
summary: Qualify
description: 'Score each candidate''s ENRICHED profile against a job spec, 0-10, via the AI step.
Body: {"job_spec": "", "candidates": [Person, …], "min_score": ,
"allow_thin_profiles": }
Returns the candidates ranked by score (desc), each with `qualify:{score, summary, strengths, gaps,
basis}`; if `min_score` is set, only those at/above it. The precision step after search
(recall → precision).
Scoring reads the full profile: work history with dates, about section, skills, certifications and
education — so enrich the rows through the `linkedin_profile` waterfall first. A row that carries no
work history can only be scored on its current title/employer, which cannot tell a long-tenured
specialist from a recent career changer: those rows are named in `_meta.thin_profiles` and their
score is marked `basis: "title_only"`. `_meta` describes everything that was SCORED, so a row a
`min_score` filter dropped from `candidates` is still counted there. When NO candidate carries work
history the call is refused (422 `no_work_history`) — pass `allow_thin_profiles: true` to score the
sourcing fields anyway.'
operationId: qualify_qualify_post
requestBody:
content:
application/json:
schema:
additionalProperties: true
type: object
title: Body
default: {}
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- HTTPBearer: []
tags:
- Qualify
components:
schemas:
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
securitySchemes:
HTTPBearer:
type: http
scheme: bearer