hyreflow
Integrations

Recruitee

Post a job (or talent pool) to Recruitee: title, description, requirements, locations, department, work model and application-form location picker. BYOK-only, production writes.

Recruitee calls a job an offer, and the same endpoint creates either a real job or a talent pool. It is a write target — Hyreflow reads only the department list, to verify the token.

Free (BYOK). Recruitee writes cost no credits. Connect your own Recruitee token and your company id or subdomain from the dashboard Integrations page. A Recruitee token is personal and per-company: it carries exactly the permissions of whoever minted it, acts in their name, and a token from one company isn't valid in another. list_departments is the free connection check: it verifies the key and returns the departments a department_id comes from.

Capability

ToolDoesCost
create_jobCreate an offer — a job, or a talent pool via kindFree
set_job_statePublish the offer, or move it to draft/closed/archivedFree

create_job parameters

FieldTypeRequiredNotes
titlestringyesThe offer title.
descriptionstringyesThe offer description.
location_idsarray of integeryesRecruitee location ids — required even for a remote role, because some job boards demand the detail.
requirementsstringyes for a jobOptional when kind is talent_pool.
kindstringnojob (default) or talent_pool.
department_idstringnoAssigns the offer to an existing department.
on_sitebooleanone of threeShow the location as on-site.
hybridbooleannoShow the location as hybrid.
remotebooleannoShow the location as remote. Defaults to false.
visibility_optionsarray of stringnoDefaults to ["locations_question"], adding a location picker to the application form.
locations_questionstringnoThe picker's question text. Defaults to "What is your preferred location?".
locations_question_typestringnosingle_choice (default) or multiple_choice.
locations_question_requiredbooleannoForce a preferred location to be picked.

At least one of on_site, hybrid and remote must be true — none of them defaults to true, so an offer that names none is refused before it reaches Recruitee.

hyreflow tools execute recruitee_create_job --payload '{
  "title": "Senior Platform Engineer",
  "location_ids": [12345],
  "description": "<p>Own the deployment platform.</p>",
  "requirements": "<p>Kubernetes, Terraform, five years of platform work.</p>",
  "kind": "job",
  "hybrid": true
}'

The response is an offer object; the id is offer.id, and offer.slug is what appears in the careers URL.

location_ids are numeric Recruitee location ids. Hyreflow does not expose the locations endpoint, so ask the user for them, or have them read the ids out of Recruitee's Locations settings. There is no way to pass a location as a string on create — the derived location text on the response is read-only.

What creating an offer does not do

Recruitee's ATS API accepts none of salary, employment type, category, experience, education, hours, pipeline template, open questions, followers, hiring managers, or status when creating an offer — those exist only as read-only fields on the response. Whether a fresh offer lands as draft or published is not part of Recruitee's documented contract either.

set_job_state parameters

A created offer is a draft — this is the call that takes it live.

FieldTypeRequiredNotes
offer_idintegeryesThe offer to move.
statestringnopublished (default), draft, closed or archived.
hyreflow tools execute recruitee_set_job_state --payload '{"offer_id": 567441}'

Recruitee moves an offer with a per-transition endpoint rather than a writable status field, so status stays read-only on the offer itself. The response is the updated {offer}.

Publishing puts the role on your public careers site. Confirm the exact offer before the call — and note kind decides whether you created a job or a talent pool in the first place.

kind is the only thing separating a job from a talent pool — read it back before executing, since creating a talent pool when the user asked for a job is a silent, plausible-looking mistake. Recruitee documents no validation-error shape, so if a create fails, re-check the required four (title, description, requirements, location_ids) and the work-model flags rather than guessing at the message.

On this page