← all tools
Recruiting CRM

Recruiterflow

Source into Recruiterflow, and move people through the pipeline.

Recruiterflow is a recruiting CRM, and one of the 52 tools hyreflow connects to Claude, ChatGPT and other AI assistants. Through hyreflow, an AI agent can run 39 actions: 17 that look something up and 22 that create or change records. Recruiterflow runs on your own Recruiterflow account: hyreflow charges no credits for it, and Recruiterflow bills you as before.

Cost per callBYOK · vendor billed
Your own keyrequired
CategoryRecruiting CRM

Recruiterflow gets the full treatment: candidates in, attached to jobs, moved between stages, notes added. Your agent reads and writes the client and contact side too, so business development lands in the same system as delivery.

Recruiterflow is a destination and a starting point. The open roles already in it can kick off a sourcing run.

What can you ask Claude or ChatGPT to do with Recruiterflow?

With hyreflow connected, you ask for the outcome in plain language and the assistant runs Recruiterflow for you. For example:

  • “Add these candidates and attach them to the role”
  • “Take this brief url, source with Prospeo, and file the longlist against the job”
  • “Move these three to interview and log the Granola notes”
  • “What is in the pipeline for this job?”

Which tools work well with Recruiterflow?

In a hyreflow run, Recruiterflow is most often paired with Prospeo, Granola, Lemlist and Enrichley.

  • Prospeo

    the sourcing that fills the pipeline

  • Granola

    notes filed against the right candidate

  • Lemlist

    multichannel outreach off a Recruiterflow shortlist

  • Enrichley

    validate before anything leaves the system

Which Recruiterflow actions can an AI agent run through hyreflow?

Through hyreflow, an AI agent can run 39 Recruiterflow actions: 17 that look something up and 22 that create or change records. Recruiterflow runs on your own Recruiterflow account: hyreflow charges no credits for it, and Recruiterflow bills you as before.

Recruiterflow actionWhat it doesCost through hyreflow
Search candidatesLooks something upno hyreflow credits
Search clientsLooks something upno hyreflow credits
Search contactsLooks something upno hyreflow credits
Search jobsLooks something upno hyreflow credits
Add candidateCreates or changes a recordno hyreflow credits
Add candidate noteCreates or changes a recordno hyreflow credits
Add candidate to jobCreates or changes a recordno hyreflow credits
Add candidates batchCreates or changes a recordno hyreflow credits
Add clientCreates or changes a recordno hyreflow credits
Add clients batchCreates or changes a recordno hyreflow credits
Show all 39 Recruiterflow actions →
Recruiterflow actionWhat it doesCost through hyreflow
Add contactCreates or changes a recordno hyreflow credits
Add contact noteCreates or changes a recordno hyreflow credits
Add contacts batchCreates or changes a recordno hyreflow credits
Add to campaignCreates or changes a recordno hyreflow credits
Create jobCreates or changes a recordno hyreflow credits
Create jobs batchCreates or changes a recordno hyreflow credits
Create placementCreates or changes a recordno hyreflow credits
Close jobCreates or changes a recordno hyreflow credits
Disqualify candidateCreates or changes a recordno hyreflow credits
Move candidate to stageCreates or changes a recordno hyreflow credits
Open jobCreates or changes a recordno hyreflow credits
Remove from campaignCreates or changes a recordno hyreflow credits
Update candidateCreates or changes a recordno hyreflow credits
Update clientCreates or changes a recordno hyreflow credits
Update contactCreates or changes a recordno hyreflow credits
Update jobCreates or changes a recordno hyreflow credits
List campaignsLooks something upno hyreflow credits
List candidatesLooks something upno hyreflow credits
List clientsLooks something upno hyreflow credits
List contactsLooks something upno hyreflow credits
List job statusesLooks something upno hyreflow credits
List jobsLooks something upno hyreflow credits
List usersLooks something upno hyreflow credits
Get candidateLooks something upno hyreflow credits
Get clientLooks something upno hyreflow credits
Get contactLooks something upno hyreflow credits
Get jobLooks something upno hyreflow credits
Get job pipelineLooks something upno hyreflow credits
Get userLooks something upno hyreflow credits

One credit is priced on the pricing page. The full price list for every tool is in the pricing tables.

Which hyreflow skills use Recruiterflow?

19 hyreflow skills call Recruiterflow as part of the run. A skill is a whole pipeline your agent already knows, end to end.

Sourcing

Find the candidates already sitting in your own ATS

use whena role comes in and you want to know who you already have before you pay to source anyone new

Recruit CRMBullhornVincereLoxoRecruiterflowJobAdderAtlashyreflow Agent
starts from a job spec · 6 stepsget the prompt →
Sourcing

Score one candidate against every open role in your ATS

use whena strong applicant comes in for the wrong job, and your team is working dozens of other roles they might fit

