Create a job
POST/api/v1/jobs
Save a job once so future CV DeepMatch and CV DeepSearch runs can reference it instead of re-sending the full content.
Validation (strict, save-time)
job_descriptionis required and must be a non-empty string.configis required and is strictly validated with the same position-config contract CV DeepMatch enforces at submit — it must carryrequirements.workExperienceandrequirements.skills, and every inner field must pass the per-field rules (see the Position config reference). Per-field failures are itemised inerror.details.fields.configmust not contain a top-leveljob_descriptionkey — send the JD as the top-leveljob_descriptionfield instead (rejected asconfig.job_descriptionotherwise).position_id, when provided, must match^[A-Za-z0-9._-]{1,28}$.
position_id uniqueness
position_id is unique per client among active jobs. Creating a
second active job with the same position_id returns
409 POSITION_ID_CONFLICT. Archiving a job frees its position_id
for reuse.
Name defaulting
name is optional. When omitted it defaults from config.name (or
its position_name alias), then position_id, then a generated
label.
Request
Responses
- 201
- 400
- 401
- 403
- 409
- 500
The job was created.
Validation failure (INVALID_INPUT). Per-field detail in
error.details.fields — config-contract failures use the inner
field path (e.g. requirements.workExperience.relevant_industries).
Missing or invalid API key.
Authenticated but the client holds neither the cvdeepmatch nor
the cvdeepsearch permission (MISSING_PERMISSION), or the
client is not active (CLIENT_NOT_ELIGIBLE).
POSITION_ID_CONFLICT — an active job with this position_id
already exists for your client. Archive it first or PATCH the
existing job.
Internal error.