CvdsIngestRequest
JSON body for POST /api/v1/cvds/candidates. Up to 500 candidates per
request. corpus_id may be set at the top level (applies to all
candidates) and/or per candidate (overrides the top-level value); every
candidate must resolve to a corpus_id or the whole batch is rejected
(MISSING_CORPUS_ID).
Default corpus for every candidate in this batch. A per-candidate
corpus_id overrides it. Required unless every candidate carries
its own.
acme-eng-poolcandidates object[]required
Possible values: >= 1, <= 500
Your own candidate id. Unique within a corpus — re-ingesting the
same external_id upserts the existing candidate.
Possible values: non-empty
cand-001parsed_cv objectrequired
The parsed CV as a JSON object (or array). This is the content that gets embedded for semantic search. It is PII and is never returned by the read endpoints — you keep your own copy.
- object
- undefined[]
Per-candidate corpus, overriding the top-level corpus_id. Required
if no top-level corpus_id is set.
acme-eng-poolOptional free-form tags stored with the candidate for your own correlation.
["batch-2026-q2"]Optional opaque id of the upload/source batch, stored for your traceability.
upl_abc123{
"corpus_id": "acme-eng-pool",
"candidates": [
{
"external_id": "cand-001",
"parsed_cv": {
"name": "Jane Doe",
"skills": [
"Node.js"
]
}
}
]
}