DEVELOPER DOCUMENTATION
Update Job Draft
Fill in or correct draft fields in response to validation prompts.
/api/public/v1/job-drafts/{jobId}Patches any subset of fields on an unpublished draft and returns refreshed validation. This is the second half of the gap-filling loop: take each missing field’s updateKeys and enumValues from the create response, ask your human the prompt, and patch the answers. Repeat until validation.publishReady is true, then publish.
The accepted keys and enum values are machine-discoverable at GET /job-drafts/capabilities (draft.updateKeys and draft.enums).
Requirements: jobs:write scope + the public_api_job_drafting feature. The job must be an unpublished draft you own — to edit a live job use PATCH /jobs/{id}.
Request
Section titled “Request”jobIdstringpathrequiredThe draft job ID from the create response.
The body is a JSON object with one or more draft fields. Unknown keys are rejected (400 with zod issue details). Commonly patched keys:
jobTitlestringbodyJob title.
jobDescriptionstringbodyFull description text.
paymentTypestringbodyPAY_PER_LABEL, PAY_PER_HOUR, or FIXED_PRICE. Pair with the matching rate field below.
pricePerHournumberbodyHourly rate in USD (for PAY_PER_HOUR).
pricePerLabelnumberbodyPer-label rate in USD (for PAY_PER_LABEL).
fixedPricenumberbodyTotal fixed price in USD (for FIXED_PRICE).
experienceLevelstringbodyEXPERT, ENTRY_LEVEL, INTERMEDIATE, or ANY_EXPERIENCE_LEVEL.
dataVolumeUnitstringbodyHOURS_OF_RECORDING_AUDIO_VIDEO, NUMBER_OF_FILES, NUMBER_OF_WORDS, or UNKNOWN_NOT_SPECIFIED.
languagesstring[]bodyRequired languages.
countriesstring[]bodyAllowed countries.
labelTypesstring[]bodyLabel/annotation types.
headcountnumberbodyNumber of AI trainers to hire.
dataVolumenumberbodyQuantity of data, in dataVolumeUnit units.
The full key list also includes labelingOverview, datasetDescription, dataType, subjectMatter, labelingSoftware, aiInterviewRequirements, budgetRange, workloadDesc, timeRequirement, projectDuration, freelancerType, projectScope, visibility, and more — fetch draft.updateKeys from capabilities for the authoritative set. Enum fields must use the exact canonical values above.
Response
Section titled “Response”okbooleantrue on success.
jobIdstringThe draft job ID.
statusstringStill DRAFT.
draftUrlstringIn-app URL of the draft editor.
validationobjectRefreshed validation — same shape as the create response: publishReady, issueCount, missingFieldCount, missingFields[] (with prompt/type/enumValues/updateKeys), issues[].
Errors
Section titled “Errors”| Status | code | Meaning |
|---|---|---|
400 | BAD_REQUEST | Empty body, invalid JSON, unknown keys or wrong types (details carries zod issues), or no fields set |
401 | UNAUTHORIZED | Missing or invalid token |
403 | FORBIDDEN | Missing jobs:write scope, feature disabled, or the job belongs to another account |
404 | NOT_FOUND | No such job |