Skip to main content

Event Payloads

All webhook events share a common structure with resource-specific data.

Event Envelope​

{
"event": "application.created",
"event_id": "evt_abc123",
"created_at": "2025-01-15T10:30:00Z",
"account_id": 12345,
"data": {
// Resource-specific payload
}
}
FieldDescription
eventEvent type (e.g., application.created)
event_idUnique identifier for this delivery
created_atISO 8601 timestamp
account_idYour Kula account ID
dataResource-specific payload

Event Types​

Candidate Events​

EventDescription
candidate.createdNew candidate added
candidate.updatedCandidate profile updated

Application Events​

EventDescription
application.createdNew application submitted
application.updatedApplication updated
application.stage_changedApplication moved to new stage
application.rejectedApplication rejected
application.hiredCandidate hired
application.screenedAI screening completed for an application

Job Events​

EventDescription
job.createdNew job created
job.updatedJob updated
job.approval_requestedJob sent for approval
job.approvedJob approved
job.rejectedJob rejected
job_posting.publishedJob posting went live
job_posting.updatedJob posting updated

Requisition Events​

EventDescription
requisition.createdNew requisition created
requisition.updatedRequisition updated
requisition.openedRequisition opened
requisition.filledRequisition filled
requisition.closedRequisition closed
requisition.approval_requestedRequisition sent for approval
requisition.approvedRequisition approved
requisition.rejectedRequisition rejected

Offer Events​

EventDescription
offer.createdNew offer created
offer.updatedOffer updated
offer.approval_requestedOffer sent for approval
offer.approvedOffer approved
offer.rejectedOffer rejected in approval
offer.deletedOffer removed
offer.acceptedCandidate accepted offer
offer.declinedCandidate declined offer

Interview Events​

EventDescription
interview.availability.computedAsync interviewer-availability search completed (alternative to polling GET /v1/interviews/interviewers_availability/{poll_id})
interview.event.createdCalendar event for an interview was created — fires after async provisioning completes, conference URL is populated
interview.event.updatedCalendar event was updated (reschedule, location/host change, interviewer change, AI flag toggle)
interview.event.cancelledCalendar event was cancelled — covers both API/UI cancel and organizer-deletes-from-calendar
interview.completedInterview ended
interview.transcript.completedInterview transcript ready
interview.attendee.respondedInterview attendee's RSVP changed (accepted, declined, tentative). Bulk system resets are suppressed

Common Data Objects​

IdNameObject​

{
"id": 123,
"name": "Engineering"
}

UserObject​

{
"id": 456,
"name": "Jane Smith",
"email": "jane@example.com"
}

LocationObject​

{
"city": { "id": 1, "name": "San Francisco" },
"state": { "id": 2, "name": "California" },
"country": { "id": 3, "name": "United States" }
}

Example Payloads​

See the Webhooks API reference for complete payload examples for each event type.