JobCreateRequest
JSON body for POST /api/v1/jobs.
Your own job identifier — the same position_id contract the
run APIs use (charset [A-Za-z0-9._-], 1–28 chars). Optional, but
required if you want to reference (or save) the job by
position_id on run submits. Unique per client among active jobs
(409 POSITION_ID_CONFLICT otherwise).
Possible values: non-empty and <= 28 characters, Value must match regular expression ^[A-Za-z0-9._-]{1,28}$
eng-backend-2026Optional display name (≤ 200 chars). Defaults from config.name
(or its position_name alias), then position_id, then a
generated label.
Possible values: non-empty and <= 200 characters
Senior Backend EngineerThe JD prose. Required, non-empty string.
Possible values: non-empty
config objectrequired
The job's structured requirements config — the same position-config
contract CV DeepMatch validates at submit: it must carry
requirements.workExperience and requirements.skills, and every
inner field must pass the per-field rules (the 1–5 importance scale,
industry cardinality, language-config quirks — see the
CvDeepMatchRequirements
schema and the
Position config reference).
Unlike an inline run submit, the contract is enforced at save time
— an invalid config is rejected with per-field errors and nothing is
stored. config must not contain a top-level job_description
key (the JD is its own field; CV DeepSearch composes
position_metadata as {...config, job_description}).
The job's structured requirements config — the same position-config
contract CV DeepMatch validates at submit: it must carry
requirements.workExperience and requirements.skills, and every
inner field must pass the per-field rules (the 1–5 importance scale,
industry cardinality, language-config quirks — see the
CvDeepMatchRequirements
schema and the
Position config reference).
Unlike an inline run submit, the contract is enforced at save time
— an invalid config is rejected with per-field errors and nothing is
stored. config must not contain a top-level job_description
key (the JD is its own field; CV DeepSearch composes
position_metadata as {...config, job_description}).
{"name":"Senior Backend Engineer","requirements":{"workExperience":{"from":5,"to":10,"importance":5,"relevant_industries":["SaaS","Fintech"],"industries_config":[{"name":"SaaS","importance":5},{"name":"Fintech","importance":4}]},"skills":{"importance":5,"skills_config":{"hard_skills":[{"name":"Node.js","importance":5}],"requirements":{"minimal_qualifications":true,"preferable_qualifications":true}}}}}{
"position_id": "eng-backend-2026",
"name": "Senior Backend Engineer",
"job_description": "string",
"config": {
"name": "Senior Backend Engineer",
"requirements": {
"workExperience": {
"from": 5,
"to": 10,
"importance": 5,
"relevant_industries": [
"SaaS",
"Fintech"
],
"industries_config": [
{
"name": "SaaS",
"importance": 5
},
{
"name": "Fintech",
"importance": 4
}
]
},
"skills": {
"importance": 5,
"skills_config": {
"hard_skills": [
{
"name": "Node.js",
"importance": 5
}
],
"requirements": {
"minimal_qualifications": true,
"preferable_qualifications": true
}
}
}
}
}
}