Skip to content

Get a single published job

GET
/api/public/v1/jobs/{publicId}
curl --request GET \
--url https://api.atlasthq.com/api/public/v1/jobs/abc123def456 \
--header 'Authorization: Bearer <token>'

Returns the full public detail for a published job identified by its publicId. Returns 404 for unknown, unpublished, or cross-org publicId values (no existence leak).

publicId
required
string
Example
abc123def456

The public identifier of the job

Full public job detail

Media type application/json
object
id
required

Job internal ID

string
publicId
required

URL-friendly public job identifier

string
jobTitle
required

Job title

string
location
required

One-line summary of locations, derived by the server

string
nullable
locations
required

The places this job is open in, in display order, each with its own work arrangement. Empty when the job has no locations. location is the server-derived one-line summary of this list.

Array<object>
object
id
required

Job location row id

string
countryCode
required

ISO 3166-1 alpha-2 country code

string
countryName
required

Country name (English)

string
cityId
required

GeoNames city id; null for a country-wide location

number
nullable
cityName
required

City name; null for a country-wide location

string
nullable
workArrangement
required

How the role is worked in this location

string
Allowed values: ON_SITE HYBRID REMOTE
sortOrder
required

Position in the job’s location list, starting at 0

number
department
required

Department

string
nullable
type
required

Employment type

string
nullable
seniorityLevel
required

Seniority level

string
nullable
roleOverview
required

Role overview

string
nullable
keyResponsibilities
required

Key responsibilities

string
nullable
requiredSkills
required

Required skills

string
nullable
preferredQualifications
required

Preferred qualifications

string
nullable
minSalary
required

Minimum salary

number
nullable
maxSalary
required

Maximum salary

number
nullable
currency
required

Salary currency code

string
nullable
compensationType
required

How the role states its compensation. UNPAID covers unpaid internships and volunteer roles.

string
Allowed values: PAID UNPAID UNDISCLOSED
compensationNote
required

Recruiter’s explanation of why the role is unpaid. Present when compensationType is UNPAID.

string
nullable
benefits
required

Benefits description

string
nullable
yearsExperience
required

Years of experience required

number
nullable
primaryLanguage
required

Primary language

string
nullable
educationLevel
required

Education level

string
nullable
workAuthorization
required

Work authorization requirements

string
nullable
knockoutQuestions
required

Knockout screening questions

Array<object>
nullable
object
id
required
string
question
required
string
required
required
boolean
type
required
string
jobUrl
required

Public URL for the job detail page (attached by API layer)

string
nullable
applyUrl
required

Public URL for the job application form (attached by API layer)

string
nullable
Example
{
"id": "job-550e8400-e29b-41d4-a716-446655440000",
"publicId": "abc123def456",
"jobTitle": "Senior Software Engineer",
"location": "Barcelona, Spain (Hybrid) · Spain (Remote)",
"locations": [
{
"id": "jlc-550e8400-e29b-41d4-a716-446655440000",
"countryCode": "ES",
"countryName": "Spain",
"cityId": 3128760,
"cityName": "Barcelona",
"workArrangement": "HYBRID",
"sortOrder": 0
},
{
"id": "jlc-6fa459ea-ee8a-3ca4-894e-db77e160355e",
"countryCode": "ES",
"countryName": "Spain",
"cityId": null,
"cityName": null,
"workArrangement": "REMOTE",
"sortOrder": 1
}
],
"department": "Engineering",
"type": "Full-time",
"seniorityLevel": "Senior",
"roleOverview": "We are looking for...",
"minSalary": 80000,
"maxSalary": 120000,
"currency": "USD",
"compensationType": "PAID",
"compensationNote": "Volunteer role with travel and lunch expenses reimbursed.",
"yearsExperience": 5,
"primaryLanguage": "English",
"educationLevel": "Bachelor's degree",
"knockoutQuestions": [
{
"id": "kq-abc123",
"question": "Do you have a valid EU work permit?",
"required": true,
"type": "boolean"
}
],
"jobUrl": "https://acme.careers.atlasthq.com/jobs/abc123def456",
"applyUrl": "https://acme.careers.atlasthq.com/jobs/abc123def456/apply"
}

Missing or invalid API key

Organisation plan does not include the public API

Job not found, unpublished, or belongs to another organisation

Rate limit exceeded (60 req/min per key)