Creates an interview for a candidate using an existing or inline candidate/agent/job, scoped to the API key’s company. Respects company billing limits and subscription plans. Set isTest=true to create a test interview that immediately completes without consuming billing minutes.
candidate with
job: - A new Job entity is created in your company - A new
Candidate entity is created and automatically associated with the new jobjob at the DTO level to create a new job -
Reference existing: Use jobId at the DTO level to link to an existing
job - Within inline candidate: Use jobId inside candidate
for a more compact syntax when creating both candidate and job association -
No job: Omit all job fields to create a candidate in your talent pool
without job association (can be assigned later via the update candidate
endpoint) Priority: When
multiple job sources are provided, job takes precedence over
DTO-level jobId, which takes precedence over candidate.jobId.
XOR Validation: You cannot combine candidate.jobId with DTO-level
job fields (jobId or job) as this would be ambiguous. Choose one
method per request.400 Bad Request error if:job when you already have a candidate but don’t want to create a separate job resource first.
job together with an
existing candidateId, the API: - Creates a full Job entity in your
company using the inline fields. - Automatically associates the candidate
with the new job if they weren’t already linked. - Links the interview to this
newly created job. - jobId and job are mutually exclusive (XOR): -
Use either jobId (existing job) or job (inline job
definition), but not both.scheduleTime to start the interview immediately:
scheduleTime timestamp (max 30 days in the future):
candidateId, you can optionally specify a jobId to indicate which job the interview is for. This is especially important when a candidate is associated with multiple jobs.
jobId field is optional. The system will automatically use the candidate’s first job if available:
jobId to indicate which job the interview is for:
jobId you provide must: - Exist in the candidate’s
job_ids array - Belong to the same company as your API key If the jobId
doesn’t meet these requirements, the API will return a 400 Bad Request or
403 Forbidden error.jobId and job are XOR (mutually exclusive): - If you
provide jobId, you must omit job. - If you provide
job, you must omit jobId. - When job is used: - A new
job is created for your company. - That job is used as the interview’s
jobId. - The candidate is associated with that job automatically before the
interview is created.403 Forbidden if resources belong to different companies.
jobId returned in the interview
object.interview.completed and analysis.completed eventsisTest: true:
COMPLETED status immediatelyinterview.completed and analysis.completed webhook events are triggeredCOMPLETED immediatelyinterview.completed and analysis.completed eventsisTest: true in their metadata. They appear in interview lists and can be queried like normal interviews, but they do not affect billing or production metrics.API key for authentication using Bearer scheme
Existing candidate ID (XOR with candidate). Must exist and belong to the same company as the API key. Existence/company relationship is validated server-side.
"123e4567-e89b-12d3-a456-426614174000"
Job ID to associate the interview with (XOR with job). Required when candidate has multiple job assignments and no job is provided. Must belong to the API key's company.
"123e4567-e89b-12d3-a456-426614174000"
Existing agent ID (XOR with agent). Must exist and belong to the same company as the API key. Existence/company relationship is validated server-side.
"987e6543-e21b-12d3-a456-426614174000"
Scheduled time in ISO 8601 format (max 30 days in future)
"2025-11-20T10:00:00Z"
Job for inline creation (XOR with jobId). When provided, a new job will be created and used for the interview. Cannot be combined with jobId.
Candidate for inline creation (XOR with candidateId)
Agent for inline creation (XOR with agentId)
Custom metadata for the interview (max 10KB, 5 levels deep, 50 keys)
{
"externalInterviewId": "INT-789",
"interviewerNotes": "Focus on technical skills"
}If true, creates a test interview that immediately completes without consuming billing minutes. Triggers webhook events (interview.completed, analysis.completed) for testing webhook handlers.
false
OK (legacy; prefer 201)
Interview ID
"123e4567-e89b-12d3-a456-426614174000"
Candidate ID
"987e6543-e21b-12d3-a456-426614174000"
Agent ID
"456e7890-e12b-34d5-a678-901234567890"
Interview status
UNDEFINED, SCHEDULED, CANCELLED, FAILED, COMPLETED, IN_PROGRESS "SCHEDULED"
Scheduled time
"2025-11-20T10:00:00Z"
Created timestamp
"2024-11-16T10:30:00Z"
Updated timestamp
"2024-11-16T10:30:00Z"
Job ID associated with this interview, if any
"123e4567-e89b-12d3-a456-426614174000"
Interview duration in minutes
15
Finished date
"2025-11-20T10:15:00Z"
Custom metadata
{ "externalInterviewId": "INT-789" }Call attempt logs for this interview. Present for phone interviews, typically empty or undefined for online interviews.
Candidate analysis data. Present only if analysis has been generated.
Whether this is a test interview. Test interviews are created with isTest=true, immediately complete without consuming billing minutes, and are excluded from billing/usage summaries. Use test interviews for testing webhook handlers and integration flows.
false