Endpoints
Complete reference for all InsightAgent API endpoints.
Interviews
List Interviews
GET /api/interviewsQuery parameters (optional):
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
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 beFULL_INTERVIEWorVETTING_INTERVIEWtitle- Interview titlecallSubject- Subject/topic for the callquestions- Array with at least one questionexpertData.name- Expert's full nameexpertData.title- Expert's job titleexpertData.employmentHistory- At least one employment entryexpertData.employmentHistory[].title- Job title for each employment entryexpertData.employmentHistory[].company- Company name for each employment entry
Status:
status- Explicitly set the interview status toNOT_SCHEDULEDorSCHEDULED. If omitted, status is derived fromscheduledAt(set →SCHEDULED, omitted →NOT_SCHEDULED).
Agent Selection:
agentGroupId- UUID of the agent group to use for this interview. Get available agent group IDs fromGET /api/agents. If omitted, the account's default agent for the giveninterviewTypeis used.
Custom Variables:
customVariables- Key-value pairs for agent prompt variablesRequired variables (defined in Settings → Variables) must be provided
Returns
400 MISSING_REQUIRED_VARIABLESerror 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_PROGRESSorCOMPLETED(during processing)Returns
400if interview is not in progressEvents 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:
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 requirements409 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
namefield cannot be changed after creationisRequiredcan only be changed fromtruetofalse(not vice versa)
Error responses:
400 CANNOT_MAKE_VARIABLE_REQUIRED- Cannot change optional variable to required404- 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 required404— 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:
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:
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