Configure webhooks to receive real-time event notifications.
Webhooks allow you to receive real-time notifications when events occur in your TalentScreen account. Use them to trigger automated workflows in your systems.
/webhooks| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Required | HTTPS URL to receive webhook events |
| events | array | Required | Event types to subscribe to |
| secret | string | Optional | Secret for webhook signature verification (auto-generated if omitted) |
| description | string | Optional | Description for internal reference |
{
"url": "https://api.yourcompany.com/webhooks/talentscreen",
"events": ["exam.completed", "candidate.invited", "result.available"],
"description": "Production webhook for ATS integration"
}| Event | Description |
|---|---|
| candidate.created | New candidate added |
| candidate.invited | Candidate invited to exam |
| exam.started | Candidate started exam |
| exam.completed | Candidate completed exam |
| result.available | Exam results available |
| application.created | New job application |
| application.status_changed | Application status updated |
| interview.completed | AI interview completed |
| export.completed | Data export ready |
| usage.threshold_reached | Usage threshold reached |
All webhook events include a standard payload structure with event type, timestamp, and event-specific data.
{
"id": "evt_bcd890",
"event": "exam.completed",
"timestamp": "2024-02-12T09:15:00Z",
"data": {
"result_id": "result_ghi789",
"candidate_id": "cand_xyz789",
"exam_id": "exam_abc123",
"score": 87.5,
"status": "passed",
"completed_at": "2024-02-12T09:15:00Z"
}
}Each webhook request includes an X-TalentScreen-Signature header. Verify this signature to ensure the request came from TalentScreen.
const crypto = require('crypto');
function verifyWebhook(payload, signature, secret) {
const hmac = crypto.createHmac('sha256', secret);
const digest = hmac.update(payload).digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(digest)
);
}/webhooks/webhooks/{webhook_id}Webhook endpoints must return 2xx status within 5 seconds. Failed deliveries are retried with exponential backoff for up to 24 hours.
Was this article helpful?