GET /jobs/{jobId}/candidate-stages with candidates.read to find a valid stage. These are candidate stages, not job lifecycle statuses.candidates.writeIdempotency-Key. Retry the same request with the same key to avoid repeating the write. See Safe retries & idempotency.curl --location --request PATCH 'https://api.cvviz.com/v1/jobs//candidates//stage' \
--header 'Idempotency-Key: cvviz-integration-operation-001' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"stageCode": 3,
"reasonId": 12,
"remark": "string"
}'{
"data": {
"stageCode": 3,
"stageLabel": "Interview",
"updated": true
}
}