Interviews
Retrieve video recordings, transcripts, screener responses, and participant metadata for interviews.
Returns a paginated list of all interviews for a project, regardless of status. Each record includes the current status, video recording URL, and participant metadata. Transcripts are optional — omit them for lightweight responses when you only need the video or participant data.
If you need a project_id, use the Projects endpoint to list your organisation's projects. For aggregated AI analysis across all interviews, see Reports.
Endpoint
Authentication
x-api-key headerPath Parameters
| Name | Type | Description |
|---|---|---|
project_id* | string | — |
Query Parameters
| Name | Type | Description |
|---|---|---|
transcripts | boolean | Include the full structured transcript in each record. Transcripts can be large — only request when needed. |
screener | boolean | Include screener questions and participant answers in each record. |
interview_id | string | Filter to a single interview by its ID (`id` field on each interview record). |
page | integer | Page number (1-indexed). |
limit | integer | Records per page. Maximum 100. |
Headers
| Name | Type | Description |
|---|---|---|
x-api-key | string | — |
Responses
| Field | Type | Description |
|---|---|---|
itemsrequired | object[] | — |
↳ idrequired | string | — |
↳ statusrequired | string | — |
↳ completed_atrequired | string | Completed At |
↳ duration_minutesrequired | integer | Duration Minutes |
↳ video_urlrequired | string | Video Url |
↳ video_url_expires_atrequired | string | Video Url Expires At |
↳ thumbnail_urlrequired | string | Thumbnail Url |
↳ participantrequired | object | — |
↳ transcriptrequired | object[] | — |
↳ screenerrequired | object | — |
totalrequired | integer | — |
pagerequired | integer | — |
limitrequired | integer | — |
has_morerequired | boolean | Has More |
Example request
curl "https://external-api.prod.insightscompany.io/v1/projects/<project_id>/interviews?page=1&limit=20" \
-H "x-api-key: <api_key>"Fetch a single interview by its ID:
curl "https://external-api.prod.insightscompany.io/v1/projects/<project_id>/interviews?interview_id=<interview_id>" \
-H "x-api-key: <api_key>"With transcripts included:
curl "https://external-api.prod.insightscompany.io/v1/projects/<project_id>/interviews?transcripts=true&limit=5" \
-H "x-api-key: <api_key>"With screener responses included:
curl "https://external-api.prod.insightscompany.io/v1/projects/<project_id>/interviews?screener=true" \
-H "x-api-key: <api_key>"Example response
{
"has_more": true,
"items": [
{
"completed_at": "2026-07-09T14:32:00Z",
"duration_minutes": 18,
"id": "a1b2c3d4-0000-0000-0000-000000000000",
"participant": {
"email": "jane@example.com",
"name": "Jane Smith"
},
"status": "COMPLETE",
"thumbnail_url": "https://cdn.example.com/thumbnails/a1b2c3d4.jpg",
"video_url": "https://cdn.example.com/recordings/a1b2c3d4.mp4",
"video_url_expires_at": "2026-07-10T14:32:00Z"
}
],
"limit": 20,
"page": 1,
"total": 42
}Pagination
Results are ordered by completed_at descending — newest first. Increment page until has_more is false:
curl "https://external-api.prod.insightscompany.io/v1/projects/<project_id>/interviews?page=2&limit=20" \
-H "x-api-key: <api_key>"Transcripts
Each transcript turn has a role of "AI" (the interviewer) or "User" (the participant), the spoken text, and start/end timestamps relative to the recording.
Transcripts are excluded by default because they can be large. Only request them when you need them — for bulk exports or processing pipelines, fetch without transcripts first, then retrieve individual records as needed.
Screener responses
If the project has a screener configured, each interview record includes a screener field with the questions that were shown to the participant and their responses. Pass screener=true to include it — omit it for lightweight responses when you only need the recording or transcript.
"screener": {
"approved": true,
"questions": {
"q_abc": { "text": "Do you use this product daily?" }
},
"answers": {
"q_abc": "Yes"
}
}questions— the screener definition, keyed by question ID.answers— the participant's responses, keyed by the same question IDs.approved— whether the participant passed the screener.screenerisnullif the project has no screener configured and the participant recorded no answers.
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
interview_id | UUID | — | Filter to a single interview by its ID |
transcripts | boolean | false | Include full transcript in each record |
screener | boolean | false | Include screener questions and participant answers in each record |
page | integer | 1 | Page number (1-indexed) |
limit | integer | 20 | Records per page. Maximum 100 |
Notes
video_url is a private, signed link. It expires at video_url_expires_at
(normally 24 hours after the response is generated). Store the stable id,
not the URL, and re-fetch the record when you need a fresh link.
statusis one ofSTARTED,INCOMPLETE, orCOMPLETE.participantcontains the metadata collected from the participant at interview start — name, email, and any custom fields configured on the project.duration_minutesis the length of the recorded session, not the scheduled interview length.screenercontains the screener questions and the participant's answers.nullif no screener was configured.