Webhook-Ereignis-Referenz
Nutzlaststrukturen, Header und Felddefinitionen für jedes Webhook-Ereignis.
Warum es wichtig ist
Jede Webhook-Lieferung verpackt ereignisspezifische Daten in dasselbe Hüllformat. Diese Referenz dokumentiert die genaue Nutzlaststruktur für jedes Ereignis, damit Sie sie sicher analysieren und darauf reagieren können.
Nutzlast-Hüllformat
{
"event": "application.submitted",
"created_at": "2025-01-15T14:30:00Z",
"data": { }
}
| Feld | Typ | Beschreibung |
|---|---|---|
event |
string | Der Ereignistyp, der diese Lieferung ausgelöst hat |
created_at |
string | ISO 8601-Zeitstempel des Ereigniszeitpunkts |
data |
object | Ereignisspezifische Nutzlast (variiert je nach Ereignistyp) |
Anfrage-Header
Jede Webhook-Anfrage enthält diese Header:
| Header | Beispiel | Beschreibung |
|---|---|---|
Content-Type |
application/json |
Immer JSON |
X-Webhook-Event |
application.submitted |
Der Ereignistyp |
X-Webhook-Signature |
a1b2c3d4... |
HMAC-SHA256 Hex-Digest |
X-Webhook-Timestamp |
2025-01-15T14:30:00Z |
ISO 8601-Zeitstempel für die Signatur |
User-Agent |
Kit-Webhooks/1.0 |
Identifiziert Kit als Absender |
Signaturverifizierungsdetails finden Sie unter Webhook-Sicherheit & Zustellung.
Bewerbungsereignisse
Ereignisse: application.submitted, application.rejected, application.advanced, application.withdrawn, application.offer_extended
{
"event": "application.submitted",
"created_at": "2025-01-15T14:30:00Z",
"data": {
"id": 42,
"candidate": {
"id": 7,
"name": "Jane Smith",
"email": "[email protected]"
},
"job_posting": {
"id": 3,
"title": "Senior Engineer"
},
"current_stage": "Applied",
"submitted_at": "2025-01-15T14:30:00Z",
"rejected": false,
"withdrawn": false,
"offered": false
}
}
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Bewerbungs-ID |
candidate.id |
integer | Kandidaten-ID |
candidate.name |
string | Vollständiger Name des Kandidaten |
candidate.email |
string | E-Mail-Adresse des Kandidaten |
job_posting.id |
integer | Stellenanzeigen-ID |
job_posting.title |
string | Titel der Stellenanzeige |
current_stage |
string | Name der aktuellen Pipeline-Phase |
submitted_at |
string | null | ISO 8601-Zeitstempel der Einreichung |
rejected |
boolean | Ob die Bewerbung abgelehnt wurde |
withdrawn |
boolean | Ob der Kandidat zurückgezogen hat |
offered |
boolean | Ob ein Angebot unterbreitet wurde |
Angebotsereignisse
Ereignisse: offer.accepted, offer.declined, offer.candidate_accepted, offer.candidate_declined, offer.revised
offer.accepted/offer.declined— ausgelöst, wenn ein Administrator ein Angebot annimmt oder ablehntoffer.candidate_accepted/offer.candidate_declined— ausgelöst, wenn ein Kandidat auf ein Angebot antwortetoffer.revised— ausgelöst, wenn ein Administrator das Angebot mit neuen Konditionen überarbeitet
{
"event": "offer.candidate_accepted",
"created_at": "2025-01-20T10:00:00Z",
"data": {
"id": 15,
"status": "candidate_accepted",
"details": "Senior Engineer — $150k base",
"extended_at": "2025-01-18T09:00:00Z",
"expires_at": "2025-01-25T23:59:59Z",
"accepted_at": null,
"declined_at": null,
"candidate": {
"id": 7,
"name": "Jane Smith",
"email": "[email protected]"
},
"job_posting": {
"id": 3,
"title": "Senior Engineer"
}
}
}
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Angebots-ID |
status |
string | Eines von: pending, accepted, declined, candidate_accepted, candidate_declined, expired |
details |
string | null | Angebotsdetails-Text |
extended_at |
string | null | Wann das Angebot unterbreitet wurde |
expires_at |
string | null | Wann das Angebot abläuft |
accepted_at |
string | null | Wann das Angebot von einem Administrator angenommen wurde |
declined_at |
string | null | Wann das Angebot von einem Administrator abgelehnt wurde |
candidate |
object | Kandidatendetails (gleiche Struktur wie bei Bewerbungsereignissen) |
job_posting |
object | Stellenanzeigendetails (gleiche Struktur wie bei Bewerbungsereignissen) |
Interview-Ereignisse
Ereignisse: interview.scheduled, interview.confirmed, interview.completed, interview.cancelled, interview.no_show
{
"event": "interview.scheduled",
"created_at": "2025-01-16T09:00:00Z",
"data": {
"id": 28,
"status": "scheduled",
"scheduled_at": "2025-01-20T14:00:00Z",
"duration_minutes": 60,
"candidate": {
"id": 7,
"name": "Jane Smith",
"email": "[email protected]"
},
"job_posting": {
"id": 3,
"title": "Senior Engineer"
}
}
}
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Interview-ID |
status |
string | Interview-Status (scheduled, confirmed, completed, cancelled, no_show) |
scheduled_at |
string | null | ISO 8601-Zeitstempel der geplanten Zeit |
duration_minutes |
integer | Interview-Dauer in Minuten |
candidate |
object | Kandidatendetails |
job_posting |
object | Stellenanzeigendetails |
Code-Assignment-Ereignisse
Ereignisse: code_assignment.submitted, code_assignment.auto_submitted
{
"event": "code_assignment.submitted",
"created_at": "2025-01-22T16:45:00Z",
"data": {
"id": 11,
"repo_url": "https://github.com/org/assignment-jane-smith",
"submitted_at": "2025-01-22T16:45:00Z",
"deadline_at": "2025-01-25T23:59:59Z",
"candidate": {
"id": 7,
"name": "Jane Smith",
"email": "[email protected]"
},
"job_posting": {
"id": 3,
"title": "Senior Engineer"
}
}
}
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Code-Einreichungs-ID |
repo_url |
string | GitHub-Repository-URL |
submitted_at |
string | null | Wann das Assignment eingereicht wurde |
deadline_at |
string | null | Assignment-Frist |
candidate |
object | Kandidatendetails |
job_posting |
object | Stellenanzeigendetails |
Überprüfungsereignisse
Ereignisse: review.submitted
{
"event": "review.submitted",
"created_at": "2025-01-23T11:00:00Z",
"data": {
"id": 9,
"recommendation": "strong_yes",
"reviewer": "Alex Johnson",
"candidate": {
"id": 7,
"name": "Jane Smith",
"email": "[email protected]"
},
"job_posting": {
"id": 3,
"title": "Senior Engineer"
},
"stage": "Technical Interview"
}
}
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Überprüfungs-ID |
recommendation |
string | Empfehlung des Prüfers |
reviewer |
string | Name des Prüfers |
candidate |
object | Kandidatendetails |
job_posting |
object | Stellenanzeigendetails |
stage |
string | Name der Pipeline-Phase, in der die Überprüfung eingereicht wurde |
Stellenanzeigenereignisse
Ereignisse: job_posting.published, job_posting.paused, job_posting.closed, job_posting.reopened
{
"event": "job_posting.published",
"created_at": "2025-01-10T08:00:00Z",
"data": {
"id": 3,
"title": "Senior Engineer",
"status": "published",
"location": "Remote",
"department": "Engineering",
"employment_type": "Full-time",
"published_at": "2025-01-10T08:00:00Z",
"closed_at": null,
"public_url": "https://careers.example.com/senior-engineer"
}
}
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Stellenanzeigen-ID |
title |
string | Berufsbezeichnung |
status |
string | Aktueller Status (published, paused, closed) |
location |
string | Stellenstandort |
department |
string | Abteilungsname |
employment_type |
string | Beschäftigungsart (Full-time, Part-time, Contract usw.) |
published_at |
string | null | Wann die Anzeige veröffentlicht wurde |
closed_at |
string | null | Wann die Anzeige geschlossen wurde |
public_url |
string | Öffentliche Karriereportal-URL für diese Anzeige |
Outreach-Ereignisse
Ereignisse: outreach.prospect.drafted, outreach.message.approved, outreach.message.sent, outreach.message.bounced, outreach.message.failed
Diese Ereignisse erfordern das Outreach-Add-on.
outreach.prospect.drafted
Wird ausgelöst, wenn die KI die Recherche eines Interessenten abgeschlossen und eine E-Mail entworfen hat.
{
"event": "outreach.prospect.drafted",
"created_at": "2026-03-12T10:00:00Z",
"data": {
"id": "op_abc123",
"campaign_id": "oc_def456",
"company_name": "Acme Corp",
"display_name": "Jane Smith",
"status": "drafted"
}
}
| Feld | Typ | Beschreibung |
|---|---|---|
id |
string | Interessenten-Präfix-ID |
campaign_id |
string | Kampagnen-Präfix-ID |
company_name |
string | Unternehmensname des Interessenten |
display_name |
string | Anzeigename des Interessenten |
status |
string | Interessentenstatus zum Zeitpunkt des Ereignisses |
Hinweis: Die E-Mail-Adresse des Interessenten wird aus Webhook-Nutzlasten ausgeschlossen (im Ruhezustand verschlüsselt).
outreach.message.approved / sent / bounced / failed
Wird ausgelöst, wenn eine Nachricht den Status approved, sent, bounced oder failed erhält.
{
"event": "outreach.message.sent",
"created_at": "2026-03-12T10:15:00Z",
"data": {
"id": "om_ghi789",
"campaign_id": "oc_def456",
"prospect_id": "op_abc123",
"step_number": 1,
"subject": "Quick question about Acme's hiring workflow",
"status": "sent",
"sent_at": "2026-03-12T10:15:00Z",
"approved_at": "2026-03-12T09:30:00Z",
"retry_count": 0,
"last_error_code": null
}
}
| Feld | Typ | Beschreibung |
|---|---|---|
id |
string | Nachrichten-Präfix-ID |
campaign_id |
string | Kampagnen-Präfix-ID |
prospect_id |
string | Interessenten-Präfix-ID |
step_number |
integer | Sequenzschritt-Nummer (1 = initial, 2+ = Nachfassungen) |
subject |
string | E-Mail-Betreffzeile |
status |
string | Eines von: approved, sent, bounced, failed |
sent_at |
string | null | Wann die E-Mail gesendet wurde |
approved_at |
string | null | Wann der Entwurf genehmigt wurde |
retry_count |
integer | Anzahl der versuchten Sendeversuche |
last_error_code |
string | null | SMTP-Fehlercode (vorhanden bei bounced/failed) |
Hinweis: Der E-Mail-Text der Nachricht wird aus Webhook-Nutzlasten ausgeschlossen (im Ruhezustand verschlüsselt).
Test-Ereignisse
Ereignisse: test.ping
Das test.ping-Ereignis wird gesendet, wenn Sie auf Test-Ping senden in den Webhook-Einstellungen klicken. Verwenden Sie es, um Endpunktkonnektivität und Signaturvalidierung zu überprüfen.
{
"event": "test.ping",
"created_at": "2025-01-15T14:30:00Z",
"data": {}
}