curl --request POST \
--url https://partner-api.taptalent.io/v1/partner/jobs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"title": "Senior Software Engineer",
"description": "We are looking for an experienced software engineer to join our team...",
"city": "San Francisco",
"state": "California",
"country": "United States",
"workMode": "REMOTE",
"status": "DRAFT",
"contractType": "Permanent",
"degreeLevel": "Bachelor's",
"jobRole": "Engineering",
"salaryRangeFrom": 120000,
"salaryRangeTo": 180000,
"salaryCurrency": "USD",
"yearOfExperience": 5,
"screeningQuestion": [
{
"type": "text",
"question": "What is your experience with Node.js?"
}
],
"criterionDetails": [
{
"priority": "Must Have",
"criterion_text": "5+ years of professional software development experience with JavaScript and Node.js"
},
{
"priority": "Must Have",
"criterion_text": "Strong experience with RESTful API design and development"
},
{
"priority": "Nice to Have",
"criterion_text": "Experience with cloud platforms (AWS, Azure, or GCP)"
},
{
"priority": "Nice to Have",
"criterion_text": "Familiarity with microservices architecture and containerization"
}
]
}
EOF{
"id": 12345,
"title": "Senior Software Engineer",
"description": "We are looking for an experienced software engineer to join our team...",
"city": "San Francisco",
"state": "California",
"country": "United States",
"pipelineId": 181,
"status": "DRAFT",
"workMode": "REMOTE",
"screeningQuestion": [
{
"type": "text",
"question": "What is your experience with Node.js?"
}
],
"skills": [],
"applicationForm": {
"phone": "OPTIONAL",
"currentJobTitle": "OPTIONAL",
"resume": "MANDATORY",
"otherFiles": "OFF",
"company": "OFF",
"isWillingToRelocate": "MANDATORY",
"noticePeriod": "OPTIONAL",
"expectedCTC": "OFF",
"currentCTC": "OFF",
"gender": "OFF",
"dateOfBirth": "OFF",
"nationality": "OFF"
},
"clientId": 301,
"companyId": 12001,
"teamId": null,
"careerLevel": null,
"contractType": "Permanent",
"degreeLevel": "Bachelor's",
"jobRole": "Engineering",
"salaryRangeFrom": 120000,
"salaryRangeTo": 180000,
"salaryCurrency": "USD",
"criterionDetails": [
{
"priority": "Must Have",
"criterion_text": "5+ years of professional software development experience with JavaScript and Node.js"
},
{
"priority": "Must Have",
"criterion_text": "Strong experience with RESTful API design and development"
},
{
"priority": "Nice to Have",
"criterion_text": "Experience with cloud platforms (AWS, Azure, or GCP)"
}
],
"publishType": null,
"companyClientId": null,
"potentialAmount": null,
"potentialAmountCurrency": null,
"potentialHiresCount": null,
"closingStatus": null,
"closingReason": null,
"referralTemplateId": null,
"pipelineStage": null,
"jobType": null
}Create a job
Create a new job posting.
Behavior and defaults:
statusdefaults toDRAFT; onlyDRAFTandACTIVEare allowed at creation time (INACTIVEandDELETEDexist only for updates).workModedefaults toONSITE.screeningQuestiondefaults to an empty array.- If
descriptionis omitted, TapTalent auto-generates one from the other job fields. - If
applicationFormis omitted, the system sets default values automatically. - The three salary fields (
salaryRangeFrom,salaryRangeTo,salaryCurrency) must be provided together or omitted together, andsalaryRangeTomust be greater thansalaryRangeFrom. potentialAmountCurrencyis required wheneverpotentialAmountis provided.- A company must already exist for the API key’s account; otherwise the
request fails with a 500
INTERNAL_ERROR(“Please create a company!”).
The success response is the bare job object (no envelope).
curl --request POST \
--url https://partner-api.taptalent.io/v1/partner/jobs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"title": "Senior Software Engineer",
"description": "We are looking for an experienced software engineer to join our team...",
"city": "San Francisco",
"state": "California",
"country": "United States",
"workMode": "REMOTE",
"status": "DRAFT",
"contractType": "Permanent",
"degreeLevel": "Bachelor's",
"jobRole": "Engineering",
"salaryRangeFrom": 120000,
"salaryRangeTo": 180000,
"salaryCurrency": "USD",
"yearOfExperience": 5,
"screeningQuestion": [
{
"type": "text",
"question": "What is your experience with Node.js?"
}
],
"criterionDetails": [
{
"priority": "Must Have",
"criterion_text": "5+ years of professional software development experience with JavaScript and Node.js"
},
{
"priority": "Must Have",
"criterion_text": "Strong experience with RESTful API design and development"
},
{
"priority": "Nice to Have",
"criterion_text": "Experience with cloud platforms (AWS, Azure, or GCP)"
},
{
"priority": "Nice to Have",
"criterion_text": "Familiarity with microservices architecture and containerization"
}
]
}
EOF{
"id": 12345,
"title": "Senior Software Engineer",
"description": "We are looking for an experienced software engineer to join our team...",
"city": "San Francisco",
"state": "California",
"country": "United States",
"pipelineId": 181,
"status": "DRAFT",
"workMode": "REMOTE",
"screeningQuestion": [
{
"type": "text",
"question": "What is your experience with Node.js?"
}
],
"skills": [],
"applicationForm": {
"phone": "OPTIONAL",
"currentJobTitle": "OPTIONAL",
"resume": "MANDATORY",
"otherFiles": "OFF",
"company": "OFF",
"isWillingToRelocate": "MANDATORY",
"noticePeriod": "OPTIONAL",
"expectedCTC": "OFF",
"currentCTC": "OFF",
"gender": "OFF",
"dateOfBirth": "OFF",
"nationality": "OFF"
},
"clientId": 301,
"companyId": 12001,
"teamId": null,
"careerLevel": null,
"contractType": "Permanent",
"degreeLevel": "Bachelor's",
"jobRole": "Engineering",
"salaryRangeFrom": 120000,
"salaryRangeTo": 180000,
"salaryCurrency": "USD",
"criterionDetails": [
{
"priority": "Must Have",
"criterion_text": "5+ years of professional software development experience with JavaScript and Node.js"
},
{
"priority": "Must Have",
"criterion_text": "Strong experience with RESTful API design and development"
},
{
"priority": "Nice to Have",
"criterion_text": "Experience with cloud platforms (AWS, Azure, or GCP)"
}
],
"publishType": null,
"companyClientId": null,
"potentialAmount": null,
"potentialAmountCurrency": null,
"potentialHiresCount": null,
"closingStatus": null,
"closingReason": null,
"referralTemplateId": null,
"pipelineStage": null,
"jobType": null
}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.
Body
Request body for creating a job. The three salary fields
(salaryRangeFrom, salaryRangeTo, salaryCurrency) must be provided
together or omitted together, with salaryRangeTo greater than
salaryRangeFrom. potentialAmountCurrency is required whenever
potentialAmount is provided.
The job title displayed to candidates and in job listings. Should be clear and descriptive; avoid non-standard abbreviations.
3 - 500"Senior Software Engineer"
The city where the job is located (full city name, without
state/province or country — use the state and country fields for
those).
200"San Francisco"
The state or province where the job is located (full name). For countries without states/provinces, you can use the country name or an empty string.
200"California"
The country where the job is located (full country name).
200"United States"
Detailed job description. If omitted, TapTalent auto-generates a description based on the other job fields.
10000Whether the job is immediately visible to candidates (ACTIVE) or
saved as a draft (DRAFT, the default). Only these two values are
allowed at creation; INACTIVE and DELETED exist only for
updates.
DRAFT, ACTIVE Work arrangement for the position. Defaults to ONSITE.
ONSITE, REMOTE, HYBRID Pre-screening questions candidates must answer when applying. Maximum 15 questions; only text questions are supported. Defaults to an empty array.
15Show child attributes
Show child attributes
Associates the job with a specific team. Must be an existing team id in your TapTalent account.
"123e4567-e89b-12d3-a456-426614174000"
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 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. Must be provided together with
salaryRangeTo and salaryCurrency, and must be less than
salaryRangeTo.
0 <= x <= 9999999999120000
Maximum annual salary. Must be provided together with
salaryRangeFrom and salaryCurrency, and must be greater than
salaryRangeFrom.
0 <= x <= 9999999999180000
Currency for the salary range. Must be provided together with
salaryRangeFrom and salaryRangeTo.
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
(e.g. commission potential). If provided,
potentialAmountCurrency is required.
x >= 050000
Currency for the potential amount: a 3-character uppercase currency
code. Required if potentialAmount is provided.
3^[A-Z]{3}$"USD"
Number of people you plan to hire for this position.
x >= 13
Minimum years of professional experience required. Use 0 for entry-level positions.
0 <= x <= 505
Configures which fields are required, optional, or hidden in the candidate application form. If not provided, default values are set automatically by the system.
Show child attributes
Show child attributes
Detailed job requirements and qualifications (maximum 7), used by TapTalent's AI to match and score candidates.
7Show child attributes
Show child attributes
Response
The created job (bare job object, no envelope).
Full job object returned by the create and get endpoints (bare object,
no envelope). Note that pipelineStage is null in the documented
create/get responses (it is populated in the list and update responses)
and createdAt does not appear in this shape.
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 (auto-generated if not supplied at creation).
Pre-screening questions candidates must answer when applying.
Show child attributes
Show child attributes
Undocumented; type observed from examples (always an empty array in documented responses).
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.
Undocumented; type observed from examples (always null in documented responses).
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
Undocumented; type observed from examples (always null in documented responses).
Undocumented; type observed from examples (always null in documented responses).
Potential revenue or value associated with filling this position.
Currency for the potential amount (3-character uppercase code).
Number of people planned to be hired for this position.
Undocumented; type observed from examples (always null in documented responses).
Undocumented; type observed from examples (always null in documented responses).
Undocumented; type observed from examples (always null in documented responses).
Pipeline stages with per-stage candidate counts. null in the
documented create/get responses; populated in the list and update
responses.
Show child attributes
Show child attributes
Undocumented; type observed from examples (always null in documented responses).
Was this page helpful?
.png?fit=max&auto=format&n=lKy84_BssSCy2hcz&q=85&s=ac7c949427cc2893306f6036415f087e)