Update an existing job posting. All fields are optional; only include
the fields you want to change (partial update). Fields not included in
the request remain unchanged. The request body cannot be empty — at
least one field must be provided.
Behavior notes:
Status lifecycle: the documented path is DRAFT → ACTIVE →
INACTIVE → DELETED. Once a job’s status moves past DRAFT it
cannot be changed back to DRAFT (INVALID_STATUS_TRANSITION);
other reverse transitions are not documented either way.
Null clears: some fields accept null to clear their value
(teamId, contractType, degreeLevel, jobRole,
potentialAmount, potentialAmountCurrency, potentialHiresCount,
yearOfExperience, description, screeningQuestion,
applicationForm, criterionDetails). title, city, state, and
country cannot be set to null — omit them instead.
applicationForm is merged, not replaced: provide only the
applicationForm keys you want to change; new values override
existing ones and the rest are kept. If expectedCTC/currentCTC is
set to MANDATORY or OPTIONAL (not OFF), the corresponding
currency key is required unless the job already has a currency value;
otherwise the update fails.
The three salary fields must be provided together if any is
provided, and salaryRangeTo must be greater than
salaryRangeFrom.
All field validations (type, length, format) are the same as for
Create Job.
The success response is a bare job object that is smaller than the
create/get response and includes the populated pipelineStage array.
Company-scoped API key. Production keys are prefixed sk_live_,
sandbox keys sk_test_, each followed by 22 base62 characters
(pattern ^sk_(live|test)_[0-9A-Za-z]{22}$). Generate keys in the
TapTalent dashboard under Account Settings → Developers → API Key
Management; a key is shown once at generation and old keys are
invalidated immediately on regeneration.
Request body for updating a job. All fields are optional — include only
the fields you want to change; omitted fields remain unchanged. The
body cannot be empty: at least one field must be provided. Field
validations (type, length, format) are the same as for Create Job.
Fields that accept null to clear their value: teamId,
contractType, degreeLevel, jobRole, potentialAmount,
potentialAmountCurrency, potentialHiresCount, yearOfExperience,
description, screeningQuestion, applicationForm, and
criterionDetails. title, city, state, and country cannot be
set to null.
New job status. Unlike creation, all four values are allowed here.
The documented lifecycle path is
DRAFT → ACTIVE → INACTIVE → DELETED; once a job's status
moves past DRAFT, it cannot be changed back to DRAFT
(INVALID_STATUS_TRANSITION). Other reverse transitions are not
documented either way.
Potential revenue or value associated with filling this position.
potentialAmountCurrency is required when this is provided. May be
set to null to clear it.
Candidate application form configuration. The submitted object is
MERGED with the job's existing applicationForm — provide only the
keys you want to change; new values override existing ones. If
expectedCTC/currentCTC is set to MANDATORY or OPTIONAL, the
corresponding currency key is required unless the job already has an
existing currency value. May be set to null to clear the
configuration.
Replaces the job's criterion details (maximum 7). May be set to
null to clear them.
Maximum array length: 7
Show child attributes
Response
The updated job. This shape is smaller than the create/get job
response and includes the populated pipelineStage array.
Job object returned by the update endpoint. This shape is smaller than
the create/get Job response — it omits skills, careerLevel,
publishType, companyClientId, potentialAmount,
potentialAmountCurrency, potentialHiresCount, closingStatus,
closingReason, referralTemplateId, and jobType — and includes the
populated pipelineStage array.
Identifier of the hiring pipeline attached to the job. The published
documentation shows the placeholder string "pipelineId_1"; the API
uses the integer pipeline id (as in the Pipelines API).
Job lifecycle status. The documented lifecycle path is
DRAFT → ACTIVE → INACTIVE → DELETED. The only documented
restriction is that once a job leaves DRAFT it can never return to
DRAFT; other reverse transitions (e.g. reactivation) are not
documented either way. When creating a job only DRAFT and
ACTIVE are allowed (see JobStatusCreate).
Work arrangement for the position. ONSITE (default at creation): work
at a physical office location; REMOTE: work from anywhere; HYBRID:
a combination of onsite and remote work.
Configuration of the candidate application form: which fields are
required, optional, or hidden when a candidate applies to the job. All
keys are optional — specify only the fields you want to configure. If
the object is omitted at creation, the system sets default values
automatically. When updating a job, the submitted object is MERGED with
the job's existing applicationForm (new values override existing
ones); it is not replaced wholesale.
Pipeline stages of the job with per-stage candidate counts (populated in the update response).
Show child attributes
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/schema.json","name":"Taptalent Partner API","colors":{"primary":"#6e58ff","light":"#6e58ff","dark":"#ab9ffc"},"logo":{"light":"https://mintcdn.com/taptalent/lKy84_BssSCy2hcz/images/TTLogo(1).png?fit=max\u0026auto=format\u0026n=lKy84_BssSCy2hcz\u0026q=85\u0026s=ac7c949427cc2893306f6036415f087e","dark":"https://mintcdn.com/taptalent/lKy84_BssSCy2hcz/images/TTLogo(1).png?fit=max\u0026auto=format\u0026n=lKy84_BssSCy2hcz\u0026q=85\u0026s=ac7c949427cc2893306f6036415f087e","href":"https://taptalent.ai"},"favicon":"https://mintcdn.com/taptalent/lKy84_BssSCy2hcz/images/TTLogo(1).png?fit=max\u0026auto=format\u0026n=lKy84_BssSCy2hcz\u0026q=85\u0026s=ac7c949427cc2893306f6036415f087e","background":{"decoration":"gradient"},"navbar":{"links":[]},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/taptalent-ai","website":"https://taptalent.ai/"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"taptalent","hasAudioNarration":false,"actualSubdomain":"taptalent","customDomains":["docs.taptalent.io"],"gitSource":{"type":"github","owner":"taptalent-ai","repo":"taptalent-docs","deployBranch":"feat/companyCampaignPartnerAPI","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6acf73c9b4870666e533191e","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API Playground","count":63},{"language":"default","tag":"Documentation","count":26},{"language":"default","tag":"Webhooks","count":20},{"language":"default","tag":"API Reference","count":16},{"language":"default","tag":"Candidate Self-Scheduling","count":13},{"language":"default","tag":"Candidates","count":6},{"language":"default","tag":"Custom Field Values","count":6},{"language":"default","tag":"Pipelines","count":6},{"language":"default","tag":"Custom Fields","count":5},{"language":"default","tag":"Job Candidates","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-playground/jobs/update-a-job","slug":"/api-playground/jobs/update-a-job","pageMetadata":{"title":"Update a job","description":"Update an existing job posting. All fields are optional; only include\nthe fields you want to change (partial update). Fields not included in\nthe request remain unchanged. The request body cannot be empty — at\nleast one field must be provided.\n\nBehavior notes:\n- **Status lifecycle**: the documented path is `DRAFT` → `ACTIVE` →\n `INACTIVE` → `DELETED`. Once a job's status moves past `DRAFT` it\n cannot be changed back to `DRAFT` (`INVALID_STATUS_TRANSITION`);\n other reverse transitions are not documented either way.\n- **Null clears**: some fields accept `null` to clear their value\n (`teamId`, `contractType`, `degreeLevel`, `jobRole`,\n `potentialAmount`, `potentialAmountCurrency`, `potentialHiresCount`,\n `yearOfExperience`, `description`, `screeningQuestion`,\n `applicationForm`, `criterionDetails`). `title`, `city`, `state`, and\n `country` cannot be set to `null` — omit them instead.\n- **applicationForm is merged, not replaced**: provide only the\n `applicationForm` keys you want to change; new values override\n existing ones and the rest are kept. If `expectedCTC`/`currentCTC` is\n set to `MANDATORY` or `OPTIONAL` (not `OFF`), the corresponding\n currency key is required unless the job already has a currency value;\n otherwise the update fails.\n- The three salary fields must be provided together if any is\n provided, and `salaryRangeTo` must be greater than\n `salaryRangeFrom`.\n- All field validations (type, length, format) are the same as for\n Create Job.\n\nThe success response is a bare job object that is smaller than the\ncreate/get response and includes the populated `pipelineStage` array.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /jobs/{jobId}","href":"/api-playground/jobs/update-a-job","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Update an existing job posting. All fields are optional; only include\\nthe fields you want to change (partial update). Fields not included in\\nthe request remain unchanged. The request body cannot be empty — at\\nleast one field must be provided.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Behavior notes:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Status lifecycle\"\n }), \": the documented path is \", _jsx(_components.code, {\n children: \"DRAFT\"\n }), \" → \", _jsx(_components.code, {\n children: \"ACTIVE\"\n }), \" →\\n\", _jsx(_components.code, {\n children: \"INACTIVE\"\n }), \" → \", _jsx(_components.code, {\n children: \"DELETED\"\n }), \". Once a job’s status moves past \", _jsx(_components.code, {\n children: \"DRAFT\"\n }), \" it\\ncannot be changed back to \", _jsx(_components.code, {\n children: \"DRAFT\"\n }), \" (\", _jsx(_components.code, {\n children: \"INVALID_STATUS_TRANSITION\"\n }), \");\\nother reverse transitions are not documented either way.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Null clears\"\n }), \": some fields accept \", _jsx(_components.code, {\n children: \"null\"\n }), \" to clear their value\\n(\", _jsx(_components.code, {\n children: \"teamId\"\n }), \", \", _jsx(_components.code, {\n children: \"contractType\"\n }), \", \", _jsx(_components.code, {\n children: \"degreeLevel\"\n }), \", \", _jsx(_components.code, {\n children: \"jobRole\"\n }), \",\\n\", _jsx(_components.code, {\n children: \"potentialAmount\"\n }), \", \", _jsx(_components.code, {\n children: \"potentialAmountCurrency\"\n }), \", \", _jsx(_components.code, {\n children: \"potentialHiresCount\"\n }), \",\\n\", _jsx(_components.code, {\n children: \"yearOfExperience\"\n }), \", \", _jsx(_components.code, {\n children: \"description\"\n }), \", \", _jsx(_components.code, {\n children: \"screeningQuestion\"\n }), \",\\n\", _jsx(_components.code, {\n children: \"applicationForm\"\n }), \", \", _jsx(_components.code, {\n children: \"criterionDetails\"\n }), \"). \", _jsx(_components.code, {\n children: \"title\"\n }), \", \", _jsx(_components.code, {\n children: \"city\"\n }), \", \", _jsx(_components.code, {\n children: \"state\"\n }), \", and\\n\", _jsx(_components.code, {\n children: \"country\"\n }), \" cannot be set to \", _jsx(_components.code, {\n children: \"null\"\n }), \" — omit them instead.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"applicationForm is merged, not replaced\"\n }), \": provide only the\\n\", _jsx(_components.code, {\n children: \"applicationForm\"\n }), \" keys you want to change; new values override\\nexisting ones and the rest are kept. If \", _jsx(_components.code, {\n children: \"expectedCTC\"\n }), \"/\", _jsx(_components.code, {\n children: \"currentCTC\"\n }), \" is\\nset to \", _jsx(_components.code, {\n children: \"MANDATORY\"\n }), \" or \", _jsx(_components.code, {\n children: \"OPTIONAL\"\n }), \" (not \", _jsx(_components.code, {\n children: \"OFF\"\n }), \"), the corresponding\\ncurrency key is required unless the job already has a currency value;\\notherwise the update fails.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"The three salary fields must be provided together if any is\\nprovided, and \", _jsx(_components.code, {\n children: \"salaryRangeTo\"\n }), \" must be greater than\\n\", _jsx(_components.code, {\n children: \"salaryRangeFrom\"\n }), \".\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"All field validations (type, length, format) are the same as for\\nCreate Job.\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The success response is a bare job object that is smaller than the\\ncreate/get response and includes the populated \", _jsx(_components.code, {\n children: \"pipelineStage\"\n }), \" array.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Update a job","description":"Update an existing job posting. All fields are optional; only include\nthe fields you want to change (partial update). Fields not included in\nthe request remain unchanged. The request body cannot be empty — at\nleast one field must be provided.\n\nBehavior notes:\n- **Status lifecycle**: the documented path is `DRAFT` → `ACTIVE` →\n `INACTIVE` → `DELETED`. Once a job's status moves past `DRAFT` it\n cannot be changed back to `DRAFT` (`INVALID_STATUS_TRANSITION`);\n other reverse transitions are not documented either way.\n- **Null clears**: some fields accept `null` to clear their value\n (`teamId`, `contractType`, `degreeLevel`, `jobRole`,\n `potentialAmount`, `potentialAmountCurrency`, `potentialHiresCount`,\n `yearOfExperience`, `description`, `screeningQuestion`,\n `applicationForm`, `criterionDetails`). `title`, `city`, `state`, and\n `country` cannot be set to `null` — omit them instead.\n- **applicationForm is merged, not replaced**: provide only the\n `applicationForm` keys you want to change; new values override\n existing ones and the rest are kept. If `expectedCTC`/`currentCTC` is\n set to `MANDATORY` or `OPTIONAL` (not `OFF`), the corresponding\n currency key is required unless the job already has a currency value;\n otherwise the update fails.\n- The three salary fields must be provided together if any is\n provided, and `salaryRangeTo` must be greater than\n `salaryRangeFrom`.\n- All field validations (type, length, format) are the same as for\n Create Job.\n\nThe success response is a bare job object that is smaller than the\ncreate/get response and includes the populated `pipelineStage` array.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /jobs/{jobId}","href":"/api-playground/jobs/update-a-job","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Jobs"],"operationId":"updateJob","summary":"Update a job","description":"Update an existing job posting. All fields are optional; only include\nthe fields you want to change (partial update). Fields not included in\nthe request remain unchanged. The request body cannot be empty — at\nleast one field must be provided.\n\nBehavior notes:\n- **Status lifecycle**: the documented path is `DRAFT` → `ACTIVE` →\n `INACTIVE` → `DELETED`. Once a job's status moves past `DRAFT` it\n cannot be changed back to `DRAFT` (`INVALID_STATUS_TRANSITION`);\n other reverse transitions are not documented either way.\n- **Null clears**: some fields accept `null` to clear their value\n (`teamId`, `contractType`, `degreeLevel`, `jobRole`,\n `potentialAmount`, `potentialAmountCurrency`, `potentialHiresCount`,\n `yearOfExperience`, `description`, `screeningQuestion`,\n `applicationForm`, `criterionDetails`). `title`, `city`, `state`, and\n `country` cannot be set to `null` — omit them instead.\n- **applicationForm is merged, not replaced**: provide only the\n `applicationForm` keys you want to change; new values override\n existing ones and the rest are kept. If `expectedCTC`/`currentCTC` is\n set to `MANDATORY` or `OPTIONAL` (not `OFF`), the corresponding\n currency key is required unless the job already has a currency value;\n otherwise the update fails.\n- The three salary fields must be provided together if any is\n provided, and `salaryRangeTo` must be greater than\n `salaryRangeFrom`.\n- All field validations (type, length, format) are the same as for\n Create Job.\n\nThe success response is a bare job object that is smaller than the\ncreate/get response and includes the populated `pipelineStage` array.\n","requestBody":"31bbf1e3-98b4-4a8d-9e91-12f10ece099c","responses":{"200":"93d396ec-1fff-45d3-9995-7131d3eac335","400":"03c8673f-59df-4e73-b54a-503658a43d50","401":"f72ce2dd-b42a-4f3a-b9fb-dc2d78d035a3","403":"6e95492f-7e12-44b0-bdc4-da67c3dac796","404":"3fadfed8-6964-4f54-a9f0-060bb77c54d1","429":"974ea59c-aea1-4810-ba0a-c294aed3c202","500":"b1da4629-5245-4694-9dd1-f4acc63226d5"},"method":"put","type":"path","servers":["33fc5173-9c79-4ceb-afc4-86a4687d00cd","3a2ed6ba-6976-41bf-ae76-fe04d352e807"],"security":["480f8571-6aa1-4f13-ba5c-c8f2af838410"],"path":"/jobs/{jobId}","baseUrlOptions":["https://partner-api.taptalent.io/v1/partner","https://sandbox.partner-api.taptalent.io/v1/partner"],"title":"Update a job","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"aca3a4e2-1a9f-4118-90bc-3d10bd4a2e2e":{"name":"jobId","in":"path","required":true,"description":"The unique identifier of the job.","schema":{"type":"integer","isRequired":true,"description":"The unique identifier of the job.","uniqueKey":"","typeLabel":"integer"},"example":12345}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Request body for updating a job. All fields are optional — include only\nthe fields you want to change; omitted fields remain unchanged. The\nbody cannot be empty: at least one field must be provided. Field\nvalidations (type, length, format) are the same as for Create Job.\n\nFields that accept `null` to clear their value: `teamId`,\n`contractType`, `degreeLevel`, `jobRole`, `potentialAmount`,\n`potentialAmountCurrency`, `potentialHiresCount`, `yearOfExperience`,\n`description`, `screeningQuestion`, `applicationForm`, and\n`criterionDetails`. `title`, `city`, `state`, and `country` cannot be\nset to `null`.\n","minProperties":1,"dependentRequired":{"salaryRangeFrom":["salaryRangeTo","salaryCurrency"],"salaryRangeTo":["salaryRangeFrom","salaryCurrency"],"salaryCurrency":["salaryRangeFrom","salaryRangeTo"],"potentialAmount":["potentialAmountCurrency"]},"properties":{"title":{"type":"string","description":"The job title displayed to candidates. Cannot be set to `null`.","minLength":3,"maxLength":500,"uniqueKey":"title","typeLabel":"string"},"city":{"type":"string","description":"The city where the job is located. Cannot be set to `null` — omit to leave unchanged.","maxLength":200,"uniqueKey":"city","typeLabel":"string"},"state":{"type":"string","description":"The state or province where the job is located. Cannot be set to `null` — omit to leave unchanged.","maxLength":200,"uniqueKey":"state","typeLabel":"string"},"country":{"type":"string","description":"The country where the job is located. Cannot be set to `null` — omit to leave unchanged.","maxLength":200,"uniqueKey":"country","typeLabel":"string"},"description":{"oneOf":[{"type":"string","description":"Detailed job description. May be set to `null` to clear it.","maxLength":10000,"uniqueKey":"description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Detailed job description. May be set to `null` to clear it.","maxLength":10000,"uniqueKey":"description.oneOf.1","typeLabel":"null"}],"uniqueKey":"description","typeLabel":"string | null"},"status":{"type":"string","description":"New job status. Unlike creation, all four values are allowed here.\nThe documented lifecycle path is\n`DRAFT` → `ACTIVE` → `INACTIVE` → `DELETED`; once a job's status\nmoves past `DRAFT`, it cannot be changed back to `DRAFT`\n(`INVALID_STATUS_TRANSITION`). Other reverse transitions are not\ndocumented either way.\n","enum":["DRAFT","ACTIVE","INACTIVE","DELETED"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"workMode":{"type":"string","description":"Work arrangement for the position.","enum":["ONSITE","REMOTE","HYBRID"],"uniqueKey":"workMode","typeLabel":"enum\u003cstring>"},"screeningQuestion":{"oneOf":[{"type":"array","description":"Replaces the job's pre-screening questions (maximum 15). May be set\nto `null` to clear them.\n","maxItems":15,"items":{"type":"object","description":"A pre-screening question candidates must answer when applying.","required":["type","question"],"properties":{"type":{"type":"string","description":"Question type. Only text questions are supported.","enum":["text"],"isRequired":true,"uniqueKey":"screeningQuestion.oneOf.0.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"question":{"type":"string","description":"The question text.","minLength":1,"maxLength":3000,"isRequired":true,"uniqueKey":"screeningQuestion.oneOf.0.items.[INDEX].question","typeLabel":"string"}},"uniqueKey":"screeningQuestion.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"screeningQuestion.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Replaces the job's pre-screening questions (maximum 15). May be set\nto `null` to clear them.\n","maxItems":15,"items":{"type":"object","description":"A pre-screening question candidates must answer when applying.","required":["type","question"],"properties":{"type":{"type":"string","description":"Question type. Only text questions are supported.","enum":["text"]},"question":{"type":"string","description":"The question text.","minLength":1,"maxLength":3000}}},"uniqueKey":"screeningQuestion.oneOf.1","typeLabel":"null"}],"uniqueKey":"screeningQuestion","typeLabel":"object[] | null"},"teamId":{"oneOf":[{"type":"string","format":"uuid","description":"Team assignment. May be set to `null` to clear it.","uniqueKey":"teamId.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Team assignment. May be set to `null` to clear it.","uniqueKey":"teamId.oneOf.1","typeLabel":"null"}],"uniqueKey":"teamId","typeLabel":"string\u003cuuid> | null"},"contractType":{"oneOf":[{"type":"string","description":"Employment contract type. May be set to `null` to clear it.","enum":["Permanent","Freelance / Consultant","Fixed term contract","Internship","Student"],"uniqueKey":"contractType.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Employment contract type. May be set to `null` to clear it.","uniqueKey":"contractType.oneOf.1","typeLabel":"null"}],"uniqueKey":"contractType","typeLabel":"enum\u003cstring> | null"},"degreeLevel":{"oneOf":[{"type":"string","description":"Minimum education level required. May be set to `null` to clear it.","enum":["High School","Bachelor's","Master's","M.B.A.","Ph.D.","Other"],"uniqueKey":"degreeLevel.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Minimum education level required. May be set to `null` to clear it.","uniqueKey":"degreeLevel.oneOf.1","typeLabel":"null"}],"uniqueKey":"degreeLevel","typeLabel":"enum\u003cstring> | null"},"jobRole":{"oneOf":[{"type":"string","description":"Job role category. May be set to `null` to clear it.","enum":["Accounting","Administrative","Customer Service","Design","Education","Engineering","Finance","Healthcare","Hospitality \u0026 Tourism","Human Resources (HR)","Information Technology (IT)","Legal","Marketing","Media \u0026 Public Relations (PR)","Pharmaceuticals","Production","Property Management","Public Service \u0026 Security","Real Estate","Retail","Sales","Supply Chain \u0026 Logistics"],"uniqueKey":"jobRole.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Job role category. May be set to `null` to clear it.","uniqueKey":"jobRole.oneOf.1","typeLabel":"null"}],"uniqueKey":"jobRole","typeLabel":"enum\u003cstring> | null"},"salaryRangeFrom":{"type":"integer","description":"Minimum annual salary. If any salary field is provided, all three\n(`salaryRangeFrom`, `salaryRangeTo`, `salaryCurrency`) must be\nprovided together.\n","minimum":0,"maximum":9999999999,"uniqueKey":"salaryRangeFrom","typeLabel":"integer"},"salaryRangeTo":{"type":"integer","description":"Maximum annual salary. Must be greater than `salaryRangeFrom`. If\nany salary field is provided, all three must be provided together.\n","minimum":0,"maximum":9999999999,"uniqueKey":"salaryRangeTo","typeLabel":"integer"},"salaryCurrency":{"type":"string","description":"Currency for the salary range. If any salary field is provided, all\nthree must be provided together.\n","enum":["USD","PHP","SGD","IDR","EUR","INR","GBP","AED","MYR","AUD","CAD","JPY","CNY","CHF","ZAR","KRW","THB","VND","BRL","MXN","RUB","TRY","SEK","NOK","DKK","PLN","HKD","MAD"],"uniqueKey":"salaryCurrency","typeLabel":"enum\u003cstring>"},"potentialAmount":{"oneOf":[{"type":"number","description":"Potential revenue or value associated with filling this position.\n`potentialAmountCurrency` is required when this is provided. May be\nset to `null` to clear it.\n","minimum":0,"uniqueKey":"potentialAmount.oneOf.0","typeLabel":"number"},{"type":"null","description":"Potential revenue or value associated with filling this position.\n`potentialAmountCurrency` is required when this is provided. May be\nset to `null` to clear it.\n","minimum":0,"uniqueKey":"potentialAmount.oneOf.1","typeLabel":"null"}],"uniqueKey":"potentialAmount","typeLabel":"number | null"},"potentialAmountCurrency":{"oneOf":[{"type":"string","description":"Currency for the potential amount (3-character uppercase code).\nMay be set to `null` to clear it.\n","pattern":"^[A-Z]{3}$","uniqueKey":"potentialAmountCurrency.oneOf.0","typeLabel":"string"},{"type":"null","description":"Currency for the potential amount (3-character uppercase code).\nMay be set to `null` to clear it.\n","pattern":"^[A-Z]{3}$","uniqueKey":"potentialAmountCurrency.oneOf.1","typeLabel":"null"}],"uniqueKey":"potentialAmountCurrency","typeLabel":"string | null"},"potentialHiresCount":{"oneOf":[{"type":"integer","description":"Number of people you plan to hire. May be set to `null` to clear it.","minimum":1,"uniqueKey":"potentialHiresCount.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Number of people you plan to hire. May be set to `null` to clear it.","minimum":1,"uniqueKey":"potentialHiresCount.oneOf.1","typeLabel":"null"}],"uniqueKey":"potentialHiresCount","typeLabel":"integer | null"},"yearOfExperience":{"oneOf":[{"type":"number","description":"Minimum years of professional experience required (0-50). May be set to `null` to clear it.","minimum":0,"maximum":50,"uniqueKey":"yearOfExperience.oneOf.0","typeLabel":"number"},{"type":"null","description":"Minimum years of professional experience required (0-50). May be set to `null` to clear it.","minimum":0,"maximum":50,"uniqueKey":"yearOfExperience.oneOf.1","typeLabel":"null"}],"uniqueKey":"yearOfExperience","typeLabel":"number | null"},"applicationForm":{"oneOf":[{"type":"object","description":"Candidate application form configuration. The submitted object is\nMERGED with the job's existing `applicationForm` — provide only the\nkeys you want to change; new values override existing ones. If\n`expectedCTC`/`currentCTC` is set to `MANDATORY` or `OPTIONAL`, the\ncorresponding currency key is required unless the job already has an\nexisting currency value. May be set to `null` to clear the\nconfiguration.\n","properties":{"phone":{"type":"string","description":"Phone number field requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.oneOf.0.phone","typeLabel":"enum\u003cstring>"},"currentJobTitle":{"type":"string","description":"Current job title field requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.oneOf.0.currentJobTitle","typeLabel":"enum\u003cstring>"},"resume":{"type":"string","description":"Resume/CV upload requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.oneOf.0.resume","typeLabel":"enum\u003cstring>"},"otherFiles":{"type":"string","description":"Other documents upload requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.oneOf.0.otherFiles","typeLabel":"enum\u003cstring>"},"company":{"type":"string","description":"Current company field requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.oneOf.0.company","typeLabel":"enum\u003cstring>"},"isWillingToRelocate":{"type":"string","description":"Willingness-to-relocate question. Unlike the other form fields this\none has no `OPTIONAL` value — it is either `MANDATORY` or `OFF`.\n","enum":["MANDATORY","OFF"],"uniqueKey":"applicationForm.oneOf.0.isWillingToRelocate","typeLabel":"enum\u003cstring>"},"noticePeriod":{"type":"string","description":"Notice period field requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.oneOf.0.noticePeriod","typeLabel":"enum\u003cstring>"},"expectedCTC":{"type":"string","description":"Expected compensation requirement. If set to `MANDATORY` or\n`OPTIONAL` (i.e. not `OFF`), `currencyExpectedCTC` is required\n(on update: unless the job already has an existing currency value).\n","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.oneOf.0.expectedCTC","typeLabel":"enum\u003cstring>"},"currentCTC":{"type":"string","description":"Current compensation requirement. If set to `MANDATORY` or\n`OPTIONAL` (i.e. not `OFF`), `currencyCurrentCTC` is required\n(on update: unless the job already has an existing currency value).\n","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.oneOf.0.currentCTC","typeLabel":"enum\u003cstring>"},"currencyExpectedCTC":{"type":"string","description":"Currency code for the expected CTC (e.g. `USD`). Required if\n`expectedCTC` is not `OFF` (on update: and the job has no existing\ncurrency value).\n","examples":["USD"],"uniqueKey":"applicationForm.oneOf.0.currencyExpectedCTC","typeLabel":"string"},"currencyCurrentCTC":{"type":"string","description":"Currency code for the current CTC (e.g. `USD`). Required if\n`currentCTC` is not `OFF` (on update: and the job has no existing\ncurrency value).\n","examples":["USD"],"uniqueKey":"applicationForm.oneOf.0.currencyCurrentCTC","typeLabel":"string"},"expectedCTCPeriod":{"type":"string","description":"Period for the expected CTC.","enum":["ANNUALLY","MONTHLY"],"uniqueKey":"applicationForm.oneOf.0.expectedCTCPeriod","typeLabel":"enum\u003cstring>"},"currentCTCPeriod":{"type":"string","description":"Period for the current CTC.","enum":["ANNUALLY","MONTHLY"],"uniqueKey":"applicationForm.oneOf.0.currentCTCPeriod","typeLabel":"enum\u003cstring>"},"gender":{"type":"string","description":"Gender field requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.oneOf.0.gender","typeLabel":"enum\u003cstring>"},"dateOfBirth":{"type":"string","description":"Date of birth field requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.oneOf.0.dateOfBirth","typeLabel":"enum\u003cstring>"},"nationality":{"type":"string","description":"Nationality field requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.oneOf.0.nationality","typeLabel":"enum\u003cstring>"}},"uniqueKey":"applicationForm.oneOf.0","typeLabel":"object"},{"type":"null","description":"Candidate application form configuration. The submitted object is\nMERGED with the job's existing `applicationForm` — provide only the\nkeys you want to change; new values override existing ones. If\n`expectedCTC`/`currentCTC` is set to `MANDATORY` or `OPTIONAL`, the\ncorresponding currency key is required unless the job already has an\nexisting currency value. May be set to `null` to clear the\nconfiguration.\n","uniqueKey":"applicationForm.oneOf.1","typeLabel":"null"}],"uniqueKey":"applicationForm","typeLabel":"object | null"},"criterionDetails":{"oneOf":[{"type":"array","description":"Replaces the job's criterion details (maximum 7). May be set to\n`null` to clear them.\n","maxItems":7,"items":{"type":"object","description":"A job requirement/qualification used by TapTalent's AI to evaluate and\nscore candidates. \"Must Have\" criteria carry more weight in match\nscoring than \"Nice to Have\" or \"Bonus\" criteria.\n","required":["criterion_text"],"properties":{"criterion_text":{"type":"string","description":"The requirement description.","minLength":1,"maxLength":3000,"isRequired":true,"uniqueKey":"criterionDetails.oneOf.0.items.[INDEX].criterion_text","typeLabel":"string"},"priority":{"type":"string","description":"Priority level of the criterion. Defaults to \"Nice to Have\" when\nomitted.\n","enum":["Must Have","Nice to Have","Bonus"],"default":"Nice to Have","uniqueKey":"criterionDetails.oneOf.0.items.[INDEX].priority","typeLabel":"enum\u003cstring>"}},"uniqueKey":"criterionDetails.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"criterionDetails.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Replaces the job's criterion details (maximum 7). May be set to\n`null` to clear them.\n","maxItems":7,"items":{"type":"object","description":"A job requirement/qualification used by TapTalent's AI to evaluate and\nscore candidates. \"Must Have\" criteria carry more weight in match\nscoring than \"Nice to Have\" or \"Bonus\" criteria.\n","required":["criterion_text"],"properties":{"priority":{"type":"string","description":"Priority level of the criterion. Defaults to \"Nice to Have\" when\nomitted.\n","enum":["Must Have","Nice to Have","Bonus"],"default":"Nice to Have"},"criterion_text":{"type":"string","description":"The requirement description.","minLength":1,"maxLength":3000}}},"uniqueKey":"criterionDetails.oneOf.1","typeLabel":"null"}],"uniqueKey":"criterionDetails","typeLabel":"object[] | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"basicTitleUpdate":{"title":"basicTitleUpdate","value":{"title":"Updated Senior Software Engineer Position"}},"multipleFieldsUpdate":{"title":"multipleFieldsUpdate","value":{"title":"Senior Full Stack Developer","description":"We are looking for an experienced full stack developer...","city":"San Francisco","state":"California","country":"United States","workMode":"REMOTE","status":"ACTIVE","contractType":"Permanent","degreeLevel":"Bachelor's","jobRole":"Engineering"}},"applicationFormUpdate":{"title":"applicationFormUpdate","value":{"applicationForm":{"phone":"MANDATORY","resume":"MANDATORY","currentJobTitle":"OPTIONAL","company":"OFF","isWillingToRelocate":"MANDATORY","noticePeriod":"OPTIONAL","expectedCTC":"MANDATORY","currencyExpectedCTC":"USD","expectedCTCPeriod":"ANNUALLY","currentCTC":"OPTIONAL","currencyCurrentCTC":"USD","currentCTCPeriod":"MONTHLY","gender":"OFF","dateOfBirth":"OPTIONAL","nationality":"MANDATORY"}}},"statusUpdate":{"title":"statusUpdate","value":{"status":"INACTIVE"}},"salaryRangeUpdate":{"title":"salaryRangeUpdate","value":{"salaryRangeFrom":120000,"salaryRangeTo":180000,"salaryCurrency":"USD"}},"screeningQuestionsUpdate":{"title":"screeningQuestionsUpdate","value":{"screeningQuestion":[{"type":"text","question":"Why are you interested in this position?"},{"type":"text","question":"What is your experience with React?"}]}},"criterionDetailsUpdate":{"title":"criterionDetailsUpdate","value":{"criterionDetails":[{"priority":"Must Have","criterion_text":"5+ years of experience in JavaScript"},{"priority":"Nice to Have","criterion_text":"Experience with TypeScript"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"93d396ec-1fff-45d3-9995-7131d3eac335":{"description":"The updated job. This shape is smaller than the create/get job\nresponse and includes the populated `pipelineStage` array.\n","content":{"application/json":{"schema":{"type":"object","description":"Job object returned by the update endpoint. This shape is smaller than\nthe create/get `Job` response — it omits `skills`, `careerLevel`,\n`publishType`, `companyClientId`, `potentialAmount`,\n`potentialAmountCurrency`, `potentialHiresCount`, `closingStatus`,\n`closingReason`, `referralTemplateId`, and `jobType` — and includes the\npopulated `pipelineStage` array.\n","required":["id","title","city","state","country","pipelineId","status","workMode"],"properties":{"id":{"type":"integer","description":"Unique identifier of the job.","isRequired":true,"uniqueKey":"id","typeLabel":"integer"},"title":{"type":"string","description":"Job title displayed to candidates.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"city":{"type":"string","description":"Job location city.","isRequired":true,"uniqueKey":"city","typeLabel":"string"},"state":{"type":"string","description":"Job location state/province.","isRequired":true,"uniqueKey":"state","typeLabel":"string"},"country":{"type":"string","description":"Job location country.","isRequired":true,"uniqueKey":"country","typeLabel":"string"},"pipelineId":{"type":"integer","description":"Identifier of the hiring pipeline attached to the job. The published\ndocumentation shows the placeholder string \"pipelineId_1\"; the API\nuses the integer pipeline id (as in the Pipelines API).\n","examples":[181],"isRequired":true,"uniqueKey":"pipelineId","typeLabel":"integer"},"status":{"type":"string","description":"Job lifecycle status. The documented lifecycle path is\n`DRAFT` → `ACTIVE` → `INACTIVE` → `DELETED`. The only documented\nrestriction is that once a job leaves `DRAFT` it can never return to\n`DRAFT`; other reverse transitions (e.g. reactivation) are not\ndocumented either way. When creating a job only `DRAFT` and\n`ACTIVE` are allowed (see `JobStatusCreate`).\n","enum":["DRAFT","ACTIVE","INACTIVE","DELETED"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"workMode":{"type":"string","description":"Work arrangement for the position. `ONSITE` (default at creation): work\nat a physical office location; `REMOTE`: work from anywhere; `HYBRID`:\na combination of onsite and remote work.\n","enum":["ONSITE","REMOTE","HYBRID"],"isRequired":true,"uniqueKey":"workMode","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"Detailed job description.","uniqueKey":"description","typeLabel":"string"},"screeningQuestion":{"type":"array","description":"Pre-screening questions candidates must answer when applying.","items":{"type":"object","description":"A pre-screening question candidates must answer when applying.","required":["type","question"],"properties":{"type":{"type":"string","description":"Question type. Only text questions are supported.","enum":["text"],"isRequired":true,"uniqueKey":"screeningQuestion.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"question":{"type":"string","description":"The question text.","minLength":1,"maxLength":3000,"isRequired":true,"uniqueKey":"screeningQuestion.items.[INDEX].question","typeLabel":"string"}},"uniqueKey":"screeningQuestion.items.[INDEX]","typeLabel":"object"},"uniqueKey":"screeningQuestion","typeLabel":"object[]"},"applicationForm":{"type":"object","description":"Configuration of the candidate application form: which fields are\nrequired, optional, or hidden when a candidate applies to the job. All\nkeys are optional — specify only the fields you want to configure. If\nthe object is omitted at creation, the system sets default values\nautomatically. When updating a job, the submitted object is MERGED with\nthe job's existing `applicationForm` (new values override existing\nones); it is not replaced wholesale.\n","properties":{"phone":{"type":"string","description":"Phone number field requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.phone","typeLabel":"enum\u003cstring>"},"currentJobTitle":{"type":"string","description":"Current job title field requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.currentJobTitle","typeLabel":"enum\u003cstring>"},"resume":{"type":"string","description":"Resume/CV upload requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.resume","typeLabel":"enum\u003cstring>"},"otherFiles":{"type":"string","description":"Other documents upload requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.otherFiles","typeLabel":"enum\u003cstring>"},"company":{"type":"string","description":"Current company field requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.company","typeLabel":"enum\u003cstring>"},"isWillingToRelocate":{"type":"string","description":"Willingness-to-relocate question. Unlike the other form fields this\none has no `OPTIONAL` value — it is either `MANDATORY` or `OFF`.\n","enum":["MANDATORY","OFF"],"uniqueKey":"applicationForm.isWillingToRelocate","typeLabel":"enum\u003cstring>"},"noticePeriod":{"type":"string","description":"Notice period field requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.noticePeriod","typeLabel":"enum\u003cstring>"},"expectedCTC":{"type":"string","description":"Expected compensation requirement. If set to `MANDATORY` or\n`OPTIONAL` (i.e. not `OFF`), `currencyExpectedCTC` is required\n(on update: unless the job already has an existing currency value).\n","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.expectedCTC","typeLabel":"enum\u003cstring>"},"currentCTC":{"type":"string","description":"Current compensation requirement. If set to `MANDATORY` or\n`OPTIONAL` (i.e. not `OFF`), `currencyCurrentCTC` is required\n(on update: unless the job already has an existing currency value).\n","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.currentCTC","typeLabel":"enum\u003cstring>"},"currencyExpectedCTC":{"type":"string","description":"Currency code for the expected CTC (e.g. `USD`). Required if\n`expectedCTC` is not `OFF` (on update: and the job has no existing\ncurrency value).\n","examples":["USD"],"uniqueKey":"applicationForm.currencyExpectedCTC","typeLabel":"string"},"currencyCurrentCTC":{"type":"string","description":"Currency code for the current CTC (e.g. `USD`). Required if\n`currentCTC` is not `OFF` (on update: and the job has no existing\ncurrency value).\n","examples":["USD"],"uniqueKey":"applicationForm.currencyCurrentCTC","typeLabel":"string"},"expectedCTCPeriod":{"type":"string","description":"Period for the expected CTC.","enum":["ANNUALLY","MONTHLY"],"uniqueKey":"applicationForm.expectedCTCPeriod","typeLabel":"enum\u003cstring>"},"currentCTCPeriod":{"type":"string","description":"Period for the current CTC.","enum":["ANNUALLY","MONTHLY"],"uniqueKey":"applicationForm.currentCTCPeriod","typeLabel":"enum\u003cstring>"},"gender":{"type":"string","description":"Gender field requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.gender","typeLabel":"enum\u003cstring>"},"dateOfBirth":{"type":"string","description":"Date of birth field requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.dateOfBirth","typeLabel":"enum\u003cstring>"},"nationality":{"type":"string","description":"Nationality field requirement.","enum":["OPTIONAL","MANDATORY","OFF"],"uniqueKey":"applicationForm.nationality","typeLabel":"enum\u003cstring>"}},"uniqueKey":"applicationForm","typeLabel":"object"},"clientId":{"type":"integer","description":"Undocumented; type observed from examples. The documentation shows\nthe placeholder string \"clientId_1\"; modeled as the underlying\ninteger client id.\n","examples":[301],"uniqueKey":"clientId","typeLabel":"integer"},"companyId":{"type":"integer","description":"Undocumented; type observed from examples. The documentation shows\nthe placeholder string \"companyId_1\"; modeled as the underlying\ninteger company id.\n","examples":[12001],"uniqueKey":"companyId","typeLabel":"integer"},"teamId":{"oneOf":[{"type":"string","format":"uuid","description":"Team the job is assigned to, or `null` if unassigned.","uniqueKey":"teamId.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Team the job is assigned to, or `null` if unassigned.","uniqueKey":"teamId.oneOf.1","typeLabel":"null"}],"uniqueKey":"teamId","typeLabel":"string\u003cuuid> | null"},"contractType":{"type":"string","description":"Employment contract type.","enum":["Permanent","Freelance / Consultant","Fixed term contract","Internship","Student"],"uniqueKey":"contractType","typeLabel":"enum\u003cstring>"},"degreeLevel":{"type":"string","description":"Minimum education level required for the position.","enum":["High School","Bachelor's","Master's","M.B.A.","Ph.D.","Other"],"uniqueKey":"degreeLevel","typeLabel":"enum\u003cstring>"},"jobRole":{"type":"string","description":"Job role category, used for job organization and candidate matching.","enum":["Accounting","Administrative","Customer Service","Design","Education","Engineering","Finance","Healthcare","Hospitality \u0026 Tourism","Human Resources (HR)","Information Technology (IT)","Legal","Marketing","Media \u0026 Public Relations (PR)","Pharmaceuticals","Production","Property Management","Public Service \u0026 Security","Real Estate","Retail","Sales","Supply Chain \u0026 Logistics"],"uniqueKey":"jobRole","typeLabel":"enum\u003cstring>"},"salaryRangeFrom":{"type":"integer","description":"Minimum annual salary.","uniqueKey":"salaryRangeFrom","typeLabel":"integer"},"salaryRangeTo":{"type":"integer","description":"Maximum annual salary.","uniqueKey":"salaryRangeTo","typeLabel":"integer"},"salaryCurrency":{"type":"string","description":"Currency code for the salary range.","enum":["USD","PHP","SGD","IDR","EUR","INR","GBP","AED","MYR","AUD","CAD","JPY","CNY","CHF","ZAR","KRW","THB","VND","BRL","MXN","RUB","TRY","SEK","NOK","DKK","PLN","HKD","MAD"],"uniqueKey":"salaryCurrency","typeLabel":"enum\u003cstring>"},"criterionDetails":{"type":"array","description":"Job requirements used for AI candidate matching.","items":{"type":"object","description":"A job requirement/qualification used by TapTalent's AI to evaluate and\nscore candidates. \"Must Have\" criteria carry more weight in match\nscoring than \"Nice to Have\" or \"Bonus\" criteria.\n","required":["criterion_text"],"properties":{"criterion_text":{"type":"string","description":"The requirement description.","minLength":1,"maxLength":3000,"isRequired":true,"uniqueKey":"criterionDetails.items.[INDEX].criterion_text","typeLabel":"string"},"priority":{"type":"string","description":"Priority level of the criterion. Defaults to \"Nice to Have\" when\nomitted.\n","enum":["Must Have","Nice to Have","Bonus"],"default":"Nice to Have","uniqueKey":"criterionDetails.items.[INDEX].priority","typeLabel":"enum\u003cstring>"}},"uniqueKey":"criterionDetails.items.[INDEX]","typeLabel":"object"},"uniqueKey":"criterionDetails","typeLabel":"object[]"},"pipelineStage":{"type":"array","description":"Pipeline stages of the job with per-stage candidate counts (populated in the update response).","items":{"type":"object","description":"A pipeline stage of a job, with the number of candidates currently in it.","required":["name","type","totalCandidate"],"properties":{"name":{"type":"string","description":"Stage display name.","examples":["Applied"],"isRequired":true,"uniqueKey":"pipelineStage.items.[INDEX].name","typeLabel":"string"},"type":{"type":"string","description":"Stage type identifier (e.g. `APPLIED`, `INTERVIEW`).","examples":["APPLIED"],"isRequired":true,"uniqueKey":"pipelineStage.items.[INDEX].type","typeLabel":"string"},"totalCandidate":{"type":"integer","description":"Number of candidates currently in this stage.","isRequired":true,"uniqueKey":"pipelineStage.items.[INDEX].totalCandidate","typeLabel":"integer"}},"uniqueKey":"pipelineStage.items.[INDEX]","typeLabel":"object"},"uniqueKey":"pipelineStage","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"updatedJob":{"title":"updatedJob","value":{"id":12345,"title":"Updated Senior Software Engineer Position","description":"We are looking for an experienced software engineer...","city":"San Francisco","state":"California","country":"United States","pipelineId":181,"status":"ACTIVE","workMode":"REMOTE","screeningQuestion":[{"type":"text","question":"Why are you interested in this position?"}],"applicationForm":{"phone":"MANDATORY","resume":"MANDATORY","currentJobTitle":"OPTIONAL","company":"OFF","isWillingToRelocate":"MANDATORY","noticePeriod":"OPTIONAL","expectedCTC":"MANDATORY","currencyExpectedCTC":"USD","expectedCTCPeriod":"ANNUALLY","currentCTC":"OPTIONAL","currencyCurrentCTC":"USD","currentCTCPeriod":"MONTHLY","gender":"OFF","dateOfBirth":"OPTIONAL","nationality":"MANDATORY"},"clientId":301,"companyId":12001,"teamId":null,"contractType":"Permanent","degreeLevel":"Bachelor's","jobRole":"Engineering","salaryRangeFrom":120000,"salaryRangeTo":180000,"salaryCurrency":"USD","criterionDetails":[{"priority":"Must Have","criterion_text":"5+ years of experience in JavaScript"}],"pipelineStage":[{"name":"Applied","type":"APPLIED","totalCandidate":5}]}}},"exampleType":"examples"}},"exampleType":"examples"},"03c8673f-59df-4e73-b54a-503658a43d50":{"description":"Validation error.\nHTTP status inferred from the error category; the source documentation specifies the body but not the status code.\n","content":{"application/json":{"schema":{"type":"object","description":"Canonical error envelope used by most non-authentication errors.","required":["error"],"properties":{"error":{"type":"object","description":"Canonical error object carried under the `error` key.","required":["code","type","message"],"properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. `INVALID_REQUEST`.","examples":["INVALID_REQUEST"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"type":{"type":"string","description":"Error category.","enum":["validation_error","internal_error","not_found","authorization_error","resource_error","payment_error","subscription_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Optional per-field validation messages or structured error context.","additionalProperties":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"emptyBody":{"title":"emptyBody","value":{"error":{"code":"INVALID_REQUEST","type":"validation_error","message":"Request body cannot be empty. At least one field must be provided for update."}}},"invalidStatusTransition":{"title":"invalidStatusTransition","value":{"error":{"code":"INVALID_STATUS_TRANSITION","type":"validation_error","message":"Cannot change job status back to DRAFT. Current status is ACTIVE. Once a job moves from DRAFT, it cannot be reverted."}}},"missingCurrencyForCtc":{"title":"missingCurrencyForCtc","value":{"error":{"code":"INVALID_REQUEST","type":"validation_error","message":"currencyExpectedCTC is required when expectedCTC is not OFF"}}},"invalidSalaryRange":{"title":"invalidSalaryRange","value":{"error":{"code":"INVALID_REQUEST","type":"validation_error","message":"One or more fields are invalid.","details":{"salaryRangeTo":"salaryRangeTo must be greater than salaryRangeFrom"}}}},"partialSalaryFields":{"title":"partialSalaryFields","value":{"error":{"code":"INVALID_REQUEST","type":"validation_error","message":"One or more fields are invalid.","details":{"salaryCurrency":"salaryRangeFrom, salaryRangeTo, and salaryCurrency must be provided together"}}}}},"exampleType":"examples"}},"exampleType":"examples"},"f72ce2dd-b42a-4f3a-b9fb-dc2d78d035a3":{"description":"Authentication failed. Note that authentication errors use flat body\nshapes rather than the canonical `error` envelope.\n","content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Flat authentication error shape (does not use the canonical `error` envelope).","required":["message"],"properties":{"message":{"type":"string","examples":["Invalid API key"],"isRequired":true,"uniqueKey":"oneOf.0.message","typeLabel":"string"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"Flat authentication error shape returned when the account subscription is inactive.","required":["code","message"],"properties":{"code":{"type":"string","examples":["ACCOUNT_INACTIVE"],"isRequired":true,"uniqueKey":"oneOf.1.code","typeLabel":"string"},"message":{"type":"string","examples":["Your subscription is inactive. Please renew your plan to continue using this feature."],"isRequired":true,"uniqueKey":"oneOf.1.message","typeLabel":"string"}},"uniqueKey":"oneOf.1","typeLabel":"object"},{"type":"object","description":"Flat authentication error shape returned when the API key does not exist.","required":["message","isApiKeyExists"],"properties":{"message":{"type":"string","examples":["API key not found"],"isRequired":true,"uniqueKey":"oneOf.2.message","typeLabel":"string"},"isApiKeyExists":{"type":"boolean","isRequired":true,"uniqueKey":"oneOf.2.isApiKeyExists","typeLabel":"boolean"}},"uniqueKey":"oneOf.2","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"invalidApiKey":{"title":"invalidApiKey","value":{"message":"Invalid API key"}},"accountInactive":{"title":"accountInactive","value":{"code":"ACCOUNT_INACTIVE","message":"Your subscription is inactive. Please renew your plan to continue using this feature."}},"apiKeyNotFound":{"title":"apiKeyNotFound","value":{"message":"API key not found","isApiKeyExists":false}}},"exampleType":"examples"}},"exampleType":"examples"},"6e95492f-7e12-44b0-bdc4-da67c3dac796":{"description":"The job does not belong to your company.\nHTTP status inferred from the error category; the source documentation specifies the body but not the status code.\n","content":{"application/json":{"schema":{"type":"object","description":"Canonical error envelope used by most non-authentication errors.","required":["error"],"properties":{"error":{"type":"object","description":"Canonical error object carried under the `error` key.","required":["code","type","message"],"properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. `INVALID_REQUEST`.","examples":["INVALID_REQUEST"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"type":{"type":"string","description":"Error category.","enum":["validation_error","internal_error","not_found","authorization_error","resource_error","payment_error","subscription_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Optional per-field validation messages or structured error context.","additionalProperties":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"permissionDenied":{"title":"permissionDenied","value":{"error":{"code":"PERMISSION_DENIED","type":"authorization_error","message":"You are not authorized to update this job. The job does not belong to your company."}}}},"exampleType":"examples"}},"exampleType":"examples"},"3fadfed8-6964-4f54-a9f0-060bb77c54d1":{"description":"Job not found.\nHTTP status inferred from the error category; the source documentation specifies the body but not the status code.\n","content":{"application/json":{"schema":{"type":"object","description":"Canonical error envelope used by most non-authentication errors.","required":["error"],"properties":{"error":{"type":"object","description":"Canonical error object carried under the `error` key.","required":["code","type","message"],"properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. `INVALID_REQUEST`.","examples":["INVALID_REQUEST"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"type":{"type":"string","description":"Error category.","enum":["validation_error","internal_error","not_found","authorization_error","resource_error","payment_error","subscription_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Optional per-field validation messages or structured error context.","additionalProperties":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"jobNotFound":{"title":"jobNotFound","value":{"error":{"code":"NOT_FOUND","type":"not_found","message":"Job not found"}}}},"exampleType":"examples"}},"exampleType":"examples"},"974ea59c-aea1-4810-ba0a-c294aed3c202":{"x-inferred":true,"description":"Rate limit exceeded. Rate limits are applied at the company level; the\nresponse body below is inferred because the current documentation\nmentions handling 429 responses but does not publish a body. Retry\nwith exponential backoff.\n","content":{"application/json":{"schema":{"type":"object","description":"Canonical error envelope used by most non-authentication errors.","required":["error"],"properties":{"error":{"type":"object","description":"Canonical error object carried under the `error` key.","required":["code","type","message"],"properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. `INVALID_REQUEST`.","examples":["INVALID_REQUEST"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"type":{"type":"string","description":"Error category.","enum":["validation_error","internal_error","not_found","authorization_error","resource_error","payment_error","subscription_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Optional per-field validation messages or structured error context.","additionalProperties":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"rateLimited":{"title":"rateLimited","value":{"error":{"code":"RATE_LIMIT_EXCEEDED","type":"validation_error","message":"Too many requests. Please retry with exponential backoff."}}}},"exampleType":"examples"}},"exampleType":"examples"},"b1da4629-5245-4694-9dd1-f4acc63226d5":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"type":"object","description":"Canonical error envelope used by most non-authentication errors.","required":["error"],"properties":{"error":{"type":"object","description":"Canonical error object carried under the `error` key.","required":["code","type","message"],"properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. `INVALID_REQUEST`.","examples":["INVALID_REQUEST"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"type":{"type":"string","description":"Error category.","enum":["validation_error","internal_error","not_found","authorization_error","resource_error","payment_error","subscription_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Optional per-field validation messages or structured error context.","additionalProperties":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"internalError":{"title":"internalError","value":{"error":{"code":"INTERNAL_ERROR","type":"internal_error","message":"Something went wrong."}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"480f8571-6aa1-4f13-ba5c-c8f2af838410":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Company-scoped API key. Production keys are prefixed `sk_live_`,\nsandbox keys `sk_test_`, each followed by 22 base62 characters\n(pattern `^sk_(live|test)_[0-9A-Za-z]{22}$`). Generate keys in the\nTapTalent dashboard under Account Settings → Developers → API Key\nManagement; a key is shown once at generation and old keys are\ninvalidated immediately on regeneration.\n","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"33fc5173-9c79-4ceb-afc4-86a4687d00cd":{"url":"https://partner-api.taptalent.io/v1/partner","description":"Production (use `sk_live_` keys)"},"3a2ed6ba-6976-41bf-ae76-fe04d352e807":{"url":"https://sandbox.partner-api.taptalent.io/v1/partner","description":"Sandbox / staging (use `sk_test_` keys)"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Company-scoped API key. Production keys are prefixed `sk_live_`,\nsandbox keys `sk_test_`, each followed by 22 base62 characters\n(pattern `^sk_(live|test)_[0-9A-Za-z]{22}$`). Generate keys in the\nTapTalent dashboard under Account Settings → Developers → API Key\nManagement; a key is shown once at generation and old keys are\ninvalidated immediately on regeneration.\n","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Company-scoped API key. Production keys are prefixed `sk_live_`,\nsandbox keys `sk_test_`, each followed by 22 base62 characters\n(pattern `^sk_(live|test)_[0-9A-Za-z]{22}$`). Generate keys in the\nTapTalent dashboard under Account Settings → Developers → API Key\nManagement; a key is shown once at generation and old keys are\ninvalidated immediately on regeneration.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"taptalent","siteName":"Taptalent Partner API","title":"Update a job - Taptalent Partner API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-14T12:21:43.186Z","originalFileLocation":"api-playground/jobs/update-a-job.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Update an existing job posting. All fields are optional; only include the fields you want to change (partial update). Fields not included in the request remain unchanged. The request body cannot be empty — at least one field must be provided. Behavior notes: - Status lifecycle: the documented path is DRAFT → ACTIVE → INACTIVE → DELETED. Once a job\u0026#x27;s status moves past DRAFT it cannot be changed back to DRAFT (INVALID_STATUS_TRANSITION); other reverse transitions are not documented either way. - Null clears: some fields accept null to clear their value (teamId, contractType, degreeLevel, jobRole, potentialAmount, potentialAmountCurrency, potentialHiresCount, yearOfExperience, description, screeningQuestion, applicationForm, criterionDetails). title, city, state, and country cannot be set to null — omit them instead. - applicationForm is merged, not replaced: provide only the applicationForm keys you want to change; new values override existing ones and the rest are kept. If expectedCTC/currentCTC is set to MANDATORY or OPTIONAL (not OFF), the corresponding currency key is required unless the job already has a currency value; otherwise the update fails. - The three salary fields must be provided together if any is provided, and salaryRangeTo must be greater than salaryRangeFrom. - All field validations (type, length, format) are the same as for Create Job. The success response is a bare job object that is smaller than the create/get response and includes the populated pipelineStage array.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Taptalent Partner API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update a job - Taptalent Partner API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Update an existing job posting. All fields are optional; only include the fields you want to change (partial update). Fields not included in the request remain unchanged. The request body cannot be empty — at least one field must be provided. Behavior notes: - Status lifecycle: the documented path is DRAFT → ACTIVE → INACTIVE → DELETED. Once a job\u0026#x27;s status moves past DRAFT it cannot be changed back to DRAFT (INVALID_STATUS_TRANSITION); other reverse transitions are not documented either way. - Null clears: some fields accept null to clear their value (teamId, contractType, degreeLevel, jobRole, potentialAmount, potentialAmountCurrency, potentialHiresCount, yearOfExperience, description, screeningQuestion, applicationForm, criterionDetails). title, city, state, and country cannot be set to null — omit them instead. - applicationForm is merged, not replaced: provide only the applicationForm keys you want to change; new values override existing ones and the rest are kept. If expectedCTC/currentCTC is set to MANDATORY or OPTIONAL (not OFF), the corresponding currency key is required unless the job already has a currency value; otherwise the update fails. - The three salary fields must be provided together if any is provided, and salaryRangeTo must be greater than salaryRangeFrom. - All field validations (type, length, format) are the same as for Create Job. The success response is a bare job object that is smaller than the create/get response and includes the populated pipelineStage array.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Taptalent Partner API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.taptalent.io/api-playground/jobs/update-a-job\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://taptalent.mintlify.site/_mintlify/api/og/v2?division=Jobs\u0026amp;title=Update+a+job\u0026amp;description=Update+an+existing+job+posting.+All+fields+are+optional%3B+only+include%0Athe+fields+you+want+to+change+%28partial+update%29.+Fields+not+included+in%0Athe+request+remain+\u0026amp;theme=646244e5d078ae15de8cf593\u0026amp;signature=9dfab2f6ca3cab3f5b4e5cd74b3ce45b311d324fe5d8f7fa81e22488d578ec98\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Update a job - Taptalent Partner API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Update an existing job posting. All fields are optional; only include the fields you want to change (partial update). Fields not included in the request remain unchanged. The request body cannot be empty — at least one field must be provided. Behavior notes: - Status lifecycle: the documented path is DRAFT → ACTIVE → INACTIVE → DELETED. Once a job\u0026#x27;s status moves past DRAFT it cannot be changed back to DRAFT (INVALID_STATUS_TRANSITION); other reverse transitions are not documented either way. - Null clears: some fields accept null to clear their value (teamId, contractType, degreeLevel, jobRole, potentialAmount, potentialAmountCurrency, potentialHiresCount, yearOfExperience, description, screeningQuestion, applicationForm, criterionDetails). title, city, state, and country cannot be set to null — omit them instead. - applicationForm is merged, not replaced: provide only the applicationForm keys you want to change; new values override existing ones and the rest are kept. If expectedCTC/currentCTC is set to MANDATORY or OPTIONAL (not OFF), the corresponding currency key is required unless the job already has a currency value; otherwise the update fails. - The three salary fields must be provided together if any is provided, and salaryRangeTo must be greater than salaryRangeFrom. - All field validations (type, length, format) are the same as for Create Job. The success response is a bare job object that is smaller than the create/get response and includes the populated pipelineStage array.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://taptalent.mintlify.site/_mintlify/api/og/v2?division=Jobs\u0026amp;title=Update+a+job\u0026amp;description=Update+an+existing+job+posting.+All+fields+are+optional%3B+only+include%0Athe+fields+you+want+to+change+%28partial+update%29.+Fields+not+included+in%0Athe+request+remain+\u0026amp;theme=646244e5d078ae15de8cf593\u0026amp;signature=9dfab2f6ca3cab3f5b4e5cd74b3ce45b311d324fe5d8f7fa81e22488d578ec98\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Taptalent Partner API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6e58ff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.taptalent.io/api-playground/jobs/update-a-job\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-playground/jobs/update-a-job.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.taptalent.io/#organization\",\"name\":\"Taptalent Partner API\",\"url\":\"https://docs.taptalent.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/taptalent/lKy84_BssSCy2hcz/images/TTLogo(1).png?fit=max\u0026auto=format\u0026n=lKy84_BssSCy2hcz\u0026q=85\u0026s=ac7c949427cc2893306f6036415f087e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.taptalent.io#website\",\"name\":\"Taptalent Partner API\",\"url\":\"https://docs.taptalent.io\",\"publisher\":{\"@id\":\"https://docs.taptalent.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.taptalent.io/api-playground/jobs/update-a-job#webpage\",\"url\":\"https://docs.taptalent.io/api-playground/jobs/update-a-job\",\"name\":\"Update a job\",\"description\":\"Update an existing job posting. All fields are optional; only include the fields you want to change (partial update). Fields not included in the request remain unchanged. The request body cannot be empty — at least one field must be provided. Behavior notes: - Status lifecycle: the documented path is DRAFT → ACTIVE → INACTIVE → DELETED. Once a job's status moves past DRAFT it cannot be changed back to DRAFT (INVALID_STATUS_TRANSITION); other reverse transitions are not documented either way. - Null clears: some fields accept null to clear their value (teamId, contractType, degreeLevel, jobRole, potentialAmount, potentialAmountCurrency, potentialHiresCount, yearOfExperience, description, screeningQuestion, applicationForm, criterionDetails). title, city, state, and country cannot be set to null — omit them instead. - applicationForm is merged, not replaced: provide only the applicationForm keys you want to change; new values override existing ones and the rest are kept. If expectedCTC/currentCTC is set to MANDATORY or OPTIONAL (not OFF), the corresponding currency key is required unless the job already has a currency value; otherwise the update fails. - The three salary fields must be provided together if any is provided, and salaryRangeTo must be greater than salaryRangeFrom. - All field validations (type, length, format) are the same as for Create Job. The success response is a bare job object that is smaller than the create/get response and includes the populated pipelineStage array.\",\"dateModified\":\"2026-10-14T12:21:43.186Z\",\"isPartOf\":{\"@id\":\"https://docs.taptalent.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.taptalent.io/api-playground/jobs/update-a-job#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.taptalent.io/api-playground/jobs/update-a-job#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Jobs\",\"item\":\"https://docs.taptalent.io/api-playground/jobs/list-jobs\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Update a job\",\"item\":\"https://docs.taptalent.io/api-playground/jobs/update-a-job\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.taptalent.io/api-playground/jobs/update-a-job#apireference\",\"headline\":\"Update a job\",\"name\":\"Update a job\",\"description\":\"Update an existing job posting. All fields are optional; only include the fields you want to change (partial update). Fields not included in the request remain unchanged. The request body cannot be empty — at least one field must be provided. Behavior notes: - Status lifecycle: the documented path is DRAFT → ACTIVE → INACTIVE → DELETED. Once a job's status moves past DRAFT it cannot be changed back to DRAFT (INVALID_STATUS_TRANSITION); other reverse transitions are not documented either way. - Null clears: some fields accept null to clear their value (teamId, contractType, degreeLevel, jobRole, potentialAmount, potentialAmountCurrency, potentialHiresCount, yearOfExperience, description, screeningQuestion, applicationForm, criterionDetails). title, city, state, and country cannot be set to null — omit them instead. - applicationForm is merged, not replaced: provide only the applicationForm keys you want to change; new values override existing ones and the rest are kept. If expectedCTC/currentCTC is set to MANDATORY or OPTIONAL (not OFF), the corresponding currency key is required unless the job already has a currency value; otherwise the update fails. - The three salary fields must be provided together if any is provided, and salaryRangeTo must be greater than salaryRangeFrom. - All field validations (type, length, format) are the same as for Create Job. The success response is a bare job object that is smaller than the create/get response and includes the populated pipelineStage array.\",\"url\":\"https://docs.taptalent.io/api-playground/jobs/update-a-job\",\"mainEntityOfPage\":{\"@id\":\"https://docs.taptalent.io/api-playground/jobs/update-a-job#webpage\"},\"dateModified\":\"2026-10-14T12:21:43.186Z\",\"publisher\":{\"@id\":\"https://docs.taptalent.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.taptalent.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Taptalent Partner API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Taptalent Partner API","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Playground","groups":[{"group":"Jobs","pages":[{"title":"List jobs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /jobs","href":"/api-playground/jobs/list-jobs"},{"title":"Create a job","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /jobs","href":"/api-playground/jobs/create-a-job"},{"title":"Get a job","description":"Retrieve detailed information about a specific job. The success\nresponse is the bare job object (no envelope).\n\nNote: this endpoint does not return a 404 for an unknown `jobId`. Per\nthe current documentation, a non-existent job is reported as a 500\n`INTERNAL_ERROR` with the message \"Something went wrong.\"\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /jobs/{jobId}","href":"/api-playground/jobs/get-a-job"},{"title":"Update a job","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /jobs/{jobId}","href":"/api-playground/jobs/update-a-job"}]},{"group":"Candidates","pages":[{"title":"Add a candidate","description":"Create a new candidate in your company.\n\n- **Duplicate email handling:** if a candidate with the same email\n already exists, the existing candidate is returned with\n `isExisting: true` instead of creating a duplicate.\n- **Job association:** if `jobId` is provided, the candidate is\n associated with that job and `jobCandidateId` is returned; resume\n scoring is automatically enabled (consumes credits). If the\n candidate is already in the job, `isAlreadyInJob` is `true` in the\n response.\n- **Resume parsing:** by default (`shouldParseResume: true`), a\n provided `resume` URL is downloaded, stored, and parsed\n asynchronously (consumes credits). The webhook events\n `resume.single_parse.completed` and `resume.single_parse.failed`\n are sent when parsing completes or fails.\n- **Scoring without parsing:** if `shouldParseResume` is `false` and\n `jobId` is provided, you must include `city`, `country`,\n `educations`, and `workExperiences` for scoring to work; otherwise\n the request fails with `MISSING_SCORING_FIELDS` (the missing field\n names are listed in `details.missingFields`).\n- **Response structure:** all miscellaneous fields (educations,\n workExperiences, etc.) are flattened to the top level of the\n returned candidate object.\n- **Validation:** all fields are validated against a schema; invalid\n requests return detailed field-specific error messages.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /candidates","href":"/api-playground/candidates/add-a-candidate"},{"title":"List candidates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /candidates/list","href":"/api-playground/candidates/list-candidates"},{"title":"Get candidate details","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /candidates/{candidateId}","href":"/api-playground/candidates/get-candidate-details"},{"title":"Bulk upload resumes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /candidates/bulk/resume","href":"/api-playground/candidates/bulk-upload-resumes"},{"title":"Get batch candidates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /candidates/batch/{batchId}","href":"/api-playground/candidates/get-batch-candidates"},{"title":"Bulk fetch candidates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /candidates/bulk-fetch","href":"/api-playground/candidates/bulk-fetch-candidates"}]},{"group":"Job Candidates","pages":[{"title":"Bulk fetch job candidates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /job-candidates/bulk-fetch","href":"/api-playground/job-candidates/bulk-fetch-job-candidates"},{"title":"Bulk upload resumes to a job","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /job-candidates/bulk/resume","href":"/api-playground/job-candidates/bulk-upload-resumes-to-a-job"},{"title":"List candidates for a job","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /job-candidates/job/{jobId}/candidates","href":"/api-playground/job-candidates/list-candidates-for-a-job"},{"title":"List candidates in a pipeline stage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /job-candidates/stage/{stageId}/candidates","href":"/api-playground/job-candidates/list-candidates-in-a-pipeline-stage"},{"title":"Move a job candidate to a stage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /job-candidates/{jobCandidateId}/stage","href":"/api-playground/job-candidates/move-a-job-candidate-to-a-stage"}]},{"group":"Pipelines","pages":[{"title":"List pipelines","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /pipelines","href":"/api-playground/pipelines/list-pipelines"},{"title":"Create a pipeline","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /pipelines","href":"/api-playground/pipelines/create-a-pipeline"},{"title":"Get pipeline details","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /pipelines/{pipelineId}","href":"/api-playground/pipelines/get-pipeline-details"},{"title":"Update a pipeline","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /pipelines/{pipelineId}","href":"/api-playground/pipelines/update-a-pipeline"},{"title":"Create or update a pipeline stage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /pipelines/stages","href":"/api-playground/pipelines/create-or-update-a-pipeline-stage"},{"title":"Delete a pipeline stage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /pipelines/stages/{stageId}","href":"/api-playground/pipelines/delete-a-pipeline-stage"}]},{"group":"Custom Fields","pages":[{"title":"List custom fields","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /custom-fields","href":"/api-playground/custom-fields/list-custom-fields"},{"title":"Create a custom field","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /custom-fields","href":"/api-playground/custom-fields/create-a-custom-field"},{"title":"Get a custom field","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /custom-fields/{customFieldId}","href":"/api-playground/custom-fields/get-a-custom-field"},{"title":"Update a custom field","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /custom-fields/{customFieldId}","href":"/api-playground/custom-fields/update-a-custom-field"},{"title":"Delete a custom field","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /custom-fields/{customFieldId}","href":"/api-playground/custom-fields/delete-a-custom-field"}]},{"group":"Custom Field Values","pages":[{"title":"List custom field values for an entity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /custom-field-values","href":"/api-playground/custom-field-values/list-custom-field-values-for-an-entity"},{"title":"Create or update a custom field value","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /custom-field-values","href":"/api-playground/custom-field-values/create-or-update-a-custom-field-value"},{"title":"Bulk create or update custom field values","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /custom-field-values/bulk","href":"/api-playground/custom-field-values/bulk-create-or-update-custom-field-values"},{"title":"Get a custom field value","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /custom-field-values/{valueId}","href":"/api-playground/custom-field-values/get-a-custom-field-value"},{"title":"Delete a custom field value","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /custom-field-values/{valueId}","href":"/api-playground/custom-field-values/delete-a-custom-field-value"},{"title":"Delete all custom field values for an entity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /custom-field-values/entity/{entityType}/{entityId}","href":"/api-playground/custom-field-values/delete-all-custom-field-values-for-an-entity"}]},{"group":"Candidate Self-Scheduling","pages":[{"title":"List booking schedules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /booking-schedules","href":"/api-playground/candidate-self-scheduling/list-booking-schedules"},{"title":"Get a booking schedule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /booking-schedules/{bookingScheduleId}","href":"/api-playground/candidate-self-scheduling/get-a-booking-schedule"},{"title":"List available slots","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /booking-schedules/{bookingScheduleId}/slots","href":"/api-playground/candidate-self-scheduling/list-available-slots"},{"title":"List locations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /booking-schedules/{bookingScheduleId}/locations","href":"/api-playground/candidate-self-scheduling/list-locations"},{"title":"List questions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /booking-schedules/{bookingScheduleId}/questions","href":"/api-playground/candidate-self-scheduling/list-questions"},{"title":"Create a candidate scheduling link","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /booking-schedules/{bookingScheduleId}/links","href":"/api-playground/candidate-self-scheduling/create-a-candidate-scheduling-link"},{"title":"Create a booking","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /booking-schedules/{bookingScheduleId}/bookings","href":"/api-playground/candidate-self-scheduling/create-a-booking"},{"title":"List bookings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /bookings","href":"/api-playground/candidate-self-scheduling/list-bookings"},{"title":"Get a booking","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /bookings/{bookingId}","href":"/api-playground/candidate-self-scheduling/get-a-booking"},{"title":"Reschedule a booking","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /bookings/{bookingId}/reschedule","href":"/api-playground/candidate-self-scheduling/reschedule-a-booking"},{"title":"Cancel a booking","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /bookings/{bookingId}/cancel","href":"/api-playground/candidate-self-scheduling/cancel-a-booking"},{"title":"Record attendance / check-in","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /bookings/{bookingId}/attendance","href":"/api-playground/candidate-self-scheduling/record-attendance-check-in"},{"title":"Record attendance by code","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /attendance-codes/{attendanceCode}/check-in","href":"/api-playground/candidate-self-scheduling/record-attendance-by-code"}]},{"group":"Webhooks","pages":[{"title":"Bulk resume upload batch started","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook resume.bulk_upload_parse.started","href":"/api-playground/webhooks/bulk-resume-upload-batch-started"},{"title":"Bulk resume upload batch completed","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook resume.bulk_upload_parse.completed","href":"/api-playground/webhooks/bulk-resume-upload-batch-completed"},{"title":"Bulk resume upload batch failed","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook resume.bulk_upload_parse.failed","href":"/api-playground/webhooks/bulk-resume-upload-batch-failed"},{"title":"Single resume parse completed","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook resume.single_parse.completed","href":"/api-playground/webhooks/single-resume-parse-completed"},{"title":"Single resume parse failed","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook resume.single_parse.failed","href":"/api-playground/webhooks/single-resume-parse-failed"},{"title":"Job created","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook job.created","href":"/api-playground/webhooks/job-created"},{"title":"Job details updated","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook job.updated","href":"/api-playground/webhooks/job-details-updated"},{"title":"Job status changed","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook job.status_changed","href":"/api-playground/webhooks/job-status-changed"},{"title":"Candidates added to a job","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook candidate.added_to_job","href":"/api-playground/webhooks/candidates-added-to-a-job"},{"title":"Candidates moved to a different stage","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook candidate.stage_changed","href":"/api-playground/webhooks/candidates-moved-to-a-different-stage"},{"title":"Candidates hired","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook candidate.hired","href":"/api-playground/webhooks/candidates-hired"},{"title":"Candidates rejected","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook candidate.rejected","href":"/api-playground/webhooks/candidates-rejected"},{"title":"Candidates removed from a job","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook candidate.removed_from_job","href":"/api-playground/webhooks/candidates-removed-from-a-job"},{"title":"Candidate profile or application updated","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook candidate.updated","href":"/api-playground/webhooks/candidate-profile-or-application-updated"},{"title":"Booking scheduled","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook booking.scheduled","href":"/api-playground/webhooks/booking-scheduled"},{"title":"Booking rescheduled","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook booking.rescheduled","href":"/api-playground/webhooks/booking-rescheduled"},{"title":"Booking cancelled","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook booking.cancelled","href":"/api-playground/webhooks/booking-cancelled"},{"title":"Booking attendance updated","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook booking.attendance_updated","href":"/api-playground/webhooks/booking-attendance-updated"}]}]}]},"basePath":"","title":"Update a job - Taptalent Partner API","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}