This is a Backend SDK method, not an HTTP endpoint. Run it on your server — typically every 30 seconds.
Signature
client.getWebhookEvents(options?: GetWebhookEventsOptions): Promise<GetWebhookEventsResult>
Parameters
Maximum number of events to return per call. Server cap is 100.
Unix timestamp in milliseconds. Only returns events stored after this time. Useful for paginating across a specific time window.
Return value
Total events still in the queue after this batch. If greater than 0, call again to drain the rest.
const { events, pendingCount } = await client.getWebhookEvents({ limit: 50 });
console.log(`Got ${events.length} events, ${pendingCount} still pending`);
for (const event of events) {
await saveToYourDatabase(event);
}
if (events.length) {
await client.acknowledgeWebhookEvents(events.map(e => e.eventId));
}
{
"events": [
{
"eventId": "evt_01J9XYZABC",
"event": "assessment.completed",
"assessmentId": "asmt_xyz789",
"candidateId": "cand_abc123",
"candidateName": "Priya Sharma",
"candidateEmail": "priya@example.com",
"assessmentName": "Full Stack Developer Assessment",
"jobTitle": "Senior Software Engineer",
"score": 78,
"totalMarks": 100,
"passMarks": 60,
"passed": true,
"status": "completed",
"submittedAt": "2026-06-09T10:30:00.000Z",
"durationMinutes": 45,
"reportUrl": "https://platform.smartai.app/reports/evt_01J9XYZABC",
"proctoring": {
"score": 88,
"violationCount": 2
},
"storedAt": "2026-06-09T10:31:00.000Z"
}
],
"pendingCount": 3
}
Recommended polling interval
| Requirement | Interval |
|---|
| Near-real-time results | 10 seconds |
| Standard (recommended) | 30 seconds |
| Low-traffic / batch processing | 5 minutes |
Do not poll more frequently than every 5 seconds — the platform rate-limits aggressive polling.