Webhooks
Receive real-time HTTP POST notifications when interviews are completed. Build powerful integrations and automate your hiring workflow.
Quick Start
Configure your webhook URL
Add a global URL in Settings → Global Interview Settings or set a per-interview override in the Settings tab.
Handle incoming requests
Your endpoint should return a 2xx status code within 10 seconds.
Events
interview.completedWebhooks are only sent for completed interviews that pass quality checks. Demo, failed, and abandoned interviews are excluded.
Payload
{
"event": "interview.completed",
"apiVersion": "2024-01-01",
"timestamp": "2024-12-27T00:25:50.431Z",
"data": {
"interview": {
"id": "c04f53d2",
"title": "Senior Software Engineer",
"companyName": "Acme Corp",
"dashboardUrl": "https://app.talentsprout.ai/dashboard/interviews/c04f53d2"
},
"candidate": {
"id": "6907d2602dab93276cdedb2a",
"firstName": "John",
"lastName": "Doe",
"fullName": "John Doe",
"email": "john.doe@example.com",
"phone": "+1234567890",
"profileUrl": "https://app.talentsprout.ai/dashboard/..."
},
"session": {
"id": "694f268cd70bb7447a4e4d4e",
"token": "3f54f82d...",
"status": "completed",
"startedAt": "2024-12-27T00:21:36.836Z",
"completedAt": "2024-12-27T00:25:46.490Z",
"durationMinutes": 4.16,
"recordingUrl": "https://...",
"resumeUrl": null
},
"scores": {
"overall": 85,
"interview": 85,
"resume": null
},
"evaluation": {
"performanceSummary": "Strong candidate with excellent communication...",
"performance": {
"communicationSkills": { "name": "Communication Skills", "score": 88, "notes": "..." },
"problemSolving": { "name": "Problem Solving", "score": 82, "notes": "..." }
},
"summary": {
"overview": "Candidate brings strong technical background...",
"strengths": ["Strong communication", "Technical expertise"],
"concerns": ["Limited experience with specific stack"],
"tags": ["senior", "leadership"]
}
},
"transcript": [
{ "timestamp": "2024-12-27T00:21:36.836Z", "speaker": "agent", "text": "Hello! Welcome..." },
{ "timestamp": "2024-12-27T00:21:42.000Z", "speaker": "candidate", "text": "Thank you..." }
]
}
}Field Reference
| Field | Description |
|---|---|
event | Event type |
apiVersion | API version |
timestamp | ISO 8601 timestamp |
data.interview | Interview details & dashboard URL |
data.candidate | Candidate info & profile URL |
data.session | Session timing & recording URL |
data.scores | Overall, interview & resume scores |
data.evaluation | Performance metrics & summaries |
data.transcript | Full conversation transcript |
Note: Optional fields like resumeEvaluation, language, and customScores are included only when applicable.
Request Headers
| Header | Value |
|---|---|
Content-Type | application/json |
User-Agent | TalentSprout-Webhooks/1.0 |
X-TalentSprout-Event | interview.completed |
Best Practices
Respond quickly
Return a 2xx status code within 10 seconds
Process async
Handle heavy operations asynchronously
Deduplicate
Use session.id to handle potential retries
Use HTTPS
Only secure endpoints are supported
Testing
Use webhook.site to generate a temporary test endpoint and inspect incoming payloads.
Preview mode interviews do not trigger webhooks. Complete a real interview to test your integration.
Need help with your integration?
Our team is here to help you get set up.