Coming soon — not connectable yet while Breezy finishes its own API. Post a job to Breezy HR via its v3 API — create a position with a title, description, employment type, location, department, category, experience and education levels, salary band, pipeline, questionnaire, tags and application-form field visibility. 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 Breezy HR docs →Breezy calls a job a position.
Breezy's own v3 API is published as a work in progress, so the integration is not connectable yet:
Breezy is listed on the Integrations page as unavailable, saving a key is refused, and the breezy_*
tools will not run. The adapter below is built and tested against the documented surface — this page
describes what ships the day Breezy's API is ready. Ask us if you need it before then.
Breezy is BYOK-only. Once it opens you will connect your own Breezy personal access token and
your company id in Integrations; there is no managed-key fallback and the write costs 0 Hyreflow
credits. The company's Breezy plan needs the Developer API feature enabled. list_companies is the free
connection check: it verifies the key and returns the companies the token can reach.
create_job(payload) posts a position. Required: name, description, type, location.country.
name (required) — the position title.description (required) — the position details.type (required) — fullTime, partTime, contract, temporary, other.location.country (required) — 2-letter ISO country code.location.state — validated against US states / Canadian provinces when the country is US or CA.location.city, location.is_remote.requisition_id — your own tracking id.department — must match the name of an existing department.category — software, design, product, sysadmin, devops, finance, custserv, sales,
marketing, pr, hr, management, operations, other, or a custom category id.experience — na, internship, entry-level, associate, mid-level, senior-level, executive.education — unspecified, high-school, certification, vocational, associate-degree,
bachelors-degree, masters-degree, doctorate, professional, some-college,
vocational-diploma, vocational-degree, some-high-school.salary — {from, to, period, currency}.pipeline_id / scorecard_id / questionnaire_id — must exist in the company, or the call 404s.tags — free-form strings.application_form — per-field visibility (see below).hyreflow tools execute breezy_create_job --payload '{
"name": "Senior Platform Engineer",
"description": "<p>Own the deployment platform.</p>",
"type": "fullTime",
"location": {"country": "US", "state": "CA", "city": "San Francisco"},
"experience": "senior-level"
}'
The position's id is _id.
set_job_state(position_id) defaults to published, and also accepts draft, archived and closed:
hyreflow tools execute breezy_set_job_state --payload '{"position_id": "a3f9c1d2e4b5"}'
It answers 204 with no body, so an empty result is success. Publishing can fail with a 400 once the
company's plan hits its active-position limit — that's a billing constraint, not a bad payload, so relay
it rather than retrying. pending shows up in the state a position can be in, but the endpoint won't
accept it as a value to set.
type, experience and category as objects; create takes plain
strings — take .id, never the object.pipeline_id, scorecard_id, questionnaire_id are checked by reference: a well-formed but
non-existent id 404s. Only send one the user gave you.state cannot be set here — Breezy decides it. set_job_state, above, moves it, and can fail once the
plan's active-position limit is hit.salary.period and salary.currency are validated against sets Breezy doesn't publish; ask the user
what their account uses if one is refused.