The candidate object
The full shape GET /candidates/{id} returns.
Every field GET /candidates/{id} can return, in one place — see Retrieve a candidate for the request itself.
GET /candidates/{id} — every field
idstringrequired- The Onboardly candidate id — use this in every other endpoint’s path.
external_idstring or nullrequired- The Idempotency-Key you created this candidate with, or
nullfor a dashboard-created candidate. statusstringrequiredawaiting_consent,consent_denied,in_progress,verified,flagged, orrevoked— the same stage a recruiter sees on the dashboard header pill.consentbooleanrequired- True once the candidate has granted WhatsApp consent.
candidate.namestringrequired- Full display name.
candidate.mobile_numberstring or nullrequired- E.164.
candidate.emailstring or nullrequiredcandidate.job_titlestring or nullrequired- Your
role_typeat creation, if any. documents[].namestringrequired- The checklist entry’s name — any string, not limited to a fixed catalogue.
documents[].statusstringrequiredpending,needs_review,accepted,rejected, orawaiting_recruiter_action.documents[].submitted_atstring or nullrequired- ISO-8601 timestamp of the latest submission, or
nullif nothing has been uploaded for this slot. documents[].content_urlstring or nullrequired- Absolute URL — set whenever ANY submission exists, whatever its status. Never a signal that the document was accepted.
cvobject or nullrequirednullwhen no CV is on file, or on file but not currently servable. Fetch its bytes at Retrieve the CV.cv.file_namestring or nullrequired- Always
nulltoday — nothing in this repo’s CV writer stamps the original filename. cv.content_typestringrequired- One of the accepted CV types (PDF or Word), derived from the stored file.
cv.sizeinteger or nullrequired- Byte count actually stored.
cv.content_urlstringrequired- Absolute URL for GET .../cv.
references[].organisationstring or nullrequiredreferences[].rolestring or nullrequired- The referee’s own position, not the candidate’s.
references[].statusstringrequiredpending_send,sent,received,bounced,flagged, orcompleted.references[].received_atstring or nullrequiredreferences[].reply_textstring or nullrequired- The referee’s reply, with contact details redacted.
reference_requirements.requiredintegerrequired- How many referees this candidate needs in total.
reference_requirements.receivedintegerrequiredreference_requirements.outstandingintegerrequired0once every required slot is settled.compliance_pack.readybooleanrequired- Documents-only readiness — an outstanding reference never blocks this.
compliance_pack.urlstring or nullrequired- Set only when
ready. compliance_pack.blockersstring[]required- Bare document names still blocking readiness.
chase.docs_attemptsintegerrequired- Consecutive unanswered document-chase reminders sent so far.
chase.docs_attempts_maxintegerrequired- This candidate’s resolved cap.
chase.reference_attemptsintegerrequired- The highest attempt count across this candidate’s referees.
chase.reference_attempts_maxintegerrequired- Follow-up chases after the first email.