curl --request POST \
--url https://api.stardex.ai/v1/jobs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"company_name": "<string>",
"company_domain": "<string>",
"company_linkedin_url": "<string>",
"pipeline_template_name": "<string>",
"team_members": [
{
"team_member_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"team_member_email": "<string>",
"role_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role_name": "<string>"
}
],
"job_description": "<string>",
"location": "<string>",
"primary_url": "<string>",
"currency_code": "<string>",
"job_function": "<string>",
"open_date": "<string>",
"end_date": "<string>",
"salary_min": 1,
"salary_max": 1,
"salary_range": "<string>",
"salary_details": "<string>",
"fee": 1,
"billing_contact_name": "<string>",
"billing_contact_email": "jsmith@example.com",
"firm_commission_percent": 50,
"deal_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"client_contact_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"job_status_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.stardex.ai/v1/jobs"
payload = {
"title": "<string>",
"company_name": "<string>",
"company_domain": "<string>",
"company_linkedin_url": "<string>",
"pipeline_template_name": "<string>",
"team_members": [
{
"team_member_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"team_member_email": "<string>",
"role_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role_name": "<string>"
}
],
"job_description": "<string>",
"location": "<string>",
"primary_url": "<string>",
"currency_code": "<string>",
"job_function": "<string>",
"open_date": "<string>",
"end_date": "<string>",
"salary_min": 1,
"salary_max": 1,
"salary_range": "<string>",
"salary_details": "<string>",
"fee": 1,
"billing_contact_name": "<string>",
"billing_contact_email": "jsmith@example.com",
"firm_commission_percent": 50,
"deal_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"client_contact_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"job_status_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
company_name: '<string>',
company_domain: '<string>',
company_linkedin_url: '<string>',
pipeline_template_name: '<string>',
team_members: [
{
team_member_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
team_member_email: '<string>',
role_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
role_name: '<string>'
}
],
job_description: '<string>',
location: '<string>',
primary_url: '<string>',
currency_code: '<string>',
job_function: '<string>',
open_date: '<string>',
end_date: '<string>',
salary_min: 1,
salary_max: 1,
salary_range: '<string>',
salary_details: '<string>',
fee: 1,
billing_contact_name: '<string>',
billing_contact_email: 'jsmith@example.com',
firm_commission_percent: 50,
deal_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
client_contact_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
job_status_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.stardex.ai/v1/jobs', 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.stardex.ai/v1/jobs",
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([
'title' => '<string>',
'company_name' => '<string>',
'company_domain' => '<string>',
'company_linkedin_url' => '<string>',
'pipeline_template_name' => '<string>',
'team_members' => [
[
'team_member_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'team_member_email' => '<string>',
'role_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'role_name' => '<string>'
]
],
'job_description' => '<string>',
'location' => '<string>',
'primary_url' => '<string>',
'currency_code' => '<string>',
'job_function' => '<string>',
'open_date' => '<string>',
'end_date' => '<string>',
'salary_min' => 1,
'salary_max' => 1,
'salary_range' => '<string>',
'salary_details' => '<string>',
'fee' => 1,
'billing_contact_name' => '<string>',
'billing_contact_email' => 'jsmith@example.com',
'firm_commission_percent' => 50,
'deal_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'client_contact_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'job_status_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.stardex.ai/v1/jobs"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"company_name\": \"<string>\",\n \"company_domain\": \"<string>\",\n \"company_linkedin_url\": \"<string>\",\n \"pipeline_template_name\": \"<string>\",\n \"team_members\": [\n {\n \"team_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"team_member_email\": \"<string>\",\n \"role_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"role_name\": \"<string>\"\n }\n ],\n \"job_description\": \"<string>\",\n \"location\": \"<string>\",\n \"primary_url\": \"<string>\",\n \"currency_code\": \"<string>\",\n \"job_function\": \"<string>\",\n \"open_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"salary_min\": 1,\n \"salary_max\": 1,\n \"salary_range\": \"<string>\",\n \"salary_details\": \"<string>\",\n \"fee\": 1,\n \"billing_contact_name\": \"<string>\",\n \"billing_contact_email\": \"jsmith@example.com\",\n \"firm_commission_percent\": 50,\n \"deal_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"client_contact_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"job_status_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.stardex.ai/v1/jobs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"company_name\": \"<string>\",\n \"company_domain\": \"<string>\",\n \"company_linkedin_url\": \"<string>\",\n \"pipeline_template_name\": \"<string>\",\n \"team_members\": [\n {\n \"team_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"team_member_email\": \"<string>\",\n \"role_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"role_name\": \"<string>\"\n }\n ],\n \"job_description\": \"<string>\",\n \"location\": \"<string>\",\n \"primary_url\": \"<string>\",\n \"currency_code\": \"<string>\",\n \"job_function\": \"<string>\",\n \"open_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"salary_min\": 1,\n \"salary_max\": 1,\n \"salary_range\": \"<string>\",\n \"salary_details\": \"<string>\",\n \"fee\": 1,\n \"billing_contact_name\": \"<string>\",\n \"billing_contact_email\": \"jsmith@example.com\",\n \"firm_commission_percent\": 50,\n \"deal_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"client_contact_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"job_status_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stardex.ai/v1/jobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\",\n \"company_name\": \"<string>\",\n \"company_domain\": \"<string>\",\n \"company_linkedin_url\": \"<string>\",\n \"pipeline_template_name\": \"<string>\",\n \"team_members\": [\n {\n \"team_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"team_member_email\": \"<string>\",\n \"role_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"role_name\": \"<string>\"\n }\n ],\n \"job_description\": \"<string>\",\n \"location\": \"<string>\",\n \"primary_url\": \"<string>\",\n \"currency_code\": \"<string>\",\n \"job_function\": \"<string>\",\n \"open_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"salary_min\": 1,\n \"salary_max\": 1,\n \"salary_range\": \"<string>\",\n \"salary_details\": \"<string>\",\n \"fee\": 1,\n \"billing_contact_name\": \"<string>\",\n \"billing_contact_email\": \"jsmith@example.com\",\n \"firm_commission_percent\": 50,\n \"deal_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"client_contact_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"job_status_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Senior Software Engineer",
"created_at": "2024-01-10T09:00:00Z",
"is_archived": false,
"client_company_name": "StartupXYZ",
"client_company_id": "456e7890-e12b-34d5-a678-901234567890",
"client_company_domain": "startupxyz.com",
"client_company_linkedin_url": "https://www.linkedin.com/company/startupxyz",
"job_status_name": "Active",
"job_status_id": "789e0123-e45f-67a8-b901-234567890123",
"job_status_type": "in_progress",
"candidate_count": 12,
"location": "San Francisco, CA",
"primary_url": "https://startupxyz.com/careers/senior-swe",
"job_function": "Engineering",
"open_date": "2024-01-01",
"end_date": null,
"currency_code": "USD",
"salary_range": "[150000,200001)",
"salary_min": 150000,
"salary_max": 200000,
"salary_details": "+ 0.5% equity, signing bonus negotiable",
"billing_contact_name": "Sarah Chen",
"billing_contact_email": "sarah.chen@startupxyz.com",
"fee": 25000,
"description": "We are looking for a Senior Software Engineer to join our platform team...",
"team_members": [
{
"team_member_id": "234e5678-e90a-12b3-c456-789012345678",
"email": "jane@company.com",
"first_name": "Jane",
"last_name": "Smith",
"role_id": "345e6789-e01b-23c4-d567-890123456789",
"role_name": "Team Lead"
},
{
"team_member_id": "345e6789-f01b-23c4-d567-890123456789",
"email": "bob@company.com",
"first_name": "Bob",
"last_name": "Johnson",
"role_id": "456e7890-f12b-34d5-e678-901234567890",
"role_name": "Executive Sponsor"
}
],
"client_contacts": [
{
"id": "c1d2e3f4-a5b6-7890-cdef-123456789012",
"client_contact_id": "d2e3f4a5-b6c7-8901-defa-234567890123",
"person_id": "e3f4a5b6-c7d8-9012-efab-345678901234",
"name": "Maria Gonzalez"
}
],
"linked_deals": [
{
"deal_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"deal_job_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"name": "StartupXYZ — Senior SWE retained search",
"amount": 35000,
"currency_code": "USD",
"deal_status_id": "7201a0b8-e63c-4d8f-899d-78cdd62b5c38",
"deal_status_name": "Qualified",
"deal_status_color": "#10B981"
}
],
"fees": {
"retainer": {
"id": "e5f6a7b8-c9d0-1234-ef01-345678901234",
"fee_type": "percentage",
"fee_base": "first_year_salary",
"fee_percentage": 25,
"projected_fee": 50000,
"estimated_compensation": 200000,
"installment_count": 3,
"final_payment_type": "on_placement",
"currency_code": "USD"
},
"fee_events": [
{
"id": "f6a7b8c9-d0e1-2345-f012-456789012345",
"type": "retainer",
"label": "Engagement fee",
"amount": 16666.67,
"total_fee": 50000,
"currency_code": "USD",
"fee_type": "percentage",
"fee_percentage": 25,
"compensation": 200000,
"firm_commission_percent": 100,
"is_placeholder": false,
"sequence": 1,
"start_date": "2024-01-05",
"expected_date": "2024-01-10",
"actual_payment_date": "2024-01-11",
"candidate_id": null,
"offer_id": null,
"retainer_id": "e5f6a7b8-c9d0-1234-ef01-345678901234",
"fee_status_id": "a7b8c9d0-e1f2-3456-0123-567890123456",
"fee_status_name": "Paid",
"fee_status_color": "#10B981",
"fee_status_type": "paid"
},
{
"id": "b8c9d0e1-f2a3-4567-1234-678901234567",
"type": "placement",
"label": "Placement — Jane Smith",
"amount": 50000,
"total_fee": 50000,
"currency_code": "USD",
"fee_type": "percentage",
"fee_percentage": 25,
"compensation": 200000,
"firm_commission_percent": 100,
"is_placeholder": false,
"sequence": null,
"start_date": null,
"expected_date": "2024-03-15",
"actual_payment_date": null,
"candidate_id": "234e5678-e90a-12b3-c456-789012345678",
"offer_id": "c9d0e1f2-a3b4-5678-2345-789012345678",
"retainer_id": null,
"fee_status_id": "d0e1f2a3-b4c5-6789-3456-890123456789",
"fee_status_name": "Invoiced",
"fee_status_color": "#3B82F6",
"fee_status_type": "invoiced"
}
],
"total_placement_fee": 50000
},
"custom_fields": [
{
"attribute_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"attribute_name": "Priority",
"data_type": "single-select",
"value": null,
"tag": {
"id": "d4e5f6a7-b8c9-0123-defg-234567890123",
"name": "High"
},
"team_member": null,
"company": null
},
{
"attribute_id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"attribute_name": "Sponsor",
"data_type": "multi-company",
"value": null,
"tag": null,
"team_member": null,
"company": {
"id": "456e7890-e12b-34d5-a678-901234567890",
"name": "Acme Corp"
}
}
],
"pipeline_stages": [
{
"id": "345e6789-e01b-23c4-d567-890123456789",
"name": "Application Review",
"stage_order": 1,
"is_rejection_stage": false,
"is_interviewing_stage": false,
"is_offer_stage": false,
"is_placement_stage": false
},
{
"id": "456e7890-f12b-34d5-e678-901234567890",
"name": "Phone Screen",
"stage_order": 2,
"is_rejection_stage": false,
"is_interviewing_stage": true,
"is_offer_stage": false,
"is_placement_stage": false
},
{
"id": "567e8901-e23c-45d6-e789-012345678901",
"name": "Technical Interview",
"stage_order": 3,
"is_rejection_stage": false,
"is_interviewing_stage": true,
"is_offer_stage": false,
"is_placement_stage": false
},
{
"id": "678e9012-f34d-56e7-f890-123456789012",
"name": "Offer",
"stage_order": 4,
"is_rejection_stage": false,
"is_interviewing_stage": false,
"is_offer_stage": true,
"is_placement_stage": false
},
{
"id": "789e0123-a45b-67c8-d901-234567890123",
"name": "Rejected",
"stage_order": 5,
"is_rejection_stage": true,
"is_interviewing_stage": false,
"is_offer_stage": false,
"is_placement_stage": false
}
]
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}Create job
Create a new job with company association, pipeline template, and team member assignments. The company will be matched or created automatically based on the identifiers provided. Optionally assign job_status_id from GET /v1/jobs/statuses (defaults to the team default status). Optionally link existing deals by passing deal_ids — each deal must belong to the same team (resolve IDs via POST /v1/deals/search). Optionally link existing client contacts by passing client_contact_ids — each contact must belong to the same team (resolve IDs via POST /v1/client-contacts). Background AI tasks (candidate search, criteria generation) are triggered after creation. Changes made through the API only start automations that are set to run on API and MCP changes (runs_on_api_changes), so one call cannot start runs across hundreds of records by accident.
curl --request POST \
--url https://api.stardex.ai/v1/jobs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"company_name": "<string>",
"company_domain": "<string>",
"company_linkedin_url": "<string>",
"pipeline_template_name": "<string>",
"team_members": [
{
"team_member_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"team_member_email": "<string>",
"role_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role_name": "<string>"
}
],
"job_description": "<string>",
"location": "<string>",
"primary_url": "<string>",
"currency_code": "<string>",
"job_function": "<string>",
"open_date": "<string>",
"end_date": "<string>",
"salary_min": 1,
"salary_max": 1,
"salary_range": "<string>",
"salary_details": "<string>",
"fee": 1,
"billing_contact_name": "<string>",
"billing_contact_email": "jsmith@example.com",
"firm_commission_percent": 50,
"deal_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"client_contact_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"job_status_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.stardex.ai/v1/jobs"
payload = {
"title": "<string>",
"company_name": "<string>",
"company_domain": "<string>",
"company_linkedin_url": "<string>",
"pipeline_template_name": "<string>",
"team_members": [
{
"team_member_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"team_member_email": "<string>",
"role_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role_name": "<string>"
}
],
"job_description": "<string>",
"location": "<string>",
"primary_url": "<string>",
"currency_code": "<string>",
"job_function": "<string>",
"open_date": "<string>",
"end_date": "<string>",
"salary_min": 1,
"salary_max": 1,
"salary_range": "<string>",
"salary_details": "<string>",
"fee": 1,
"billing_contact_name": "<string>",
"billing_contact_email": "jsmith@example.com",
"firm_commission_percent": 50,
"deal_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"client_contact_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"job_status_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
company_name: '<string>',
company_domain: '<string>',
company_linkedin_url: '<string>',
pipeline_template_name: '<string>',
team_members: [
{
team_member_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
team_member_email: '<string>',
role_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
role_name: '<string>'
}
],
job_description: '<string>',
location: '<string>',
primary_url: '<string>',
currency_code: '<string>',
job_function: '<string>',
open_date: '<string>',
end_date: '<string>',
salary_min: 1,
salary_max: 1,
salary_range: '<string>',
salary_details: '<string>',
fee: 1,
billing_contact_name: '<string>',
billing_contact_email: 'jsmith@example.com',
firm_commission_percent: 50,
deal_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
client_contact_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
job_status_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.stardex.ai/v1/jobs', 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.stardex.ai/v1/jobs",
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([
'title' => '<string>',
'company_name' => '<string>',
'company_domain' => '<string>',
'company_linkedin_url' => '<string>',
'pipeline_template_name' => '<string>',
'team_members' => [
[
'team_member_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'team_member_email' => '<string>',
'role_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'role_name' => '<string>'
]
],
'job_description' => '<string>',
'location' => '<string>',
'primary_url' => '<string>',
'currency_code' => '<string>',
'job_function' => '<string>',
'open_date' => '<string>',
'end_date' => '<string>',
'salary_min' => 1,
'salary_max' => 1,
'salary_range' => '<string>',
'salary_details' => '<string>',
'fee' => 1,
'billing_contact_name' => '<string>',
'billing_contact_email' => 'jsmith@example.com',
'firm_commission_percent' => 50,
'deal_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'client_contact_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'job_status_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.stardex.ai/v1/jobs"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"company_name\": \"<string>\",\n \"company_domain\": \"<string>\",\n \"company_linkedin_url\": \"<string>\",\n \"pipeline_template_name\": \"<string>\",\n \"team_members\": [\n {\n \"team_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"team_member_email\": \"<string>\",\n \"role_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"role_name\": \"<string>\"\n }\n ],\n \"job_description\": \"<string>\",\n \"location\": \"<string>\",\n \"primary_url\": \"<string>\",\n \"currency_code\": \"<string>\",\n \"job_function\": \"<string>\",\n \"open_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"salary_min\": 1,\n \"salary_max\": 1,\n \"salary_range\": \"<string>\",\n \"salary_details\": \"<string>\",\n \"fee\": 1,\n \"billing_contact_name\": \"<string>\",\n \"billing_contact_email\": \"jsmith@example.com\",\n \"firm_commission_percent\": 50,\n \"deal_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"client_contact_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"job_status_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.stardex.ai/v1/jobs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"company_name\": \"<string>\",\n \"company_domain\": \"<string>\",\n \"company_linkedin_url\": \"<string>\",\n \"pipeline_template_name\": \"<string>\",\n \"team_members\": [\n {\n \"team_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"team_member_email\": \"<string>\",\n \"role_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"role_name\": \"<string>\"\n }\n ],\n \"job_description\": \"<string>\",\n \"location\": \"<string>\",\n \"primary_url\": \"<string>\",\n \"currency_code\": \"<string>\",\n \"job_function\": \"<string>\",\n \"open_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"salary_min\": 1,\n \"salary_max\": 1,\n \"salary_range\": \"<string>\",\n \"salary_details\": \"<string>\",\n \"fee\": 1,\n \"billing_contact_name\": \"<string>\",\n \"billing_contact_email\": \"jsmith@example.com\",\n \"firm_commission_percent\": 50,\n \"deal_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"client_contact_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"job_status_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stardex.ai/v1/jobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\",\n \"company_name\": \"<string>\",\n \"company_domain\": \"<string>\",\n \"company_linkedin_url\": \"<string>\",\n \"pipeline_template_name\": \"<string>\",\n \"team_members\": [\n {\n \"team_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"team_member_email\": \"<string>\",\n \"role_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"role_name\": \"<string>\"\n }\n ],\n \"job_description\": \"<string>\",\n \"location\": \"<string>\",\n \"primary_url\": \"<string>\",\n \"currency_code\": \"<string>\",\n \"job_function\": \"<string>\",\n \"open_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"salary_min\": 1,\n \"salary_max\": 1,\n \"salary_range\": \"<string>\",\n \"salary_details\": \"<string>\",\n \"fee\": 1,\n \"billing_contact_name\": \"<string>\",\n \"billing_contact_email\": \"jsmith@example.com\",\n \"firm_commission_percent\": 50,\n \"deal_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"client_contact_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"job_status_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Senior Software Engineer",
"created_at": "2024-01-10T09:00:00Z",
"is_archived": false,
"client_company_name": "StartupXYZ",
"client_company_id": "456e7890-e12b-34d5-a678-901234567890",
"client_company_domain": "startupxyz.com",
"client_company_linkedin_url": "https://www.linkedin.com/company/startupxyz",
"job_status_name": "Active",
"job_status_id": "789e0123-e45f-67a8-b901-234567890123",
"job_status_type": "in_progress",
"candidate_count": 12,
"location": "San Francisco, CA",
"primary_url": "https://startupxyz.com/careers/senior-swe",
"job_function": "Engineering",
"open_date": "2024-01-01",
"end_date": null,
"currency_code": "USD",
"salary_range": "[150000,200001)",
"salary_min": 150000,
"salary_max": 200000,
"salary_details": "+ 0.5% equity, signing bonus negotiable",
"billing_contact_name": "Sarah Chen",
"billing_contact_email": "sarah.chen@startupxyz.com",
"fee": 25000,
"description": "We are looking for a Senior Software Engineer to join our platform team...",
"team_members": [
{
"team_member_id": "234e5678-e90a-12b3-c456-789012345678",
"email": "jane@company.com",
"first_name": "Jane",
"last_name": "Smith",
"role_id": "345e6789-e01b-23c4-d567-890123456789",
"role_name": "Team Lead"
},
{
"team_member_id": "345e6789-f01b-23c4-d567-890123456789",
"email": "bob@company.com",
"first_name": "Bob",
"last_name": "Johnson",
"role_id": "456e7890-f12b-34d5-e678-901234567890",
"role_name": "Executive Sponsor"
}
],
"client_contacts": [
{
"id": "c1d2e3f4-a5b6-7890-cdef-123456789012",
"client_contact_id": "d2e3f4a5-b6c7-8901-defa-234567890123",
"person_id": "e3f4a5b6-c7d8-9012-efab-345678901234",
"name": "Maria Gonzalez"
}
],
"linked_deals": [
{
"deal_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"deal_job_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"name": "StartupXYZ — Senior SWE retained search",
"amount": 35000,
"currency_code": "USD",
"deal_status_id": "7201a0b8-e63c-4d8f-899d-78cdd62b5c38",
"deal_status_name": "Qualified",
"deal_status_color": "#10B981"
}
],
"fees": {
"retainer": {
"id": "e5f6a7b8-c9d0-1234-ef01-345678901234",
"fee_type": "percentage",
"fee_base": "first_year_salary",
"fee_percentage": 25,
"projected_fee": 50000,
"estimated_compensation": 200000,
"installment_count": 3,
"final_payment_type": "on_placement",
"currency_code": "USD"
},
"fee_events": [
{
"id": "f6a7b8c9-d0e1-2345-f012-456789012345",
"type": "retainer",
"label": "Engagement fee",
"amount": 16666.67,
"total_fee": 50000,
"currency_code": "USD",
"fee_type": "percentage",
"fee_percentage": 25,
"compensation": 200000,
"firm_commission_percent": 100,
"is_placeholder": false,
"sequence": 1,
"start_date": "2024-01-05",
"expected_date": "2024-01-10",
"actual_payment_date": "2024-01-11",
"candidate_id": null,
"offer_id": null,
"retainer_id": "e5f6a7b8-c9d0-1234-ef01-345678901234",
"fee_status_id": "a7b8c9d0-e1f2-3456-0123-567890123456",
"fee_status_name": "Paid",
"fee_status_color": "#10B981",
"fee_status_type": "paid"
},
{
"id": "b8c9d0e1-f2a3-4567-1234-678901234567",
"type": "placement",
"label": "Placement — Jane Smith",
"amount": 50000,
"total_fee": 50000,
"currency_code": "USD",
"fee_type": "percentage",
"fee_percentage": 25,
"compensation": 200000,
"firm_commission_percent": 100,
"is_placeholder": false,
"sequence": null,
"start_date": null,
"expected_date": "2024-03-15",
"actual_payment_date": null,
"candidate_id": "234e5678-e90a-12b3-c456-789012345678",
"offer_id": "c9d0e1f2-a3b4-5678-2345-789012345678",
"retainer_id": null,
"fee_status_id": "d0e1f2a3-b4c5-6789-3456-890123456789",
"fee_status_name": "Invoiced",
"fee_status_color": "#3B82F6",
"fee_status_type": "invoiced"
}
],
"total_placement_fee": 50000
},
"custom_fields": [
{
"attribute_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"attribute_name": "Priority",
"data_type": "single-select",
"value": null,
"tag": {
"id": "d4e5f6a7-b8c9-0123-defg-234567890123",
"name": "High"
},
"team_member": null,
"company": null
},
{
"attribute_id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"attribute_name": "Sponsor",
"data_type": "multi-company",
"value": null,
"tag": null,
"team_member": null,
"company": {
"id": "456e7890-e12b-34d5-a678-901234567890",
"name": "Acme Corp"
}
}
],
"pipeline_stages": [
{
"id": "345e6789-e01b-23c4-d567-890123456789",
"name": "Application Review",
"stage_order": 1,
"is_rejection_stage": false,
"is_interviewing_stage": false,
"is_offer_stage": false,
"is_placement_stage": false
},
{
"id": "456e7890-f12b-34d5-e678-901234567890",
"name": "Phone Screen",
"stage_order": 2,
"is_rejection_stage": false,
"is_interviewing_stage": true,
"is_offer_stage": false,
"is_placement_stage": false
},
{
"id": "567e8901-e23c-45d6-e789-012345678901",
"name": "Technical Interview",
"stage_order": 3,
"is_rejection_stage": false,
"is_interviewing_stage": true,
"is_offer_stage": false,
"is_placement_stage": false
},
{
"id": "678e9012-f34d-56e7-f890-123456789012",
"name": "Offer",
"stage_order": 4,
"is_rejection_stage": false,
"is_interviewing_stage": false,
"is_offer_stage": true,
"is_placement_stage": false
},
{
"id": "789e0123-a45b-67c8-d901-234567890123",
"name": "Rejected",
"stage_order": 5,
"is_rejection_stage": true,
"is_interviewing_stage": false,
"is_offer_stage": false,
"is_placement_stage": false
}
]
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}Authorizations
Authenticate with a Bearer token: API key, OAuth token, or session token.
Body
Job title (required). E.g. "Senior Software Engineer".
1Client company name. At least one of company_name, company_domain, or company_linkedin_url required.
Client company website domain (e.g. "acme.com"). Used for matching or creating the company.
Client company LinkedIn URL. Used for matching or creating the company.
Pipeline template name to use. Defaults to "Default Template" if omitted.
Team members to assign with their roles.
Show child attributes
Show child attributes
Plain-text job description. Returned as description in job detail, list, and search responses.
Job location (e.g. "San Francisco, CA").
Primary job posting URL.
ISO 4217 currency code (e.g. "USD", "EUR", "GBP").
^[A-Z]{3}$Department or function (e.g. "Engineering", "Marketing").
Job opening date (YYYY-MM-DD).
^\d{4}-\d{2}-\d{2}$Target close date (YYYY-MM-DD).
^\d{4}-\d{2}-\d{2}$Minimum annual salary.
x >= 0Maximum annual salary.
x >= 0Salary range as a single number ("120000") or a dash-separated range ("80000-120000"). Parsed into the same structured range as salary_min/salary_max. Cannot be combined with salary_min or salary_max in the same request.
50Free-text salary details that complement the structured range (e.g. "+ 0.5% equity, signing bonus negotiable"). Max 500 characters.
500Placement fee amount.
x >= 0Name of the client-side billing contact for this job (max 255 characters).
255Email of the client-side billing contact for this job. Must be a valid email.
255Firm commission percentage of the placement fee (0–100).
0 <= x <= 100Deal UUIDs to link to this job on creation via the deal_jobs join table. Each deal must belong to the same team; otherwise the request is rejected with a validation error. Resolve IDs via POST /v1/deals/search. Max 50 deals per request.
50Client contact UUIDs to assign to this job as client contacts. Each contact must already exist in your workspace, otherwise the request is rejected. Create contacts with POST /v1/client-contacts. Max 50 per request.
50Job status UUID to assign on creation. Get valid IDs from GET /v1/jobs/statuses. Defaults to the team default status when omitted.
Was this page helpful?