Nobody wants to migrate an ATS. It holds years of candidate history, half your compliance story, and integrations with job boards that took a quarter to set up. The good news is that you do not have to move any of it to put structured interviewing in front of it.
The shape of the integration
Two directions, one endpoint each:
- When a candidate reaches your screening stage, push them to Recruit360 and store the returned interview URL back on the ATS record.
- When the report is ready, receive a webhook and write the score, the verdict and a link back onto the same record.
That is the whole thing. Everything else — sourcing, pipeline management, compliance records, offer history — stays where it is.
Pushing a candidate
POST /v1/candidates
{
"job_id": "job_4182",
"email": "ama@example.com",
"resume_url": "https://cdn.acme.co/cv.pdf",
"stage": "ai_interview",
"external_id": "ats_88213"
}
Set external_id to your ATS record id. Every webhook about this candidate
carries it back, so you never need to maintain a mapping table.
The response contains interview_url. Write it to a custom field on the ATS
record and your recruiters can send it from the tool they already use.
Receiving the report
Subscribe to report.ready. The payload carries the overall score, the verdict,
the per-criterion breakdown and a signed link to the full report.
{
"event": "report.ready",
"data": {
"external_id": "ats_88213",
"overall": 8.6,
"verdict": "strong_hire",
"report_url": "https://hire.yourfirm.co.uk/r/9f21b"
}
}
Verify the HMAC signature, reject anything with a timestamp older than five minutes, and write the three fields onto the record. Most teams also move the candidate to a "reviewed" stage automatically when the score clears a threshold they set — though it is worth resisting the urge to auto-reject on a number.
Two things worth getting right
Idempotency. Webhooks retry for 24 hours. Key your handler on the event id so a duplicate delivery does not create a second record or fire a second notification at a recruiter.
Test mode first. Every workspace has test keys. Test-mode interviews are simulated end to end and produce real payloads, so you can build and verify the whole loop before a single real candidate is involved, and without being billed.
How long it takes
For a team that has written against a REST API before: an afternoon for the push, an afternoon for the webhook handler, and a day of testing against real payloads. The longest part is usually agreeing which ATS field the report link should live in.