/company/{id}/position/{id}/candidate/{id}/stream

Returns the candidate's full activity stream on the position — a chronological array of StreamActivity events (e.g. stage moves, notes, interviews, questionnaire activity), each with a type, timestamp, first_of_day flag, and an object payload whose shape varies by event type. To add a note to the stream, use the corresponding POST on this same endpoint.

Switch on type before reading object. Most payloads share a common base — acting_user, candidate_id, company_id, position_id, and candidate/company/position snapshots — and add the fields listed below. Skip any type you do not recognize; new ones are added over time.

typeFires whenAdds to the base payload
candidateAddedCandidate is created on the position
candidateStatusUpdatedCandidate changes pipeline stage or statusstage, stage_was, status, status_was, entered_stage, entered_previous_stage
candidateMovedCandidate is moved to another positionposition_was, position_id_was
candidateMergedCandidate profiles are mergedmerge, merged_date, position_was, errors
candidateArchivedCandidate is archived or restoredarchived, archived_by
candidateAssignedPostedCandidate is assigned to a team membermember
candidateSalaryUpdatedSalary expectation changessalary, salary_was
companyNotePostedAn internal note is postedbody, attachments, mentioned_ids
candidateInterviewAddedAn interview is scheduledinterview
candidateInterviewCancelAn interview is cancelledinterview
candidatePanelInterviewAddedA panel interview is scheduledpanel_interview
candidateMeetingTimesProposedInterview times are proposed to the candidateproposal
candidateDocumentAddedA document is attachedfile_name, file_url, file_size, creation_date
candidateDocumentDeletedA document is removedfile_name, file_url, file_size, creation_date
candidateEDocumentCompletedAn e-signature document is fully signedsignatures, signature_template, template_id
candidateAssessmentSentAn assessment is sentassessment, service_name, sent_by
candidateAssessmentCompletedAn assessment result returnsassessment, service_name, completed_date
questionnaireToCandidatePostedA questionnaire is sentname, status, questions, sent_by
questionnaireResponsePostedThe candidate submits a questionnairequestionnaire
candidateReferrerAddedA referrer is recordedreferrer
candidateReferrerUpdatedThe referrer changesreferrer, referrer_was
candidateReferrerRemovedThe referrer is clearedreferrer_was
candidateSourcingMatchedSourcing matches the candidate to a positionsourcing_result_id, target_position_id, overall_score, recommendation
candidateSourcingReachedOutSourcing outreach is sentsourcing_result_id, target_position_id, message
candidateSourcingDeclinedSourced candidate declinessourcing_result_id, target_position_id
candidateSourcingInvitedSourced candidate is invitedsourcing_result_id, source, imported_candidate_id
candidateSourcingImportedSourced candidate is importedsourcing_result_id, source, source_candidate_id
linkedInCandidateSyncA LinkedIn sync runsDoes not use the base payload — only candidate_id, company, status, errors
breezy_onboardingCreateEmployeeCandidate is pushed to Breezy OnboardingDoes not use the base payload — only candidate
companyBlockedCandidateAn email address is blockedDoes not use the base payload — candidate_email, blocked_candidate, no position context
companyUnblockedCandidateAn email address is unblockedDoes not use the base payload — candidate_email, blocked_candidate, candidate_data

Permissions affect which types you receive. The full set above requires the View candidate activity permission, held by Administrators and Hiring Managers by default. A token for a user without it receives only candidateMerged, candidateAdded, candidateAssignedPosted, candidateInterviewAdded, candidateInterviewCancel, candidateMeetingTimesProposed, candidatePanelInterviewAdded, candidateStatusUpdated, candidateMoved, companyNotePosted, candidateArchived, and the block/unblock pair. candidateSalaryUpdated additionally requires View candidate contact details. Many of the remaining types only occur if the company uses that feature, so most integrations see fewer than a dozen in practice.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
string
required
string
required
string
required
Response

Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json