POST
/
v1
/
recruiter
/
create
curl --request POST \
  --url https://api.linkupapi.com/v1/recruiter/create \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <x-api-key>' \
  --data '{
  "login_token": "<string>",
  "company_url": "<string>",
  "title": "<string>",
  "place": "<string>",
  "html_description": "<string>",
  "employment_status": "<string>",
  "workplace": "<string>",
  "skills": [
    {}
  ],
  "screening_questions": [
    {}
  ],
  "auto_rejection_template": "<string>",
  "contact_email": "<string>",
  "country": "<string>"
}'
{
  "status": "success",
  "message": "Job posting created successfully",
  "data": {
    "job_posting_id": "4219038884",
    "screening_questions_added": true
  }
}

Create a complete job posting on LinkedIn with customizable fields, including job title, description, location, and screening questions. The job will be created in draft state.

This endpoint costs 5 credits per job posting.

Header Parameters

x-api-key
string
required

Your API key

Body Parameters

login_token
string
required

LinkedIn authentication cookie obtained from the login/verify process

company_url
string
required

URL of the LinkedIn company page (e.g., “https://www.linkedin.com/company/company-name/”)

title
string
required

Job title (e.g., “Senior Software Engineer”)

place
string
required

Job location (e.g., “Paris, France”)

html_description
string
required

Job description in HTML format. Supports basic HTML formatting (bold, lists, paragraphs)

employment_status
string
default:"FULL_TIME"

Employment type. Options: FULL_TIME, PART_TIME, CONTRACT, TEMPORARY, VOLUNTEER, INTERNSHIP

workplace
string
default:"1"

Workplace type. Options: “1” (on-site), “2” (remote), “3” (hybrid)

skills
array

List of skills required for the job (e.g., [“Python”, “Django”])

screening_questions
array

List of screening question objects. Each object in this array should contain the properties described below.

auto_rejection_template
string

Template message for automatic rejections

contact_email
string
default:""

Contact email for the job posting

country
string
default:"FR"

Country code for proxy selection. Available: (US, UK, FR)

Screening Question Object Properties

Each object in the screening_questions array should have the following properties:

auto_rejection_template
string

Template message for automatic rejections

contact_email
string
default:""

Contact email for the job posting

country
string
default:"FR"

Country code for proxy selection. Available: (US, UK, FR)

Response

status
string

Request status (success/error/partial_success)

message
string

Status message

data
object

Response data container (on success)

data.job_posting_id
string

LinkedIn job posting ID that can be used for other operations

data.screening_questions_added
boolean

Whether screening questions were successfully added

details
string

Additional error details (in case of error)

{
  "status": "success",
  "message": "Job posting created successfully",
  "data": {
    "job_posting_id": "4219038884",
    "screening_questions_added": true
  }
}
{
  "status": "error",
  "message": "Impossible de récupérer les informations de l'entreprise"
}
{
  "status": "partial_success",
  "message": "Offre créée mais erreur lors de l'ajout des questions: 400",
  "job_posting_id": "4219038884",
  "details": "Invalid question format"
}

Predefined Screening Question Types

You can use the following predefined question types in your screening_questions array:

Yes/No Questions

  • WORK_AUTHORIZATION: Verify if candidates are authorized to work
  • URGENT_HIRING: Indicate urgent hiring needs
  • REMOTE_WORK: Confirm if candidate can work remotely
  • HYBRID_WORK: Confirm if candidate can work in hybrid mode
  • ONSITE_WORK: Confirm if candidate can work on-site
  • DRUG_SCREENING: Verify willingness to undergo drug screening
  • DRIVERS_LICENSE: Verify if candidate has a driver’s license
  • BACKGROUND_CHECK: Verify willingness to undergo background checks
  • VISA_STATUS: Verify visa status

Numerical Questions

Education & Language

  • EDUCATION: Education level (requires parameterValue with education level)
  • LANGUAGE: Language proficiency (requires parameterValue with language name and optional languageLevel)

Location

  • LOCATION: Location preference (requires parameterValue)

Example - Creating a Job with Custom Questions

Here’s a complete example of creating a job with both custom and predefined questions:

{
  "login_token": "AQEDATQBr-0K3AA...",
  "company_url": "https://www.linkedin.com/company/acme-corporation/",
  "title": "Senior Software Developer",
  "place": "Paris, France",
  "html_description": "<p>We are seeking a <strong>talented developer</strong> to join our team.</p><ul><li>5+ years of experience with Python</li><li>Experience with cloud technologies</li><li>Strong problem-solving skills</li></ul>",
  "employment_status": "FULL_TIME",
  "workplace": "3",
  "contact_email": "[email protected]",
  "country": "FR",
  "skills": ["Python", "Django", "AWS"],
  "screening_questions": [
    {
      "type": "CUSTOM_QUESTION",
      "questionText": "Are you comfortable with at least weekly travel to client sites?",
      "format": "MULTIPLE_CHOICE",
      "required": True
    },
    {
      "type": "PROFESSIONAL_EXPERIENCE",
      "parameterValue": "Python development",
      "parameterDisplayText": "Python development",
      "required": True,
      "experienceYears": 3
    },
    {
      "type": "LANGUAGE",
      "parameterValue": "fr",
      "parameterDisplayText": "French",
      "languageLevel": "Professional"
    },
    {
      "type": "SKILL_COMPETENCE",
      "parameterValue": "Docker",
      "parameterDisplayText": "Docker",
      "favorableFloor": 2
    },
    {
      "type": "EDUCATION",
      "parameterValue": "BTS, DUT (ou diplôme de niveau Bac+2)",
      "parameterDisplayText": "BTS, DUT (ou diplôme de niveau Bac+2)",
      "required": true
    },
    {
        "type": "DRUG_SCREENING",
        "required": True
    },
    {
        "type": "WORK_AUTHORIZATION",
        "required": True
    },
    {
        "type": "URGENT_HIRING",
        "required": True
    },
  ],
  "auto_rejection_template": "Thank you for your interest in our position. After careful consideration, we've decided to pursue other candidates whose qualifications better match our current needs."
}