docs reference
Changelog
What this version of the API includes.
2026-11-01
The first public version. A short balance returns part of a search page: resume is the same page again, and leads already billed are free. credits.low uses each workspace's low_balance_credits (default 250). Pin it with RecruitMCP-Version: 2026-11-01; keys pin it when they are created. See Errors, pagination, and versions for what counts as a breaking change.
API shape
- Three layers: Raw (filters one to one with the person index, full profiles), Building blocks (lookups, seen register, lists, suppressions), and Guided (intents, search plans, runs). See API layers.
- Every operation has an
operationId.openapi.yamlis the source of the API reference and of the generated TypeScript and Python SDKs and the n8n node. - Every list uses cursor pagination:
{ object: "list", data, next_cursor, has_more }. - Every paid or sending call takes
?dry_run=trueand needs anIdempotency-Keyto execute. - Distinct error codes for every failure the client should handle differently, including
unsupported_filter,not_cached,daily_credit_cap_reached,outreach_cap_reached,account_paused, andaccount_not_ready.
Sourcing
POST /v1/runsaccepts job text, an intent, or a plan. A dry run returns the plan and estimate for free.- Intents use must, nice, and exclude blocks. Every intent, plan, and raw search reports
applied_filtersandignored_fields. - Raw filters include past companies, schools, job functions, profile languages, company headcount, and names. Filters the index cannot apply, such as time in the current title, are refused with
unsupported_filter. Raw-layer requests also refuse unknown fields andraw: true; profiles are always normalized. GET /v1/people/{profile_id}never charges.POST /v1/people:fetchtakes up to 100 ids or URLs.POST /v1/people:matchfinds one person by name and company.- Full CRUD for intents, the seen register (with tags and external ids), and lists (with CSV export).
- There is no fit score. Candidates carry distance, experience, tenure, and tier.
Platform
- Account-wide events and signed webhook endpoints for runs, jobs, contacts, enrollments, actions, replies, accounts, and credits.
- Customers: sub-workspaces with their own memory, outreach accounts, and daily caps, selected by header or by a bound key.
- OAuth 2.1 for MCP clients such as claude.ai, next to API keys. Sending outreach is its own scope,
outreach:send. - MCP toolsets selected on the URL, a one-call
start_search,get_search_resultsthat waits, output schemas, prompts, resource templates, andget_guide.
Outreach
- Enroll a run, a list, profile ids, or named people in one call, with a full preview first.
- Sequences, enrollments, actions, and conversations have full read and manage endpoints.
- The safety layer is unchanged: caps, warmup, daily jitter, spacing, working hours, reply-stop, and auto-pause. Raising a cap needs
risk_acknowledgedand is audited.
Credits and privacy
- Credits live in buckets with a source and an expiry. Unused plan credits roll over for 2 more cycles, top-ups expire after 12 months, and free signup credits after 30 days.
- A person can opt out at
/opt-out. Suppression applies in every layer, raw search included. POST /v1/erasureserases one person from the workspace and keeps a hashed suppression.
Prices on this page are the defaults: 1 credit per lead returned, 2 per live profile, 1 per new company lookup, 1,250 credits on signup, €49 per connected account per month.