curl --request GET \
--url https://partner-api.taptalent.io/v1/partner/jobs/{jobId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://partner-api.taptalent.io/v1/partner/jobs/{jobId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://partner-api.taptalent.io/v1/partner/jobs/{jobId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://partner-api.taptalent.io/v1/partner/jobs/{jobId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://partner-api.taptalent.io/v1/partner/jobs/{jobId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://partner-api.taptalent.io/v1/partner/jobs/{jobId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://partner-api.taptalent.io/v1/partner/jobs/{jobId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"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
}Get a job
Retrieve detailed information about a specific job. The success response is the bare job object (no envelope).
Note: this endpoint does not return a 404 for an unknown jobId. Per
the current documentation, a non-existent job is reported as a 500
INTERNAL_ERROR with the message “Something went wrong.”
curl --request GET \
--url https://partner-api.taptalent.io/v1/partner/jobs/{jobId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://partner-api.taptalent.io/v1/partner/jobs/{jobId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://partner-api.taptalent.io/v1/partner/jobs/{jobId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://partner-api.taptalent.io/v1/partner/jobs/{jobId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://partner-api.taptalent.io/v1/partner/jobs/{jobId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://partner-api.taptalent.io/v1/partner/jobs/{jobId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://partner-api.taptalent.io/v1/partner/jobs/{jobId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"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.
Path Parameters
The unique identifier of the job.
Response
The requested 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)