Skip to main content
POST
Create an interview draft

Authorizations

Authorization
string
header
required

Use Authorization: Bearer

Path Parameters

project_id
string<uuid>
required

UUID of the project

Body

application/json

Writable fields of an interview draft. Everything is optional — drafts are deliberately permissive and only sending (assign with draft_id) enforces the real assignment rules.

topic
string

The interview focus. When set, a short title is generated from it.

interview_type
enum<string>
default:interview

Which conversation type the draft fans out to when sent. Set at creation (form type cards, or the scoping conversation's draft tool) and immutable afterwards — updates that change it are rejected (400).

Available options:
interview,
guided-interview
questions
string[]

Optional specific topics or questions (max 10). Rejected on guided-interview drafts — their topics structure the conversation.

topics
object[]

Guided drafts only (rejected otherwise): the ordered, editable topics the interview walks through (max 12). The scoping conversation's draft tool pre-seeds them from the standard guide.

assignee_ids
string<uuid>[]

UUIDs of project members to interview. May go stale; re-validated at send.

invite_emails
string<email>[]

Emails of people not yet on the project. Nobody is contacted until the draft is sent.

language
string | null

ISO language code (e.g. fr) the interviews created from this draft must be conducted in. Null (the default) adapts to each recipient's own preferred language. Unknown codes are rejected (400).

custom_message
string

Optional note replacing the default invitation email copy.

custom_focus
string | null

Overrides the "what it's about" focus block in invitation emails without changing the interview focus. Null (the default) shows the topic truncated to a teaser; empty string removes the block; text is shown verbatim.

Maximum string length: 500
scheduled_send_at
string<date-time> | null
reminders_enabled
boolean
default:false
reminder_start_after_days
integer
default:2
Required range: 1 <= x <= 30
reminder_interval_days
integer
default:3
Required range: 1 <= x <= 30
reminder_max_count
integer
default:3
Required range: 1 <= x <= 10
source_agent_session_id
string<uuid> | null
write-only

Creation only: the CMA Clara session drafting this (passed by the agent via the MCP draft_interviews tool). Must be one of the caller's own Clara sessions scoped to this project, else 400. Ignored on update. In-process Clara records its conversation directly; both read back as source_session.

campaign_id
string<uuid> | null
write-only

Existing campaign (of the same project) to group the draft's interviews under; null removes the draft from its campaign. Wins over campaign_name when both are sent.

campaign_name
string
write-only

Campaign to group the draft's interviews under, by name: reuses the project's campaign with that name (case-insensitive) or creates it.

Response

Draft created

A saved, unsent interview-assignment payload. Becomes one interview per recipient when sent via the assign endpoint (with draft_id), which also deletes the draft.

topic
string

The interview focus. When set, a short title is generated from it.

interview_type
enum<string>
default:interview

Which conversation type the draft fans out to when sent. Set at creation (form type cards, or the scoping conversation's draft tool) and immutable afterwards — updates that change it are rejected (400).

Available options:
interview,
guided-interview
questions
string[]

Optional specific topics or questions (max 10). Rejected on guided-interview drafts — their topics structure the conversation.

topics
object[]

Guided drafts only (rejected otherwise): the ordered, editable topics the interview walks through (max 12). The scoping conversation's draft tool pre-seeds them from the standard guide.

assignee_ids
string<uuid>[]

UUIDs of project members to interview. May go stale; re-validated at send.

invite_emails
string<email>[]

Emails of people not yet on the project. Nobody is contacted until the draft is sent.

language
string | null

ISO language code (e.g. fr) the interviews created from this draft must be conducted in. Null (the default) adapts to each recipient's own preferred language. Unknown codes are rejected (400).

custom_message
string

Optional note replacing the default invitation email copy.

custom_focus
string | null

Overrides the "what it's about" focus block in invitation emails without changing the interview focus. Null (the default) shows the topic truncated to a teaser; empty string removes the block; text is shown verbatim.

Maximum string length: 500
scheduled_send_at
string<date-time> | null
reminders_enabled
boolean
default:false
reminder_start_after_days
integer
default:2
Required range: 1 <= x <= 30
reminder_interval_days
integer
default:3
Required range: 1 <= x <= 30
reminder_max_count
integer
default:3
Required range: 1 <= x <= 10
id
string<uuid>
read-only
name
string
read-only

Title generated from the topic at save time; empty when the draft has no topic (clients show "Untitled draft interview").

campaign
object | null

Campaign the interviews created from this draft will belong to; null when none. Set via campaign_id / campaign_name.

test_runs
object[]
read-only

This draft's test runs, newest first (see InterviewTestRun).

source_session
object | null

The Clara session that created a draft (provenance, SET_NULL on both ends). kind decides the route a client builds: clara_fast = in-process Work with Clara conversation (/agent/clara-fast?conversation_id=), cma = Managed-Agents Clara session (/agent/clara?session_id=), coach = any other coach conversation (e.g. scoping), recorded but not linked from the test page.

created_by
string<uuid> | null
read-only
created_by_email
string<email> | null
read-only
created_at
string<date-time>
read-only
updated_at
string<date-time>
read-only