← all tools
ATS

Recruitee

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.

Cost per callBYOK · vendor billed
Your own keyrequired
CategoryATS

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 →

What your agent reads before it touches Recruitee

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 →
Show the raw playbookwritten for the agent

Recruitee calls a job an offer, and the same endpoint creates either a real job or a talent pool.

Access

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 an offer

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.
  • kindjob (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.

Where location_ids comes from

They 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.

Gotchas

  • Recruitee documents no validation-error shape. If a create fails, re-check 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.
  • This is a write into the customer's own ATS — confirm the payload before executing.

What creating an offer does NOT do

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.

Publishing it

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.