Recruit CRMBullhornVincereLoxoRecruiterflowJobAdderAtlashyreflow AgentAI Ark
starts from a candidate · 7 stepsget the prompt →
Business development

Check in with both sides of a placement at three, six and twelve months

use whenyou placed someone a while ago and the three, six or twelve month point is coming up, which is when a short note to the candidate and the client does the most good

JobAdderLeadMagicFullEnrichProspeoEnrichleyhyreflow AgentLemlistRecruiterflowAtlas
starts from your database · 7 stepsget the prompt →
Business development

Win back client companies nobody has called in a long while

use whenthere are companies you have placed with or worked for that nobody on the team has spoken to in a long while

Recruit CRMJobAdderRecruiterflowAtlasLeadMagicAI ArkProspeohyreflow NativeEnrichley
starts from your database · 8 stepsget the prompt →
Signals

Find the people you placed years ago who hire for their own team today

use whenthe people you placed years ago are running teams, and your database still files them as candidates

Recruit CRMJobAdderRecruiterflowLoxoLushaLeadMagicProspeoEnrichleyhyreflow Agent
starts from your database · 8 stepsget the prompt →
Signals

Follow your client contacts when they move company

use whena hiring manager who knows you has changed employer, and your CRM still shows them at the company they left

LushaLeadMagicProspeoEnrichleyLemlistRecruit CRMBullhornJobAdderRecruiterflow
starts from your database · 8 stepsget the prompt →

See all 19 skills that use Recruiterflow →

How does an AI agent know how to use Recruiterflow?

hyreflow ships a written playbook for Recruiterflow, 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 Recruiterflow docs →
Show the raw playbookwritten for the agent

HOW in lib/recruiterflow.py.

Auth & config

  • Base URL: https://api.recruiterflow.com/api/external · Auth: header RF-Api-Key (env RECRUITERFLOW_API_KEY; never hardcode). get_info() = safe read-only pilot.
  • ALL paths CONFIRMED from the official Swagger spec (api.recruiterflow.com, 2026-06-01 — pasted by user). Full endpoint index: reference/docs/recruiterflow/raw/endpoints.md. RF terminology: client = company, plus candidate/contact/job/deal/placement.
  • Paths & params (exact): account info is get_info() → POST /info (there is no /account); candidate read is get_candidate() → GET /candidate/get; get_job's param is job_id (not id); job statuses is GET /job-status/list (hyphenated); there is no resume-parse method (/resume/parse is not in the spec).

Operations (36 methods; long tail via request())

Candidates: list/get/search/add/update_candidate, add_candidate_to_job, move_candidate_to_stage, disqualify_candidate, add_candidate_note. Jobs: list/get/search/create/update_job, close_job, open_job, get_job_pipeline, list_job_statuses. Clients(companies): list/get/add/update/search_clients. Contacts: list/get/add/update/search_contacts, add_contact_note. Campaigns: list_campaigns, add_to_campaign, remove_from_campaign. Also get_info, list_users, get_user, create_placement. Everything else (activities, calls, emails, tasks, custom-fields, files, deals, placements, reference lists, locations, tags) → request(); all listed in the cached index.

Guardrail

Writes go to a production ATS — pilot one record, show payload+response, confirm before bulk.

Handoff

ATS write target: sourced+enriched candidates → add_candidate (with job_id) → review in Recruiterflow.

Callable surface — lib/recruiterflow.py

