Two ways to do everything. You can build and run interviews entirely in the dashboard (no code) or over the API. Each concept page below shows both a Dashboard and an API path for creating it — pick whichever fits you. Prefer a guided walkthrough? Start with How it works, end to end.
In plain English
Think of how a real company interviews someone:- A Role is the job you’re hiring (or assessing) for — “Customer Support Specialist”, “ServiceNow Engineer”, “Account Executive”. It says what good looks like.
- A Round is one step in that job’s interview — a phone screen, a technical round, a final. A Role can have one Round or several.
- An Interviewer is the persona that runs a Round — an AI persona with a scorecard (e.g. an “ITOM Specialist” or a “Friendly Screener”). You define it as part of creating the Round — the two are made together in one step.
A Role has Rounds; each Round is created together with its Interviewer.You don’t need to be technical to set this up — you describe the Role in plain words and add the Rounds you want, defining each Round’s Interviewer as you go. Then you add people and the AI does the interviews.
The mental model
Configuration flows top-down. You define how the AI behaves, what it assesses, and which steps a candidate goes through — then attach people and run sessions.Each Round is created together with its Interviewer. One Role can have many Rounds; one participant can run many sessions. (To run a new Round on an interviewer another Round already uses, reference that round’s
interviewer_id.)Interviewer
(API field name:agent_profile)
The interviewer’s personality and judgment. An Interviewer decides how the AI introduces itself, how hard it pushes, and how it converts a conversation into a score. You define it as part of creating a Round — it controls that step’s interview.
Key fields
string
required
Display name, e.g.
"Senior Engineering Interviewer".string
required
How the AI introduces itself at the start, e.g.
"Alex, a senior engineer at Acme." Sets the candidate’s first impression and the AI’s voice.hiring | admissions | training | custom_api
required
Selects the recommendation vocabulary —
hiring yields hire / no-hire, training yields ready / needs practice, and so on.array
required
The scoring axes:
[{ name, description, weight }]. Weights must sum to 100. This is the rubric the AI grades against.object
Conversation behavior:
tone (friendly · professional · strict · challenging), style (structured · conversational · adaptive), difficulty (easy · medium · hard · adaptive), and probingDepth (low · medium · high).object
How scores are computed:
scale (0-10 · 0-5 · 0-100), scoringMethod (weighted_average · rule_based), and optional recommendationLogic.object
Grounding for the AI:
organizationContext, domainContext — e.g. company background or domain focus.object
What the scorecard contains:
includeTranscript, includeScoreBreakdown, includeRecommendation, includeImprovementFeedback (all default true).How it changes per use case
- Hiring
- Training
- Mock interview
Calibrated, slightly challenging, weighted toward role skills.
Role
(API field name:evaluation_template)
The blueprint for what you’re hiring or assessing for. A Role describes what the AI should determine and the bar for success. Every participant and session belongs to a Role.
Key fields
string
required
Display name, e.g.
"Senior Backend Engineer".hiring | admissions | training | custom_api
required
The category, which drives the recommendation vocabulary and defaults.
string
required
The single thing the interview must determine, e.g. “Assess whether the candidate can own backend system design.”
enum
The verdict label:
hire_no_hire, admit_reject, pass_fail, ready_needs_training, certified_not_certified, or custom. Auto-derived from use_case if omitted.string[]
Technical skills to probe, e.g.
["Go", "PostgreSQL", "Distributed Systems"].string[]
Behavioral traits, e.g.
["Communication", "Ownership"].string
What the candidate must demonstrate to pass — your bar, in plain language.
beginner | intermediate | advanced | expert | adaptive
Question depth (default
intermediate).enum
live_ai_interview, async_interview, roleplay_simulation, practice_session, or manual_review. Sets the interview format.How it changes per use case
Round
(API field name:evaluation_stage)
A single step within a Role’s pipeline — e.g. Phone Screen → Technical → Final. Each Round runs its own interview with its own Interviewer, duration, and pass threshold.
Key fields
uuid
required
The Role this Round belongs to.
string
Display name shown to candidates, e.g.
"Technical Screen".enum
ai_interview, roleplay_simulation, practice_session, manual_review, async_assessment, or final_review.object
The Interviewer that conducts this Round, defined inline (created with the Round). This is where the persona and rubric plug in. (Or
interviewer_id to reuse an existing one.)integer
Position in the pipeline (0-based).
number (0–100)
Minimum score required to pass this stage.
boolean
Whether a candidate can retry on failure (default
false).enum
What happens on completion:
auto_advance_if_passed, require_reviewer_approval, auto_reject_if_failed, auto_assign_next_stage, or none.How it changes per use case
- Hiring
- Training
- Mock interview
Multiple gated stages, rising bar, human approval before the final round.
Participant
The person being evaluated — a candidate, trainee, or student. Create the participant first, then schedule sessions for them. A participant is scoped to a Role, so the same email can exist as separate participants under different Roles.Key fields
string
required
Full name.
string
required
Email address — unique per account. The interview invite is sent here.
uuid
The Role this participant is being evaluated against.
string
Your ATS / LMS / system ID. Echoed back in every webhook payload, so you can reconcile results without storing our IDs.
object
{ title, organization, experienceLevel, location } — context the AI uses to tailor questions.object
{ skills: string[], education, languages: string[] }.url
Publicly accessible resume — triggers vector extraction so the AI can reference it during the interview.
string[]
Arbitrary labels for filtering, e.g.
["senior", "remote"].How it changes per use case
- Hiring
- Training
- Mock interview
A candidate sourced from your ATS, with resume and role context.
Session
The output — one AI interview for one participant, producing audio, a transcript, per-dimension scores, a recommendation, and authenticity signals. You schedule a session against a participant + template; the invite email goes out automatically. See Sessions.Putting it together
1
Create a Role
Describe the job/assessment and its objective.
2
Add Rounds (with their Interviewers)
Add one or more Rounds to the Role. Each Round defines its own Interviewer inline — persona, dimensions, tone, scoring — created together with the Round.
3
Add participants
Create the people to evaluate, bound to the Role.
4
Add participants
Create the people to evaluate, bound to the Role.
5
Schedule sessions
Schedule a session per participant — invites send automatically, scorecards arrive via webhook.
Where to next
Quickstart
Run your first AI interview in 5 minutes.
Authentication
Generate API keys and authenticate requests.
API Reference
Every endpoint with request builders and response examples.
Documentation is versioned with the platform — what you read here matches what’s deployed.