POST /api/recruitee/jobs
Price: 1 credit
Get one published job posting from a company's Recruitee career board by board handle and offer id, offer slug or offer URL: title, department, employment type, workplace type, location and structured locations, HTML description and requirements, salary range, weekly hours, tags, application form settings, screening questions with their answer options, per-locale translations, publication dates and the hosted and apply URLs.
A posting is addressed by the pair (company, job_id) — the same id under a different board is a 412, so never carry an id across boards. job_id takes the numeric id, the URL slug, or the full offer URL, and the company is then read from that URL. This returns exactly what recruitee/jobs/search already returns per row, so use it when only the id is known, not to enrich a row from the search. Every offer this surface has been observed to serve carries status 'published' — 230 of 230 across 9 boards — and status ships on the response, so read it rather than inferring it from the call succeeding.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)company string required — Company board. Accepts the Recruitee handle, a board host, or a full board or offer URL (examples: "channable", "conclusion.recruitee.com", "https://jobs.channable.com/"; minLength: 1)job_id string required — Offer identifier. Accepts the numeric offer id, the offer slug, or a full offer URL (examples: "2728481", "apar-specialist-join-our-finance-team", "https://jobs.channable.com/o/apar-specialist-join-our-finance-team"; minLength: 1)@type string (default: "RecruiteeJob")id integer requiredcompany string requiredguid string nullablealias string nullablestatus string nullableposition integer nullablecompany_name string nullabledepartment string nullablecategory_code string nullableemployment_type string nullableexperience_code string nullableeducation_code string nullableworkplace_type string nullableremote boolean nullablehybrid boolean nullableon_site boolean nullablelocation string nullablecity string nullablestate_name string nullablestate_code string nullablecountry string nullablecountry_code string nullablepostal_code string nullablelocations array (default: [])@type string (default: "RecruiteeLocation")id integer nullablename string nullablecity string nullablestate string nullablestate_code string nullablecountry string nullablecountry_code string nullablepostal_code string nullablestreet string nullablenote string nullabletranslations array (default: [])@type string (default: "RecruiteeLocationTranslation")locale string requiredname string nullablecity string nullablepostal_code string nullablestreet string nullablenote string nullabledescription string nullablerequirements string nullablehighlight string nullabletags array (default: [])salary_range object nullable@type string (default: "RecruiteeSalaryRange")currency string nullableinterval string nullablemin number nullablemax number nullablemin_hours integer nullablemax_hours integer nullablemin_hours_per_week number nullablemax_hours_per_week number nullablecreated_at integer nullablepublished_at integer nullableupdated_at integer nullableclose_at integer nullablehosted_url string nullableapply_url string nullablemailbox_email string nullablecover_image string nullablesharing_title string nullablesharing_description string nullablesharing_image string nullablelocations_question string nullablelocations_question_type string nullablelocations_question_required boolean nullablelocation_question_visible boolean nullableapply_form array (default: [])@type string (default: "RecruiteeApplyFormField")name string requiredmode string nullableopen_questions array (default: [])@type string (default: "RecruiteeOpenQuestion")id integer nullableposition integer nullablebody string nullablekind string nullablerequired boolean nullableconstraints object nullable@type string (default: "RecruiteeQuestionConstraints")currency string nullablelength integer nullableoptions array (default: [])@type string (default: "RecruiteeQuestionOption")id integer nullableposition integer nullablebody string nullabletranslations array (default: [])translations array (default: [])@type string (default: "RecruiteeTextTranslation")locale string requiredbody string nullabletranslations array (default: [])@type string (default: "RecruiteeOfferTranslation")locale string requireddescription string nullablerequirements string nullablehighlight string nullablesharing_title string nullablesharing_description string nullablesharing_image string nullablelocations_question string nullable422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — Company board not found, the offer is unknown or no longer published, or the host given does not serve a Recruitee board Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.