Import: from lib.recruiterflow import Recruiterflow → instantiate Recruiterflow() (reads key from env). Base: https://api.recruiterflow.com/api/external. Generic passthrough: request(method, path, *, params, json).

  • add_candidate(payload: dict) -> Any — POST /candidate/add — create a candidate (custom_fields as [{id,value}]).
  • add_candidate_note(payload: dict) -> Any — POST /candidate/notes/add — body {id, created_by, value, mentions[]}.
  • add_candidate_to_job(payload: dict) -> Any — POST /candidate/add-to-job — body {id, job_id, applied, added_time}; lands under Sourced.
  • add_candidates_batch(payloads: list[dict], *, stop_on_error: bool = False) -> dict — POST /candidate/add for many records, respecting RECRUITERFLOW_RATE_LIMIT_RPM.
  • add_client(payload: dict) -> Any — POST /client/add — create a client company.
  • add_clients_batch(payloads: list[dict], *, stop_on_error: bool = False) -> dict — POST /client/add for many records, rate-limited.
  • add_contact(payload: dict) -> Any — POST /contact/add.
  • add_contact_note(payload: dict) -> Any — POST /contact/notes/add.
  • add_contacts_batch(payloads: list[dict], *, stop_on_error: bool = False) -> dict — POST /contact/add for many records, rate-limited.
  • add_to_campaign(payload: dict) -> Any — POST /campaign/add-to-campaign — {campaign_id, id:[...], user_id}. Drives outreach — gate.
  • batch(method: str, calls: list, *, stop_on_error: bool = False) -> dict — Batched get/search/update/create: run one method over many inputs, rate-limited. Each call is a value -> method(value), or {"args": [...], "kwargs": {...}} for multi-arg methods. Recruiterflow updates take a single payload dict (id inside), so update calls are plain payload dicts.
  • close_job(payload: dict) -> Any — POST /job/close — {job_id, user_id, close_reasons[]}.
  • create_job(payload: dict) -> Any — POST /job/create — {about_position, client_company_id, created_by, department_id, employment_type_id, locations[], title, ...}.
  • create_jobs_batch(payloads: list[dict], *, stop_on_error: bool = False) -> dict — POST /job/create for many records, rate-limited.
  • create_placement(payload: dict) -> Any — POST /placement-record/create — {user_id, placements:[{job,prospect,...}]}. See cached index for engagement-type variants.
  • disqualify_candidate(payload: dict) -> Any — POST /candidate/disqualify — body {id, job_id, reason, user_id}.
  • get_candidate(candidate_id: str | int) -> Any — GET /candidate/get?id= — read one candidate by id.
  • get_client(client_id: int) -> Any — GET /client/get?id=.
  • get_contact(contact_id: str | int) -> Any — GET /contact/get?id=.
  • get_info() -> Any — POST /info — external-API display-name info (safe read-only pilot). (There is no /account.)
  • get_job(job_id: str | int, *, include_stages: int | None = None) -> Any — GET /job?job_id= (param is job_id, not id). Optional include_stages=1.
  • get_job_pipeline(job_id: str | int) -> Any — GET /job/pipeline?job_id= — stage summary + detail.
  • get_user(*, id: int | None = None, email: str | None = None) -> Any — GET /user/get?id= or ?email=.
  • list_campaigns(**params) -> Any — GET /campaign/list.
  • list_candidates(**params) -> Any — GET /candidate/list (items_per_page, current_page, include_files, include_notes, include_count).
  • list_clients(**params) -> Any — GET /client/list — client companies.
  • list_contacts(**params) -> Any — GET /contact/list (include_files, include_notes, include_count).
  • list_job_statuses(**params) -> Any — GET /job-status/list (hyphenated).
  • list_jobs(**params) -> Any — GET /job/list (items_per_page, current_page, include_count, include_notes, include_description, only_open).
  • list_users(**params) -> Any — GET /user/list.
  • move_candidate_to_stage(payload: dict) -> Any — POST /candidate/move-to-stage — body {id, job_id, stage:{id,name}, user_id}.
  • open_job(payload: dict) -> Any — POST /job/open — {job_id, user_id}.
  • remove_from_campaign(payload: dict) -> Any — POST /campaign/remove-from-campaign — {campaign_id, id:[...]}.
  • search_candidates(payload: dict) -> Any — POST /candidate/search — filter body {conjunction, filters[], items_per_page, current_page, include_count}.
  • search_clients(payload: dict) -> Any — POST /client/search.
  • search_contacts(payload: dict) -> Any — POST /contact/search.
  • search_jobs(payload: dict) -> Any — POST /job/search — filter body (keys: job_client_company, job_department, job_id, name, custom_field.N).
  • update_candidate(payload: dict) -> Any — POST /candidate/update — full update (include id; provided keys replace existing data).
  • update_client(payload: dict) -> Any — POST /client/update — include id.
  • update_contact(payload: dict) -> Any — POST /contact/update — include id.
  • update_job(payload: dict) -> Any — POST /job/update — include job_id.

Questions about Recruiterflow and hyreflow

Can I use Recruiterflow inside Claude or ChatGPT?

Yes. hyreflow is a connector for Claude, ChatGPT and other AI assistants. Once hyreflow is connected, you ask for the outcome in plain language and the assistant calls Recruiterflow for you. hyreflow exposes 39 Recruiterflow actions this way.

Do I need my own Recruiterflow account to use it with hyreflow?

Yes. Recruiterflow runs on your own Recruiterflow account. You connect it to hyreflow once, hyreflow charges no credits for the calls, and Recruiterflow bills you as before.

What does Recruiterflow cost through hyreflow?

Recruiterflow runs on your own Recruiterflow account: hyreflow charges no credits for it, and Recruiterflow bills you as before.

How do I connect Recruiterflow to an AI agent over MCP?

Add the hyreflow MCP server to your assistant and sign in. hyreflow calls the Recruiterflow API directly and exposes its actions as tools the assistant can run, so there is no separate Recruiterflow server to install.

Connect hyreflow to your assistant →

Put Recruiterflow to work from one prompt

Connect hyreflow to Claude or ChatGPT and ask for the outcome. It reads the playbook above before it makes a single call.