POST /webhooks/create/ (events array). Verify X-Praxicraft-Signature before parsing. SDK helpers. Setup overview: Webhooks.
Envelope
Every HTTPS delivery looks like this:
Header on every HTTPS delivery:
ct_test_ key) while debugging.
Correlation fields
Assessment completion / pass-fail payloads include:Assessment
assessment.started
Candidate begins a session.
assessment.completed
Candidate submitted (or timer finalized) the assessment. Scores may still be calculating. use candidate.passed / candidate.failed for scored outcomes.
external_id is omitted when not set on the invitation.
candidate.passed
Score meets or exceeds the assessment passing threshold (after grading).
candidate.failed
Same data shape as candidate.passed, with passed: false and a failing score.
candidate.violation
Proctoring signal recorded (fullscreen exit, copy/paste, screen share, webcam, or focus loss).
Invitation
invitation.created
A new assessment invitation was created (email may or may not have been sent).
enrollment_id / pipeline_enrollment_id appear only when the invite was created through a pipeline enrollment.
invitation.expired
Pending invitation expired before the candidate started.
Pipeline
Shared enrollment fields (pipeline.enrolled, pipeline.completed, pipeline.rejected, pipeline.held, pipeline.unheld):
pipeline.enrolled
pipeline.advanced
Enrollment moved to a later stage. Includes from_stage, to_stage, and next_stage_type.
pipeline.completed
Enrollment status became passed.
pipeline.rejected
pipeline.held / pipeline.unheld
Same shared enrollment fields. On hold, status is on_hold. After unhold, status returns to active (or another terminal status if catch-up applied).
Interview
Shared interview room fields:interview.scheduled
interview.started
Same shape; status reflects in-progress, started_at set.
interview.completed
Same shape; ended_at set after a normal finish.
interview.cancelled
Same shape; room cancelled by recruiter or API.
interview.no_show
Same shape; interview expired without completion.
interview.analysis_ready
Room fields plus analysis summary:
System
webhook.test
Connectivity ping from POST /webhooks/{id}/test/ (or health probes).
is_verified and activates the destination.