Endpoints

Complete reference for all InsightAgent API endpoints.

Interviews

List Interviews

GET /api/interviews

Query parameters (optional):

Parameter
Type
Description

page

number

Page number (1-indexed)

limit

number

Results per page (max: 100)

status

string

Filter by status: NOT_SCHEDULED, SCHEDULED, IN_PROGRESS, COMPLETED

search

string

Search by interview title or expert name (case-insensitive)

Note: The IN_PROGRESS status filter also includes interviews with DIALING status.

When page and limit are provided, returns paginated response:

{
  "data": [...],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 150,
    "totalPages": 8
  }
}

Without pagination parameters, returns a plain array of interviews.

Get Interview

Returns the full interview details including sessions with media URLs and AI-generated analysis.

Response:

Analysis Fields

Field
Type
Description

summary

string | null

AI-generated executive summary of the interview

quotes

array | null

Notable quotes extracted from the expert's responses

quotes[].quote

string

Exact verbatim quote from the transcript

quotes[].speaker

string

Always expert (agent quotes are filtered out)

quotes[].context

string

Why this quote is significant

quotes[].timestamp_secs

number

Timestamp in seconds

analysisGeneratedAt

string | null

ISO8601 datetime when analysis was generated

Analysis is automatically generated when an interview completes. Fields are null for interviews that haven't been analyzed yet.

The sessions array contains all interview sessions with signed media URLs (valid for 1 hour). Use the convenience endpoints below for simpler access to the primary session's media.

Create Interview

Body:

Required fields:

  • interviewType - Must be FULL_INTERVIEW or VETTING_INTERVIEW

  • title - Interview title

  • callSubject - Subject/topic for the call

  • questions - Array with at least one question

  • expertData.name - Expert's full name

  • expertData.title - Expert's job title

  • expertData.employmentHistory - At least one employment entry

  • expertData.employmentHistory[].title - Job title for each employment entry

  • expertData.employmentHistory[].company - Company name for each employment entry

Custom Variables:

  • customVariables - Key-value pairs for agent prompt variables

  • Required variables (defined in Settings → Variables) must be provided

  • Returns 400 MISSING_REQUIRED_VARIABLES error if required variables are missing

Update Interview

Delete Interview

Get Transcription

Returns the transcript from the primary session as an array of entries:

For interviews with multiple sessions, use the sessions array from the Get Interview endpoint to access individual session transcripts via their transcriptUrl.

Get Live Transcript

Returns cached transcript events for an in-progress interview. Use this to observe the conversation in real-time.

Response:

Notes:

  • Available for interviews with status IN_PROGRESS or COMPLETED (during processing)

  • Returns 400 if interview is not in progress

  • Events are cached temporarily during the interview

Get Audio

Returns a signed URL for the audio recording from the primary session.

Response:

The signed URL is valid for 1 hour. For interviews with multiple sessions, use the sessions array from the Get Interview endpoint to access individual session recordings.

Get Interview Stats

Returns aggregate counts of interviews by status for the current account.

Response:

Field
Description

notScheduled

Interviews created but not yet scheduled

scheduled

Interviews scheduled for a future time

inProgress

Interviews currently active (includes DIALING status)

completed

Finished interviews

total

Total interview count

abandoned

In-progress interviews with no activity for 5+ minutes


AI Agents

List Agents

Returns all agents available to the current account, including system default agents and custom agents.

Response:

Get Agent

Retrieve a specific agent configuration by its unique identifier.

Response:

Create Agent

Body:

Supported languages: en, es, fr, de, it, pt, pl, hi, zh, ko, ru, nl, tr, sv, id, fil, ja, uk, el, cs, fi, ro, da, bg, ms, sk, hr, ar, ta, vi, hu, no

Returns 202 Accepted - agent creation is asynchronous and creates both PHONE and WEB platform versions.

Update Agent

Update an existing agent's configuration. Creates a new version in the agent's history.

Delete Agent

Soft delete an agent (marked as inactive, not permanently removed).

Activate Agent

Set an agent as the default for its type (affects both PHONE and WEB platforms).

Get Agent Variables

Returns variables used by an agent's prompt, with their definitions and requirements.

Response:


Variables

Manage custom variables for agent prompts.

List Variables

Returns all custom variables defined for your account.

Response:

Create Variable

Body:

Variable name rules:

  • Must start with a letter (a-z, A-Z)

  • Can contain letters, numbers, and underscores

  • Must be unique within the account

Response: 201 Created with the created variable.

Error responses:

  • 400 INVALID_VARIABLE_NAME - Name doesn't meet format requirements

  • 409 VARIABLE_NAME_EXISTS - A variable with this name already exists

Get Variable

Returns a specific variable with its agent usage information.

Update Variable

Body:

Notes:

  • The name field cannot be changed after creation

  • isRequired can only be changed from true to false (not vice versa)

Error responses:

  • 400 CANNOT_MAKE_VARIABLE_REQUIRED - Cannot change optional variable to required

  • 404 - Variable not found

Delete Variable

Deletes a variable. Variables currently used by agent prompts cannot be deleted.

Error responses:

  • 400 VARIABLE_IN_USE - Variable is referenced in agent prompts (includes list of agents)

  • 404 - Variable not found


Auth

Get Current User

Returns the authenticated user's profile and account information.

Response:


Webhooks (Post-Interview)

Configure webhooks to receive notifications after interviews complete:

Webhook Payload

Webhook subscriptions are configured per interview via the postNotifications field.

Last updated