LessRounds
  • Pricing
Log inStart free
LessRounds

An AI interviewer that holds the first interview with each job applicant. You share it as a link. Fewer rounds. Better hires.

hello@lessrounds.ai

Product

  • How it works
  • AI interviewer
  • Scoring
  • Interview builder
  • Interview links
  • Review
  • Candidate experience
  • Languages
  • Pricing

Solutions

  • All solutions
  • High-volume hiring
  • Campus hiring
  • Hourly hiring
  • Staffing agencies
  • Replace phone screens
  • All industries
  • Customer support
  • Retail

Resources

  • Guides
  • Screening questions
  • Email templates
  • Free calculators
  • Glossary
  • For candidates
  • API and webhooks
  • FAQ
  • Responsible AI
  • Security

Compare

  • All comparisons
  • Best AI interview software
  • HireVue alternatives
  • Spark Hire alternatives
  • Willo alternatives
  • LessRounds vs Ribbon

Company

  • About
  • Manifesto
  • Contact

Legal

  • Privacy
  • Terms
  • Candidate privacy
  • Data processing (DPA)
  • Subprocessors
  • Cookies
  • Acceptable use

© 2026 LessRounds is a product of OLN Labs, operated by OLOG N Solutions Technology LLP.

Bengaluru, India

  1. Home
  2. Developers
  3. API reference

API reference

API reference

Read your interviews, candidates, transcripts, recordings and files from your own tools. Every endpoint and every field, in plain words.

Base address https://api.lessrounds.ai/v1 · Updated October 3, 2026

On this page

  • Before you start
  • Answers
  • Pages of results
  • Errors
  • Limits
  • Changes to the API
  • Postman, Make and n8n
  • Endpoints
    • Check your key
    • List interviews
    • Get an interview
    • List candidates
    • Get a candidate
    • Get the interview transcript
    • Get a download link for the interview recording
    • Get the change history
    • Get a download link for a candidate's document
  • Objects

Before you start

  • The API only reads data. Nothing outside LessRounds can change statuses, invite candidates or delete anything.

  • Every address starts with https://api.lessrounds.ai/v1.

  • Create an API key in Settings → API & webhooks. Only admins can, and each key is shown once. Send it in the Authorization header on every request, never in the address:

    curl https://api.lessrounds.ai/v1/me \
      -H "Authorization: Bearer lr_live_…"
    
  • Keep keys on a server or inside your automation tool. Anyone with a key can read your candidates’ data. If one leaks, revoke it in the same place: it stops working on the next request.

Answers

Every answer is JSON. Successful ones look like this, with the result inside data:

{
  "success": true,
  "data": { "candidate": { "id": "V1StGXR8_Z5jdHi6Bmy2k", "name": "Riya Sharma" } },
  "timestamp": 1791019260,
  "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736"
}
  • Times are in UTC, like 2026-10-03T09:31:40Z.
  • A missing value is null, never left out, so your tool always sees every field.
  • Answers to form questions are always text. Yes/no answers are "Yes" or "No".

Pages of results

Lists come back a page at a time. limit sets the page size (25 by default; at most 25 for candidates and events, 100 for interviews). Each page has a next_cursor: pass it back as cursor to get the next page. It’s null on the last page.

Errors

StatusWhat it meansWhat to do
401The key is missing, wrong or revoked.Check the Authorization header and the key.
403Your company account is suspended.Contact us.
404There’s no such item in your company.Check the id.
422A filter isn’t valid. details.problems lists each problem.Fix the query.
429Too many requests.Wait the number of seconds in the Retry-After header, then try again.

Limits

  • 120 requests a minute for each key, and 300 for your whole company.
  • The API and webhooks are free. They use no credits.
  • The change history (GET /events) keeps 30 days.

Changes to the API

/v1 is a promise. We may add fields, endpoints and event types at any time, so ignore anything you don’t recognize. If we ever remove or rename something, it will be in a new version (/v2), announced at least 90 days ahead.

Postman, Make and n8n

Tools that read API descriptions can import https://api.lessrounds.ai/v1/openapi.json. It needs no key.

Endpoints

Every endpoint can also answer 401, 403 or 429, as explained under Errors.

