Post a job to Recruitee via its ATS API — create an offer with a title, description, requirements, locations, department, work model and application-form location picker. Also creates talent pools. BYOK-only.
Ask for the outcome and your agent composes the run itself. Or start from a skill, a whole pipeline it already knows end to end.
browse all skills →Every tool ships with a written playbook, and the agent loads it before the first call. Auth, rate limits, what each call costs, which actions need your approval, and the mistakes worth avoiding. It is the difference between an agent that knows the tool and one that guesses at it.
Read the Recruitee docs →Recruitee calls a job an offer, and the same endpoint creates either a real job or a talent pool.
Recruitee is BYOK-only. Connect your own Recruitee token and your company id or subdomain in
Integrations; there is no managed-key fallback and the write costs 0 Hyreflow credits. A Recruitee token
is personal and per-company: it carries exactly the permissions of whoever minted it, and acts in their
name. list_departments is the free connection check: it verifies the key and returns the departments a department_id comes from.
create_job(payload) posts an offer. Required: title, description, location_ids, and
requirements (optional when kind is talent_pool).
title (required) — the offer title.description (required) — the offer description.location_ids (required) — array of Recruitee location ids, required even for a remote role.requirements — required for a job, optional for a talent pool.kind — job (default) or talent_pool.department_id — assigns the offer to an existing department.on_site / hybrid / remote (one of them required) — the work model shown on the careers
site. At least one must be true; none of the three defaults to true.visibility_options — defaults to ["locations_question"], adding a location picker to the application form.locations_question / locations_question_type (single_choice default or multiple_choice) /
locations_question_required.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>",
"hybrid": true
}'
The offer id is offer.id; offer.slug is what appears in the careers URL.
location_ids comes fromThey are numeric Recruitee location ids that Hyreflow does not look up for you. Ask the user for them, or have them read the ids out of Recruitee's Locations settings — there's no way to pass a location as a string on create.
title, description,
requirements, location_ids, and that one of on_site/hybrid/remote is true.kind is the only thing separating a job from a talent pool — read it back before executing.Recruitee's API accepts none of salary, employment type, category, experience, education, hours,
pipeline template, open questions, followers, hiring managers, or status on create — those are
read-only on the response and set inside Recruitee. Whether a fresh offer lands as draft or published
isn't part of Recruitee's documented contract either.
A created offer is a draft. set_job_state(offer_id) takes it live on the careers site:
hyreflow tools execute recruitee_set_job_state --payload '{"offer_id": 567441}'
state also accepts draft, closed and archived. Recruitee moves an offer with a per-transition
endpoint rather than a writable status field, so status stays read-only on the offer itself.