Interviews
Schedule AI interviews, candidate join flow, and bot-driven in-room lifecycle.
Key APIs
| Method | Path | Purpose |
|---|---|---|
| GET | /v1/interviews/status-counts | Status tab counts |
| GET | /v1/interviews/credit-quote | Credit cost preview |
| GET | /v1/interviews | List interviews |
| POST | /v1/interviews | Schedule interview |
| GET | /v1/interviews/:id | Interview detail |
| PATCH | /v1/interviews/:id | Edit scheduled interview |
| POST | /v1/interviews/:id/cancel | Cancel and release credits |
| POST | /v1/interviews/:id/resend | Resend invitation |
| POST | /v1/interviews/:id/copy-link | Fresh join URL and password |
| DELETE | /v1/interviews/:id | Soft delete (admin) |
| GET | /v1/join/:token/peek | Pre-auth branding (public) |
| POST | /v1/join/:token/verify | Password → session token |
| GET | /v1/candidate/interview | Lobby (candidate session) |
| POST | /v1/candidate/consent | Recording consent |
| GET | /v1/candidate/status | Status poll |
| POST | /v1/candidate/bot-session | Bot WebSocket credentials |
Bot control plane: ten x-internal-token routes under /v1/bot/interviews/:id (context, start, runtime, disconnect, rejoin, complete, fail, error, proctoring, cost). See OpenAPI.
Business Rules
- Schedule freezes a snapshot of position, candidate, and resume text; credits are reserved up front.
- One active scheduled/in-progress interview per candidate; edit only while scheduled.
- Cancel releases credits; resend is rate-limited and rotates join credentials.
- Complete/fail from the bot enqueue async settlement and report generation.
Dependencies
- Daily.co, SQS, bot service (candidate JWT), credits module (reserve / release / settle)