Check your key

GET/v1/me

Returns your company and this key's name. Use it to test a connection.

What’s in data

FieldTypeWhat it is
companyobject
company.idstring
company.namestring
api_keyobject
api_key.idstring
api_key.namestring

Example

curl https://api.lessrounds.ai/v1/me \
  -H "Authorization: Bearer lr_live_…"

List interviews

GET/v1/interviews

Newest first. Deleted interviews are never listed.

Parameters

NameTypeWhat it does
statusoptionalstringOnly interviews with this status.One of: draft, active, paused, closed
limitoptionalintegerHow many to return (1–100, default 25).
cursoroptionalstringThe next_cursor of the previous page.

What’s in data

FieldTypeWhat it is
interviewslist of Interview
next_cursorstring or nullPass as cursor to get the next page; null on the last page.

422: A query parameter isn't valid; details.problems lists each one.

Example

curl https://api.lessrounds.ai/v1/interviews \
  -H "Authorization: Bearer lr_live_…"

Get an interview

GET/v1/interviews/{id}

One interview with its steps: form questions (their ids are the keys of a candidate's answers), the AI interview and the document asked for.

Parameters

NameTypeWhat it does
idin the addressstringThe id.

What’s in data

FieldTypeWhat it is
interviewInterview

404: Nothing with this id in your company.

Example

curl https://api.lessrounds.ai/v1/interviews/INTERVIEW_ID \
  -H "Authorization: Bearer lr_live_…"

List candidates

GET/v1/candidates

Candidate attempts as full candidate objects. By default only attempts the candidate submitted, most recently submitted first. With state=in_progress or state=all, newest started first. The order never changes while you page, so paging with next_cursor never skips anyone. Team members' previews are never listed.

Parameters

NameTypeWhat it does
interview_idoptionalstringOnly this interview's candidates.
statusoptionalstringOne or more statuses, separated by commas: in_progress, passed, needs_review, did_not_pass, shortlisted, on_hold, rejected, cancelled, abandoned.
stateoptionalstringsubmitted (default): finished every step. in_progress: still taking it. all: everything, including cancelled and unfinished attempts.One of: submitted, in_progress, all
submitted_afteroptionaltimeOnly candidates who submitted at or after this time (RFC 3339).
submitted_beforeoptionaltimeOnly candidates who submitted before this time (RFC 3339).
limitoptionalintegerHow many to return (1–25, default 25).
cursoroptionalstringThe next_cursor of the previous page.

What’s in data

FieldTypeWhat it is
candidateslist of Candidate
next_cursorstring or nullPass as cursor to get the next page; null on the last page.

422: A query parameter isn't valid; details.problems lists each one.

Example

curl https://api.lessrounds.ai/v1/candidates \
  -H "Authorization: Bearer lr_live_…"

Get a candidate

GET/v1/candidates/{id}

One candidate attempt, in any state.

Parameters

NameTypeWhat it does
idin the addressstringThe id.

What’s in data

FieldTypeWhat it is
candidateCandidate

404: Nothing with this id in your company.

Example

curl https://api.lessrounds.ai/v1/candidates/CANDIDATE_ID \
  -H "Authorization: Bearer lr_live_…"

Get the interview transcript

GET/v1/candidates/{id}/transcript

The AI interview, question by question. [] when there's no AI interview yet.

Parameters

NameTypeWhat it does
idin the addressstringThe id.

What’s in data

FieldTypeWhat it is
transcriptlist of TranscriptEntry

404: Nothing with this id in your company.

Example

curl https://api.lessrounds.ai/v1/candidates/CANDIDATE_ID/transcript \
  -H "Authorization: Bearer lr_live_…"

Get a download link for the interview recording

GET/v1/candidates/{id}/recording

Returns a link that works for 15 minutes. 404 when there's no recording.

Parameters

NameTypeWhat it does
idin the addressstringThe id.

What’s in data

FieldTypeWhat it is
recordingRecordingDownload

404: Nothing with this id in your company.

Example

curl https://api.lessrounds.ai/v1/candidates/CANDIDATE_ID/recording \
  -H "Authorization: Bearer lr_live_…"

Get the change history

GET/v1/events

What happened to your candidates, oldest first, for the last 30 days: candidate.submitted, candidate.scored, candidate.ready and candidate.status_changed. Save next_cursor and pass it back as after next time to get only what's new — it's returned even when nothing happened, and has_more says whether to ask again straight away. An event usually appears here within seconds of happening, and always within about a minute.

Parameters

NameTypeWhat it does
afteroptionalstringThe next_cursor of your previous call. Leave out to start from the oldest kept event.
typeoptionalstringOne or more event types, separated by commas.
interview_idoptionalstringOnly this interview's candidates.
limitoptionalintegerHow many to return (1–25, default 25).

What’s in data

FieldTypeWhat it is
eventslist of Event
next_cursorstringPass as after next time.
has_morebooleanMore events are waiting right now.

422: A query parameter isn't valid; details.problems lists each one.

Example

curl https://api.lessrounds.ai/v1/events \
  -H "Authorization: Bearer lr_live_…"

Get a download link for a candidate's document

GET/v1/files/{id}

For files in a candidate's documents list. Returns a link that works for 15 minutes.

Parameters

NameTypeWhat it does
idin the addressstringThe id.

What’s in data

FieldTypeWhat it is
fileFileDownload

404: Nothing with this id in your company.

Example

curl https://api.lessrounds.ai/v1/files/FILE_ID \
  -H "Authorization: Bearer lr_live_…"

Objects

The shapes the endpoints and webhooks use. Fields are always present; a missing value is null.

Candidate

One attempt at an interview.

FieldTypeWhat it is
idstring
attemptinteger1 for the first attempt; a retake is a new candidate with attempt 2.
namestring
emailstring
phonestring or null
interviewInterviewRef
statusstringOne of: in_progress, passed, needs_review, did_not_pass, shortlisted, on_hold, rejected, cancelled, abandoned
status_labelstring
rejection_reasonstring or null
started_attime
submitted_attime or nullWhen the candidate finished every step. Null while they're still taking it.
resultResult
ai_interviewAIInterview or nullNull when the interview has no AI step, or it hasn't started.
answersmap of AnswerForm answers keyed by the question's id (see the interview's steps.form.questions). The id never changes, even if the question is reworded.
documentslist of Document
dashboard_urlstringThe candidate's page in LessRounds (needs a LessRounds sign-in).

