Skip to main content
These ready-to-use Python examples cover the most common Kovi integration patterns. Copy, adapt, and run them directly in your hiring pipeline.
Store all generated interviewUrl values in your database or ATS so you can track which candidates have completed their interviews.

Basic Interview Scheduling

The example below schedules a System Design interview for a mid-to-senior AI Engineer. It is the fastest way to verify your integration end-to-end.
basic_schedule.py

Initial Screening for Multiple Candidates

Use a loop to schedule screening interviews for an entire candidate shortlist in one script run. Each iteration schedules independently so a single failure does not block the rest of the batch.
bulk_screening.py
Check your available credit balance before running a bulk loop. Scheduling 50 interviews requires 50 credits. Running out of credits mid-loop will cause the remaining candidates to fail. Top up at techeval.ai before kicking off large batches.

System Design Interview

Schedule a Senior to Architect level System Design round for a candidate being evaluated on distributed systems and cloud infrastructure.
system_design.py

Error Handling Best Practices

Robust error handling is essential when Kovi is embedded in an automated hiring pipeline. Follow these patterns to keep your integration reliable.

Key error handling rules

  • Always log the full exception message. Silent failures in bulk pipelines are nearly impossible to debug retroactively.
  • Do not retry immediately on 429 (rate limit). Use exponential back-off (2 s, 4 s, 8 s…) between retry attempts.
  • Check your credit balance before bulk scheduling. Running out of credits mid-batch leaves some candidates without an interview link and no automatic notification to you.
  • Do not retry 401 or 402 errors. These require manual intervention — a bad API key won’t fix itself on retry, and credits won’t appear automatically.
  • Persist every interviewUrl you receive. If your process crashes after scheduling, you will need the stored URLs to avoid double-scheduling candidates.