Hyreflow
Integrations

Bulk pushes to ATS / recruiting CRM

Rate-limited batch helpers, API limits, and cost gating for high-volume writes to Bullhorn, JobAdder, Loxo, Recruiterflow, Vincere, Atlas and Recruit CRM.

When you enrich or source thousands of records and push them into an ATS/CRM, Hyreflow uses sequential, rate-limited batch helpers. Each adapter paces calls to the vendor's published limit and keeps going on individual record failures, so a single bad row does not abort the whole run.

ATS/CRM writes are free on Hyreflow — they never consume credits. The enrich cost estimate shown before a run only covers enrichment/reveal steps (email finder, agent calls, etc.).

Rate limits and batch helpers by CRM

CRMDefault RPMLimit keyBatch helper examplesNotes
Bullhorn1,500OAuth Client IDcreate_candidates_batch, create_client_contacts_batch, create_client_corporations_batch, create_job_orders_batch1,500 req/min per OAuth app. 429 → wait 1s and retry.
JobAdder120 (2/sec)refresh tokenadd_candidates_batch, add_companies_batch, add_contacts_batch, add_jobs_batchPublic limit not published; 120/min is a safe default.
Loxo60API key + agency slugcreate_people_batch, create_jobs_batchNo published cap; default is conservative.
Recruiterflow60API keyadd_candidates_batch, add_contacts_batch, add_clients_batch, create_jobs_batchNo published cap; conservative default.
Vincere60tenant + API keycreate_candidates_batchNo published cap; conservative default.
Atlas60API keycreate_people_batch, create_companies_batch, create_projects_batch, create_opportunities_batchNo published cap; conservative default.
Recruit CRM60API keycreate_candidates_batch, create_contacts_batch, create_companies_batchAccounts with >6 licenses can do 10 req/min per license. See Recruit CRM rate limits.
Spott600API keycreate_candidates_batch, create_clients_batch, create_notes_batchSpott's published limit — not a conservative default. See Spott rate limits.

If your CRM plan is provisioned for a higher rate limit than the default above, contact us and we'll raise the pacing on your workspace.

How batch helpers behave

  • Sequential, not parallel — CRMs throttle by token/client, so requests are serialized to avoid 429s.
  • Token-scoped pacing — the limiter is shared per credential, so multiple short-lived instances do not burst above the cap.
  • Continue on failure — one invalid payload returns in failed rather than stopping the run. Use stop_on_error=True to abort early.
  • Return shape — every batch call returns {created: [...], failed: [{payload, error, status}], total, elapsed_ms}.
hyreflow tools execute bullhorn create_candidates_batch \
  --payload '[{"firstName":"Ada","lastName":"Lovelace","email":"[email protected]"}, ...]'

Batched reads & updates (batch)

The typed create_*_batch helpers cover inserts. To run get / search / update over many records with the same pacing + {failed, total, elapsed_ms} summary, every CRM exposes one generic batch method that fans a single method call across a list of inputs. Each entry is either a plain value → method(value), or {"args": [...], "kwargs": {...}} for methods that take more than one argument (like update).

# bulk fetch by id
hyreflow tools execute recruit-crm batch \
  --payload '{"method":"get_candidate","calls":["slug_1","slug_2","slug_3"]}'

# bulk update — each call passes (slug, payload)
hyreflow tools execute recruit-crm batch \
  --payload '{"method":"update_candidate","calls":[
    {"args":["slug_1",{"first_name":"Ada","email":"[email protected]"}]},
    {"args":["slug_2",{"first_name":"Grace","email":"[email protected]"}]}
  ]}'

# bulk search / lookup
hyreflow tools execute jobadder batch \
  --payload '{"method":"search_by_email","calls":["[email protected]","[email protected]"]}'

The return shape is {results: [...], failed: [{call, error, status}], total, elapsed_ms}.

Deletes are not supported. batch refuses any destructive method, and the CRM adapters expose no record-delete operation — pushes and edits only.

Before a bulk push

  1. Run hyreflow enrich --estimate to see the worst-case credit cost and confirm the workspace balance.
  2. If the balance is too low, the CLI shows a checkout link or the dashboard surfaces an add-credits prompt.
  3. Pilot one record, then scale to 100s/1,000s with the batch helper.
hyreflow enrich --file leads.csv --with "bullhorn.create_candidates_batch" --yes

On this page