Hyreflow
Integrations

JobAdder

Read/write the JobAdder recruiting ATS/CRM via its v2 API. Key gotcha: PUT updates are a FULL-resource replace — read-merge-write or you blank omitted fields.

Reach for JobAdder as the ATS write target at the end of a sourcing pipeline: push enriched, qualified candidates, attach them to open jobs, and read jobs/companies/placements. Source → enrich → load into JobAdder.

OAuth app credentials — authorization-code → refresh-token grant (JOBADDER_CLIENT_ID, JOBADDER_CLIENT_SECRET, JOBADDER_REFRESH_TOKEN). Because it's OAuth rather than a single key, JobAdder isn't a self-serve integration yet — you can't connect it from the dashboard. The token endpoint returns your region-specific base URL automatically.

Capabilities

ToolDoesCost
get_current_userCheapest call — confirms auth + resolves region base (pilot)Free
find_candidatesSearch candidates (Name/Email/Phone/Location/Keywords/StatusId)Free
add_candidateCreate a candidate (409 on dup email → allow_duplicates)Free
add_candidates_to_jobAttach existing candidate(s) to a job (creates applications)Free
find_jobsSearch jobs (Active/CompanyId/StatusId/…)Free
set_candidate_statusChange candidate status (+ optional note)Free
search_by_emailIdentity match candidates/contacts/users by emailFree
countCount-peek (Limit=0 → only totalCount)Free

~52 methods total (companies, contacts, applications, placements, ads, requisitions, notes). The above are the primary ones.

Guidance

  • PUT = full replace, not patch. update_candidate/update_company/update_contact/update_job blank every field you omit. Always get_* first, merge your change into the full object, then PUT it — including nested objects like social.
  • Custom-field writes fail silently: use custom:[{"fieldId":N,"value":...}] (singular value; List values are arrays). A wrong shape returns 200 but doesn't persist — always read the record back to confirm.
  • Pilot before bulk: production ATS writes — push one record, confirm, then scale. Request the minimum OAuth scopes needed.
  • Count-peek before paging: every list takes Limit=0 for just totalCount; paginate walks Offset/Limit (max 1000).
  • IDs are ints, and status/custom-field IDs are account-specific — fetch the definitions per account before writing. Duplicates return 409 with an X-Allow-Duplicates header.
hyreflow tools execute jobadder get_current_user --payload '{}'

Refresh tokens may rotate on each refresh — persist the latest back to JOBADDER_REFRESH_TOKEN for long-lived runs.

Rate limits & bulk writes

JobAdder does not publish a fixed RPM, so the adapter defaults to a conservative 120 requests / minute. Use add_candidates_batch, add_companies_batch, add_contacts_batch and add_jobs_batch for large pushes. See Bulk pushes to ATS / recruiting CRM.

On this page