Skip to main content

Jobs overview

The Jobs catalog lets you define a job once — its description prose plus its structured requirements config — and then reference it from both CV DeepMatch and CV DeepSearch instead of re-sending the full content on every run.

Base URL: https://platform.zenhire.ai/api/v1/jobs

Why it exists​

Without the catalog, every POST /api/v1/cvdeepmatch/submit repeats the same job_description + config, and every POST /api/v1/cvds/search repeats the same position_metadata. With it:

Define once Reference many
Create a job POST /api/v1/jobs Match a CV POST /api/v1/cvdeepmatch/submit
(JD + config, → id (job_id) { position_id } ← no JD/config needed
your own Search a corpus POST /api/v1/cvds/search
position_id) { corpus_id, position_id } ← no metadata needed

One saved job serves both services: CV DeepMatch consumes job_description + config directly; CV DeepSearch composes its position_metadata from the same job as {...config, job_description}.

The two identifiers​

  • position_id — your own job id. The same identifier contract the run APIs already use ([A-Za-z0-9._-], 1–28 chars). Unique per client among active jobs.
  • job_id (the job's id) — the platform-assigned id. A UUID returned on create; usable everywhere position_id is, as an alternative reference.

Endpoints​

EndpointPurpose
POST /api/v1/jobsCreate a job (strict save-time validation).
GET /api/v1/jobsList your active jobs (paginated, compact rows).
GET /api/v1/jobs/{jobId}Get one job's full content.
PATCH /api/v1/jobs/{jobId}Partial update (re-validated).
DELETE /api/v1/jobs/{jobId}Archive (soft delete; frees the position_id).

Available to any client whose permissions[] contains cvdeepmatch or cvdeepsearch.

Read the Jobs guide for the full reuse-by-reference flow — including the saveJob save-on-submit flag, the both-or-neither rule, and the automatic job_updated derivation on CV DeepSearch.