Polling and statuses
Sync interviews with updatedSince, and what each status means.
The API doesn't send webhooks in v1. Poll the interview list with updatedSince:
cursor = last saved cursor or now - 1 day
every 5 minutes:
page = 1
loop:
GET /interviews?updatedSince={cursor}&limit=100&page={page}
for each interview: upsert by id; skip if (id, updatedAt) already processed
if page >= meta.totalPages: break
page += 1
cursor = max(updatedAt seen) # updatedSince is inclusive (>=), so duplicates are expected- With
updatedSince, results are sorted byupdatedAtascending, then byid. - Save the cursor only after a pass succeeds, so a crash replays instead of skipping.
- An empty result has
meta.totalPagesof0, which also ends the loop.
Note: an invite passing inviteExpiresAt doesn't change updatedAt, so it won't show up in updatedSince polls. Compare inviteExpiresAt with the current time yourself, or query GET /interviews?status=expired.
Statuses
Interview status
created ──▶ in_progress ──▶ completed
│ │
▼ ▼
expired abandoned| Status | Meaning |
|---|---|
created |
Invited; no answer recorded yet. The candidate may have opened the link. |
in_progress |
At least one answer recorded. answeredQuestions shows how many. |
completed |
All questions answered. completedAt is set. |
expired |
The invite passed inviteExpiresAt while still created, or the interview expired. |
abandoned |
The candidate left without finishing. |
source is api for invites created through this API and dashboard for candidates who applied through a position link.
approvalStatus (pending, approved or rejected) is the reviewer's decision in the Videcoot dashboard.
Analysis status (analysisStatus on the interview, status on /analysis)
not_requested ──▶ pending ──▶ processing ──▶ completed
└──▶ failed| Status | Meaning |
|---|---|
not_requested |
Nobody has requested analysis yet. |
pending |
Queued. |
processing |
Running. |
completed |
Done. result is available from GET /interviews/{id}/analysis. |
failed |
It didn't work. POST again to retry. |
When to request analysis: only once the interview's status is completed. Earlier requests return 409. Analysis is also available in the Videcoot dashboard; a request from either place counts, and the API won't queue it twice.