InterviewRef

FieldTypeWhat it is
idstring
titlestring

Result

FieldTypeWhat it is
statestringwaiting: not final yet (still taking it, or the score or recording is on its way). complete: the AI score and recording are in (the same moment credits are charged) — this can happen before the candidate finishes a later step. incomplete: final, but something is missing (see incomplete_reason). not_applicable: the interview has no AI step.One of: waiting, complete, incomplete, not_applicable
incomplete_reasonstring or nullnot_submitted: the attempt ended without being submitted (cancelled, left unfinished, or moved on by your team).One of: not_submitted, interview_not_finished, too_little_speech, no_answers, scoring_failed, recording_failed, not_delivered_in_time, other
scoreinteger or nullThe AI score, 0–100.
recommendationstring or nullOne of: strongly_recommend, recommended, consider, not_recommended
recommendation_labelstring or null
pass_markinteger or nullThe interview's pass mark, if it has one.
summarystring or null
strengthslist of string
areas_to_improvelist of string
skillsmap of integerSkill name → score (0–100).
highlightslist of Highlight
ended_for_conductbooleanThe AI interview was ended for repeated conduct violations.

Highlight

FieldTypeWhat it is
quotestringThe candidate's own words.
typestringOne of: strength, concern, insight, conduct
whystringOne sentence on why it matters.

AIInterview

FieldTypeWhat it is
modestringOne of: video, audio_only
languagestring
duration_secondsinteger or null
questions_askedinteger
questions_answeredinteger
recordingRecording
transcript_urlstring

Recording

FieldTypeWhat it is
statusstringprocessing: on its way (it can arrive up to about two days after the interview, even when the result is already final). failed: it didn't arrive or couldn't be processed. none: the candidate's device recorded nothing. deleted: removed after the retention period.One of: processing, ready, failed, none, deleted
urlstring or nullAPI link (send your key) that returns a download link. Null when there's nothing to download.

