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

Status:

  • status - Explicitly set the interview status to NOT_SCHEDULED or SCHEDULED. If omitted, status is derived from scheduledAt (set → SCHEDULED, omitted → NOT_SCHEDULED).

Agent Selection:

  • agentGroupId - UUID of the agent group to use for this interview. Get available agent group IDs from GET /api/agents. If omitted, the account's default agent for the given interviewType is used.

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

Webhooks:

  • notifications - Array of webhook subscriptions to notify when the interview completes. See Webhooks for full details.

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


API Keys

Manage API keys for programmatic access. All endpoints require authentication via Bearer token.

List API Keys

Returns all API keys for the authenticated user.

Response:

Create API Key

Body:

Response (201 Created):

The full API key is returned only once at creation time. Store it securely.

Error responses:

  • 400 — Name is required, or maximum of 5 active keys reached

Rename API Key

Body:

Error responses:

  • 400 — Name is required

  • 404 — API key not found

Revoke API Key

Revokes the key immediately. Any requests using this key will be rejected.

Error responses:

  • 404 — API key not found


Auth

Get Current User

Returns the authenticated user's profile and account information.

Response:


Webhooks (Post-Interview)

Receive a notification when an interview completes. Webhooks are configured per interview via the notifications field in the Create Interview request.

Setup

Add a notifications array when creating an interview:

Field
Type
Description

endpoint

string

The URL to receive the webhook POST

attributes.method

string

HTTP method (defaults to POST)

attributes.headers

object

Custom headers sent with each request

You can configure multiple webhook endpoints per interview.

Webhook Payload

When the interview completes, each configured endpoint receives:

Field
Type
Description

interviewId

string

UUID of the completed interview

success

boolean

Whether the interview completed successfully

completedAt

string

ISO8601 timestamp of completion

transcriptionUrl

string

URL to fetch the full transcript (requires API key)

audioUrl

string

URL to fetch the audio recording (requires API key)

The payload is sent as Content-Type: application/json.

Authentication

There is no platform-level request signing (HMAC, etc.) at this time. To secure your webhook endpoint, pass your own authentication headers via attributes.headers — these are included with every webhook request.

Retries

Webhooks are attempted once. If your endpoint is unreachable or returns an error, the notification is marked as failed with no automatic retry. We recommend ensuring high availability on your receiving endpoint, or polling GET /api/interviews/{id} as a fallback.

Last updated