hyreflow
Integrations

Breezy HR

Coming soon — Breezy's own API is still in progress, so this is not connectable yet. Post a job to Breezy HR: title, description, employment type, location, department, category, experience and education levels, salary band, pipeline, questionnaire, tags and application-form field visibility. BYOK-only, production writes.

Coming soon — not connectable yet. Breezy's own v3 API is published as a work in progress, so we are holding the integration back rather than selling it as live. Breezy shows on the Integrations page as unavailable, connecting a key is refused, and breezy_* tools will not run. Everything below documents the adapter as it will ship; it is accurate, not usable yet. Ask us if you need it early.

Breezy calls a job a position. Use Breezy to stand up a position directly in the customer's ATS, and publish it. It is a write target — Hyreflow reads only the company list, to verify the token.

Free (BYOK), once it opens. Breezy writes cost no credits. You will connect your own Breezy personal access token and your company id from the dashboard Integrations page. 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.

Capability

ToolDoesCost
create_jobCreate a position for the configured companyFree
set_job_statePublish a position (or move it to draft, archived or closed)Free

create_job parameters

FieldTypeRequiredNotes
namestringyesThe position title.
descriptionstringyesThe position details.
typestringyesfullTime, partTime, contract, temporary, other.
location.countrystringyesISO 3166-1 alpha-2 country code, e.g. US.
location.statestringnoValidated against US states / Canadian provinces when the country is US or CA.
location.citystringnoThe city the role is based in.
location.is_remotebooleannoThe role is remote.
requisition_idstringnoYour own requisition tracking id.
departmentstringnoMust match the name of one of the company's configured departments.
categorystringnosoftware, design, product, sysadmin, devops, finance, custserv, sales, marketing, pr, hr, management, operations, other, or one of the company's own custom category ids.
experiencestringnona, internship, entry-level, associate, mid-level, senior-level, executive.
educationstringnounspecified, high-school, certification, vocational, associate-degree, bachelors-degree, masters-degree, doctorate, professional, some-college, vocational-diploma, vocational-degree, some-high-school.
salary.from / salary.tonumbernoPay range.
salary.periodstringnoMatched case-insensitively against Breezy's standard periods or the company's own custom salary terms.
salary.currencystringnoA supported currency code.
pipeline_idstringnoOne of the company's pipelines. A non-existent id is refused with 404.
scorecard_idstringnoOne of the company's scorecards. A non-existent id is refused with 404.
questionnaire_idstringnoOne of the company's questionnaires. A non-existent id is refused with 404.
tagsarray of stringnoFree-form position tags.
application_formobjectnoPer-field visibility on the public application form — see below.

application_form takes required, optional or hidden for each of name, headline, summary, profile_photo, address, salary, email_address, phone_number, resume, work_history, education and cover_letter, plus preferred_location. questionnaire_in_experience is a boolean.

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", "is_remote": false},
  "experience": "senior-level",
  "education": "bachelors-degree",
  "salary": {"from": 160000, "to": 200000, "period": "yearly", "currency": "USD"},
  "tags": ["platform", "kubernetes"]
}'

The response is the full created position; its id is _id.

Breezy silently discards any field it doesn't recognize before saving — a mistyped key produces a success with the value missing, not an error. Hyreflow rejects unknown top-level keys for exactly this reason, so an error naming an "unsupported field" means a typo, not a missing feature. The same asymmetry bites on round-trips: a position read back returns type, experience and category as objects, while create takes plain strings — take the .id, never the object.

set_job_state parameters

FieldTypeRequiredNotes
position_idstringyesThe position to update.
statestringnopublished (default), draft, archived, 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.

What creating a position does not do

  • state cannot be set here. Breezy decides the new position's state; set_job_state, above, moves it.
  • salary.period and salary.currency are validated against Breezy's own sets, which the vendor does not publish — ask the user what their account uses if one is refused.

pipeline_id, scorecard_id and questionnaire_id are checked by reference: a well-formed but non-existent id returns 404. Only send one the user gave you. Breezy publishes no rate limit; don't batch positions in parallel.

On this page