Skip to main content
POST
Import an external interview transcript

Authorizations

Authorization
string
header
required

Use Authorization: Bearer

Path Parameters

project_id
string<uuid>
required

UUID of the project

Body

application/json
transcript
string
required

The full raw transcript text, verbatim (200 to 1,500,000 characters).

title
string

Optional interview title.

interview_date
string<date>

Optional date the interview happened (YYYY-MM-DD).

participants
string[]

Optional participant names.

Response

Interview created; parsing in progress

A structured interview conversation, including its full transcript.

id
string<uuid>
read-only
name
string | null

Interview title (auto-generated from the topic when not provided).

created_by
string<uuid>
read-only

UUID of the user who created the interview.

created_by_email
string<email> | null
read-only

Email of the user who created the interview (the importer, for imported interviews).

type
string

Conversation type: "interview" (standard mono-topic), "guided-interview" (a multi-topic deep-dive whose ordered topics come from the sent draft or assign payload; its focus text lives in type_additional_parameters.interview_focus), or "imported-interview" (a read-only transcript of an interview recorded outside the platform, created via the import-transcript endpoint).

type_additional_parameters
object

Free-form parameters associated with the conversation type.

chat_history
object[]

Ordered list of transcript entries (messages, tool calls, etc.).

chat_memory
object

Assistant memory state accumulated over the conversation.

local_documents
object[]
read-only

Files uploaded during this interview (ordered by upload time). Only the id and name are included; resolve a fresh signed download URL via the project-level local-documents detail endpoint.

assigned_to
string<uuid> | null
read-only

UUID of the assigned user (null while a pending invite has not yet joined).

assigned_by
string<uuid> | null
read-only

UUID of the user who created the assignment.

assigned_to_email
string<email> | null
read-only

Assignee email, falling back to the invite email for not-yet-joined invitees.

assigned_by_email
string<email> | null
read-only
is_pending_invite
boolean
read-only

True when assigned to someone who has not yet joined the project.

invite_config
object | null
read-only

Invitation-email customization and reminder schedule for an assigned interview. Null for self-assigned interviews, non-interview conversations, and interviews created before this feature existed.

interview_focus
object | null
read-only

The seeded interview topic and optional specific questions, for rendering the in-chat intro card. Null for non-interviews and interviews without a topic. For guided interviews this is read from type_additional_parameters.interview_focus (they have no focus issue).

topics
object[]
read-only

Guided interviews only: the ordered topic agenda seeded at send time, with per-topic progress. Empty for every other interview type.

campaign
object | null

Campaign this interview belongs to; null for ad hoc interviews.

is_first_interview
boolean
read-only

True while the requesting user has never started an assigned interview in this project. Drives the intro card's expanded "how it works" explainer.

import_info
object | null

Parse-pipeline state of an imported external transcript (interviews of type "imported-interview"). Null on every other interview type. The raw pasted transcript is never returned — the parsed chat_history is the transcript.

conversation_summary
string
read-only

Background-generated summary of the conversation ("" until generated).

status
enum<string> | null
read-only

Null for imported interviews until their transcript parse completes.

Available options:
pending,
in_progress,
completed
write_scope
enum<string>

Whether edits stay local to the conversation or write to the shared knowledge store.

Available options:
local,
global
focused_mode
boolean
read-only

Simplified interview: when true the invite opens the distraction-free full-page chat (/interview//) instead of the app. Set at assign time; never changed afterwards.

created_at
string<date-time>
read-only
updated_at
string<date-time>
read-only