Answer

FieldTypeWhat it is
questionstring
answerstringAlways text. Yes/no answers are "Yes" or "No".

Document

FieldTypeWhat it is
idstring
labelstringWhat the interview asked for, e.g. "Your CV".
file_namestring
content_typestring or null
size_bytesinteger or null
urlstringAPI link (send your key) that returns a download link.

Interview

FieldTypeWhat it is
idstring
titlestring
statusstringOne of: draft, active, paused, closed
languagestring
access_modestringOne of: public, invite_only
pass_markinteger or null
candidate_linkstringThe link candidates open.
created_attime
published_attime or null
closed_attime or null
stepsInterviewSteps

InterviewSteps

FieldTypeWhat it is
formFormStep or null
ai_interviewAIStep or null
documentDocumentStep or null

FormStep

FieldTypeWhat it is
questionslist of FormQuestion

FormQuestion

FieldTypeWhat it is
idstring
textstring
typestringOne of: open_text, mcq, yes_no
requiredboolean
choiceslist of stringMultiple-choice options; [] for other types.

AIStep

FieldTypeWhat it is
typestringscripted: asks your questions word for word. ai_led: writes its own questions.One of: scripted, ai_led
modestringOne of: video, audio_only
languagestring
time_limit_minutesinteger
question_countinteger
skillslist of stringThe skills candidates are scored on.

DocumentStep

FieldTypeWhat it is
labelstring
descriptionstring
accepted_typeslist of string
requiredboolean

TranscriptEntry

FieldTypeWhat it is
indexinteger
questionstring
answerstring
speaking_secondsinteger

RecordingDownload

FieldTypeWhat it is
statusstringOne of: processing, ready, failed, none, deleted
content_typestring
duration_secondsinteger or null
download_urlstringWorks for 15 minutes, without your key.
expires_attime

FileDownload

FieldTypeWhat it is
idstring
namestring or null
content_typestring or null
size_bytesinteger or null
download_urlstringWorks for 15 minutes, without your key.
expires_attime

Event

One entry of the change history. submitted, scored and ready happen once per attempt; status_changed on every change after submission. Nothing is recorded before a candidate submits, or for previews.

FieldTypeWhat it is
idstringStays the same if you receive the event again — use it to ignore repeats.
typestringOne of: candidate.submitted, candidate.scored, candidate.ready, candidate.status_changed
created_attimeWhen it happened.
api_versionstringAlways "v1"
testbooleantrue for samples sent from LessRounds; real events are false.
changeStatusChange or nullOnly on candidate.status_changed.
candidateCandidateThe candidate's latest data — not frozen at the time of the event.

StatusChange

What a candidate.status_changed event changed, frozen when it happened.

FieldTypeWhat it is
fromstringPublic status code before the change.
tostringPublic status code after the change.
byChangedBy

ChangedBy

FieldTypeWhat it is
typestringOne of: team, ai, system, candidate
namestringFor team: the person's name.

Me

FieldTypeWhat it is
companyobject
company.idstring
company.namestring
api_keyobject
api_key.idstring
api_key.namestring

Error

FieldTypeWhat it is
successbooleanAlways false
errorstringError code: validation_error, not_found, auth_error, permission_denied, rate_limited, external_service_error, internal_error.
messagestringA plain-language explanation you can show to a person.
detailsanyExtra detail for some errors, e.g. the list of problems with a query.
timestampinteger
trace_idstringQuote this when you contact support.

Keep reading

  • Get a message when something happens to a candidateGet a message at your own web address when a candidate finishes, is scored or changes status. What each message contains, retries, and how to check it.
  • Send your interview results to other toolsSend each candidate’s score, answers and status to a Google Sheet, your applicant tracking system or your own software, with webhooks and a read-only API.
  • How we protect your dataWhere LessRounds stores interview data, who can see it, how sign-in works, how data is protected, and which outside companies help us process it.

Try LessRounds free today.

Start with 100 free credits, enough for about 20 interviews. No credit card or sales call needed.

Start freeBook a demo