Create Job Posting
curl --request POST \
--url https://api.linkupapi.com/v2/recruiter \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"account_id": "<string>",
"action": "<string>",
"params": {
"company_url": "<string>",
"title": "<string>",
"place": "<string>",
"html_description": "<string>",
"employment_status": "<string>",
"workplace": "<string>",
"contact_email": "<string>",
"skills": [
{}
],
"job_functions": [
{}
],
"industry_sectors": [
{}
],
"screening_questions": [
{}
],
"auto_rejection_template": "<string>"
}
}
'import requests
url = "https://api.linkupapi.com/v2/recruiter"
payload = {
"account_id": "<string>",
"action": "<string>",
"params": {
"company_url": "<string>",
"title": "<string>",
"place": "<string>",
"html_description": "<string>",
"employment_status": "<string>",
"workplace": "<string>",
"contact_email": "<string>",
"skills": [{}],
"job_functions": [{}],
"industry_sectors": [{}],
"screening_questions": [{}],
"auto_rejection_template": "<string>"
}
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account_id: '<string>',
action: '<string>',
params: {
company_url: '<string>',
title: '<string>',
place: '<string>',
html_description: '<string>',
employment_status: '<string>',
workplace: '<string>',
contact_email: '<string>',
skills: [{}],
job_functions: [{}],
industry_sectors: [{}],
screening_questions: [{}],
auto_rejection_template: '<string>'
}
})
};
fetch('https://api.linkupapi.com/v2/recruiter', 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://api.linkupapi.com/v2/recruiter",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'account_id' => '<string>',
'action' => '<string>',
'params' => [
'company_url' => '<string>',
'title' => '<string>',
'place' => '<string>',
'html_description' => '<string>',
'employment_status' => '<string>',
'workplace' => '<string>',
'contact_email' => '<string>',
'skills' => [
[
]
],
'job_functions' => [
[
]
],
'industry_sectors' => [
[
]
],
'screening_questions' => [
[
]
],
'auto_rejection_template' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.linkupapi.com/v2/recruiter"
payload := strings.NewReader("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"company_url\": \"<string>\",\n \"title\": \"<string>\",\n \"place\": \"<string>\",\n \"html_description\": \"<string>\",\n \"employment_status\": \"<string>\",\n \"workplace\": \"<string>\",\n \"contact_email\": \"<string>\",\n \"skills\": [\n {}\n ],\n \"job_functions\": [\n {}\n ],\n \"industry_sectors\": [\n {}\n ],\n \"screening_questions\": [\n {}\n ],\n \"auto_rejection_template\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.linkupapi.com/v2/recruiter")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"company_url\": \"<string>\",\n \"title\": \"<string>\",\n \"place\": \"<string>\",\n \"html_description\": \"<string>\",\n \"employment_status\": \"<string>\",\n \"workplace\": \"<string>\",\n \"contact_email\": \"<string>\",\n \"skills\": [\n {}\n ],\n \"job_functions\": [\n {}\n ],\n \"industry_sectors\": [\n {}\n ],\n \"screening_questions\": [\n {}\n ],\n \"auto_rejection_template\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linkupapi.com/v2/recruiter")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"company_url\": \"<string>\",\n \"title\": \"<string>\",\n \"place\": \"<string>\",\n \"html_description\": \"<string>\",\n \"employment_status\": \"<string>\",\n \"workplace\": \"<string>\",\n \"contact_email\": \"<string>\",\n \"skills\": [\n {}\n ],\n \"job_functions\": [\n {}\n ],\n \"industry_sectors\": [\n {}\n ],\n \"screening_questions\": [\n {}\n ],\n \"auto_rejection_template\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"job_posting_id": "4448305877",
"message": "Job posting created successfully",
"screening_questions_added": false
},
"metadata": {
"action": "create_job",
"account_id": "your-account-id",
"credits_consumed": 2,
"timestamp": "2026-03-24T12:00:00Z"
}
}
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "Missing required fields: company_url, place, html_description"
},
"metadata": {
"action": "create_job",
"account_id": "your-account-id",
"credits_consumed": 0,
"timestamp": "2026-03-24T12:00:00Z"
}
}
{
"success": false,
"error": {
"code": "CHANNEL_ERROR",
"message": "Impossible de récupérer les informations de l'entreprise: "
},
"metadata": {
"action": "create_job",
"account_id": "your-account-id",
"credits_consumed": 2,
"timestamp": "2026-03-24T12:00:00Z"
}
}
Recruiting
Create Job Posting
Create a job posting on LinkedIn (draft state).
POST
/
v2
/
recruiter
Create Job Posting
curl --request POST \
--url https://api.linkupapi.com/v2/recruiter \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"account_id": "<string>",
"action": "<string>",
"params": {
"company_url": "<string>",
"title": "<string>",
"place": "<string>",
"html_description": "<string>",
"employment_status": "<string>",
"workplace": "<string>",
"contact_email": "<string>",
"skills": [
{}
],
"job_functions": [
{}
],
"industry_sectors": [
{}
],
"screening_questions": [
{}
],
"auto_rejection_template": "<string>"
}
}
'import requests
url = "https://api.linkupapi.com/v2/recruiter"
payload = {
"account_id": "<string>",
"action": "<string>",
"params": {
"company_url": "<string>",
"title": "<string>",
"place": "<string>",
"html_description": "<string>",
"employment_status": "<string>",
"workplace": "<string>",
"contact_email": "<string>",
"skills": [{}],
"job_functions": [{}],
"industry_sectors": [{}],
"screening_questions": [{}],
"auto_rejection_template": "<string>"
}
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account_id: '<string>',
action: '<string>',
params: {
company_url: '<string>',
title: '<string>',
place: '<string>',
html_description: '<string>',
employment_status: '<string>',
workplace: '<string>',
contact_email: '<string>',
skills: [{}],
job_functions: [{}],
industry_sectors: [{}],
screening_questions: [{}],
auto_rejection_template: '<string>'
}
})
};
fetch('https://api.linkupapi.com/v2/recruiter', 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://api.linkupapi.com/v2/recruiter",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'account_id' => '<string>',
'action' => '<string>',
'params' => [
'company_url' => '<string>',
'title' => '<string>',
'place' => '<string>',
'html_description' => '<string>',
'employment_status' => '<string>',
'workplace' => '<string>',
'contact_email' => '<string>',
'skills' => [
[
]
],
'job_functions' => [
[
]
],
'industry_sectors' => [
[
]
],
'screening_questions' => [
[
]
],
'auto_rejection_template' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.linkupapi.com/v2/recruiter"
payload := strings.NewReader("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"company_url\": \"<string>\",\n \"title\": \"<string>\",\n \"place\": \"<string>\",\n \"html_description\": \"<string>\",\n \"employment_status\": \"<string>\",\n \"workplace\": \"<string>\",\n \"contact_email\": \"<string>\",\n \"skills\": [\n {}\n ],\n \"job_functions\": [\n {}\n ],\n \"industry_sectors\": [\n {}\n ],\n \"screening_questions\": [\n {}\n ],\n \"auto_rejection_template\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.linkupapi.com/v2/recruiter")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"company_url\": \"<string>\",\n \"title\": \"<string>\",\n \"place\": \"<string>\",\n \"html_description\": \"<string>\",\n \"employment_status\": \"<string>\",\n \"workplace\": \"<string>\",\n \"contact_email\": \"<string>\",\n \"skills\": [\n {}\n ],\n \"job_functions\": [\n {}\n ],\n \"industry_sectors\": [\n {}\n ],\n \"screening_questions\": [\n {}\n ],\n \"auto_rejection_template\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linkupapi.com/v2/recruiter")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"company_url\": \"<string>\",\n \"title\": \"<string>\",\n \"place\": \"<string>\",\n \"html_description\": \"<string>\",\n \"employment_status\": \"<string>\",\n \"workplace\": \"<string>\",\n \"contact_email\": \"<string>\",\n \"skills\": [\n {}\n ],\n \"job_functions\": [\n {}\n ],\n \"industry_sectors\": [\n {}\n ],\n \"screening_questions\": [\n {}\n ],\n \"auto_rejection_template\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"job_posting_id": "4448305877",
"message": "Job posting created successfully",
"screening_questions_added": false
},
"metadata": {
"action": "create_job",
"account_id": "your-account-id",
"credits_consumed": 2,
"timestamp": "2026-03-24T12:00:00Z"
}
}
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "Missing required fields: company_url, place, html_description"
},
"metadata": {
"action": "create_job",
"account_id": "your-account-id",
"credits_consumed": 0,
"timestamp": "2026-03-24T12:00:00Z"
}
}
{
"success": false,
"error": {
"code": "CHANNEL_ERROR",
"message": "Impossible de récupérer les informations de l'entreprise: "
},
"metadata": {
"action": "create_job",
"account_id": "your-account-id",
"credits_consumed": 2,
"timestamp": "2026-03-24T12:00:00Z"
}
}
Overview
Create a job posting. The job is created inDRAFT state — use publish_job to make it live.
This endpoint consumes 2 credits per request. Ignore this if you’re on per-seat pricing: usage is unlimited.
Request
string
required
Your API key for authentication.
string
required
The unique identifier of the account to use.
string
required
Must be
"create_job".object
required
Show params properties
Show params properties
string
required
LinkedIn company page URL to post the job under.
string
required
Job title.
string
required
Job location (e.g.
"Paris, France").string
required
Job description, basic HTML supported (
<p>, <strong>, <ul>/<li>).string
default:"FULL_TIME"
FULL_TIME, PART_TIME, CONTRACT, TEMPORARY, VOLUNTEER, or INTERNSHIP.string
default:"1"
"1" on-site, "2" remote, "3" hybrid.string
Contact email shown on the posting.
array
Skill names required for the role.
array
Job function names.
array
Industry sector names.
array
Screening question objects (predefined types or
CUSTOM_QUESTION). See the V1 Create Job reference for the full object shape and predefined types.string
Message sent to auto-rejected candidates.
Response
boolean
Indicates whether the request was successful.
object
object
{
"success": true,
"data": {
"job_posting_id": "4448305877",
"message": "Job posting created successfully",
"screening_questions_added": false
},
"metadata": {
"action": "create_job",
"account_id": "your-account-id",
"credits_consumed": 2,
"timestamp": "2026-03-24T12:00:00Z"
}
}
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "Missing required fields: company_url, place, html_description"
},
"metadata": {
"action": "create_job",
"account_id": "your-account-id",
"credits_consumed": 0,
"timestamp": "2026-03-24T12:00:00Z"
}
}
{
"success": false,
"error": {
"code": "CHANNEL_ERROR",
"message": "Impossible de récupérer les informations de l'entreprise: "
},
"metadata": {
"action": "create_job",
"account_id": "your-account-id",
"credits_consumed": 2,
"timestamp": "2026-03-24T12:00:00Z"
}
}
Was this page helpful?