curl --request PUT \
--url https://partner-api.taptalent.io/v1/partner/jobs/{jobId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "Updated Senior Software Engineer Position"
}
'{
"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
}
]
}Update a job
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 pastDRAFTit cannot be changed back toDRAFT(INVALID_STATUS_TRANSITION); other reverse transitions are not documented either way. - Null clears: some fields accept
nullto clear their value (teamId,contractType,degreeLevel,jobRole,potentialAmount,potentialAmountCurrency,potentialHiresCount,yearOfExperience,description,screeningQuestion,applicationForm,criterionDetails).title,city,state, andcountrycannot be set tonull— omit them instead. - applicationForm is merged, not replaced: provide only the
applicationFormkeys you want to change; new values override existing ones and the rest are kept. IfexpectedCTC/currentCTCis set toMANDATORYorOPTIONAL(notOFF), 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
salaryRangeTomust be greater thansalaryRangeFrom. - 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.
curl --request PUT \
--url https://partner-api.taptalent.io/v1/partner/jobs/{jobId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "Updated Senior Software Engineer Position"
}
'{
"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
}
]
}Authorizations
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.
Path Parameters
The unique identifier of the job.
Body
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.
The job title displayed to candidates. Cannot be set to null.
3 - 500The city where the job is located. Cannot be set to null — omit to leave unchanged.
200The state or province where the job is located. Cannot be set to null — omit to leave unchanged.
200The country where the job is located. Cannot be set to null — omit to leave unchanged.
200Detailed job description. May be set to null to clear it.
10000New 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.
DRAFT, ACTIVE, INACTIVE, DELETED Work arrangement for the position.
ONSITE, REMOTE, HYBRID Replaces the job's pre-screening questions (maximum 15). May be set
to null to clear them.
15Show child attributes
Show child attributes
Team assignment. May be set to null to clear it.
Employment contract type. May be set to null to clear it.
Permanent, Freelance / Consultant, Fixed term contract, Internship, Student Minimum education level required. May be set to null to clear it.
High School, Bachelor's, Master's, M.B.A., Ph.D., Other Job role category. May be set to null to clear it.
Accounting, Administrative, Customer Service, Design, Education, Engineering, Finance, Healthcare, Hospitality & Tourism, Human Resources (HR), Information Technology (IT), Legal, Marketing, Media & Public Relations (PR), Pharmaceuticals, Production, Property Management, Public Service & Security, Real Estate, Retail, Sales, Supply Chain & Logistics Minimum annual salary. If any salary field is provided, all three
(salaryRangeFrom, salaryRangeTo, salaryCurrency) must be
provided together.
0 <= x <= 9999999999Maximum annual salary. Must be greater than salaryRangeFrom. If
any salary field is provided, all three must be provided together.
0 <= x <= 9999999999Currency for the salary range. If any salary field is provided, all three must be provided together.
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 Potential revenue or value associated with filling this position.
potentialAmountCurrency is required when this is provided. May be
set to null to clear it.
x >= 0Currency for the potential amount (3-character uppercase code).
May be set to null to clear it.
^[A-Z]{3}$Number of people you plan to hire. May be set to null to clear it.
x >= 1Minimum years of professional experience required (0-50). May be set to null to clear it.
0 <= x <= 50Candidate 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.
Show child attributes
Show child attributes
Replaces the job's criterion details (maximum 7). May be set to
null to clear them.
7Show child attributes
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.
Unique identifier of the job.
Job title displayed to candidates.
Job location city.
Job location state/province.
Job location country.
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).
181
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).
DRAFT, ACTIVE, INACTIVE, DELETED 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.
ONSITE, REMOTE, HYBRID Detailed job description.
Pre-screening questions candidates must answer when applying.
Show child attributes
Show child attributes
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.
Show child attributes
Show child attributes
Undocumented; type observed from examples. The documentation shows the placeholder string "clientId_1"; modeled as the underlying integer client id.
301
Undocumented; type observed from examples. The documentation shows the placeholder string "companyId_1"; modeled as the underlying integer company id.
12001
Team the job is assigned to, or null if unassigned.
Employment contract type.
Permanent, Freelance / Consultant, Fixed term contract, Internship, Student Minimum education level required for the position.
High School, Bachelor's, Master's, M.B.A., Ph.D., Other Job role category, used for job organization and candidate matching.
Accounting, Administrative, Customer Service, Design, Education, Engineering, Finance, Healthcare, Hospitality & Tourism, Human Resources (HR), Information Technology (IT), Legal, Marketing, Media & Public Relations (PR), Pharmaceuticals, Production, Property Management, Public Service & Security, Real Estate, Retail, Sales, Supply Chain & Logistics Minimum annual salary.
Maximum annual salary.
Currency code for the salary range.
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 Job requirements used for AI candidate matching.
Show child attributes
Show child attributes
Pipeline stages of the job with per-stage candidate counts (populated in the update response).
Show child attributes
Show child attributes
Was this page helpful?
.png?fit=max&auto=format&n=lKy84_BssSCy2hcz&q=85&s=ac7c949427cc2893306f6036415f087e)