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.

write_scope
enum<string>
default:local
Available options:
local,
global
focused_mode
boolean
default:false

Simplified interview: recipients open the distraction-free full-page chat instead of the app. Best for external or mobile respondents.

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.

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
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.

write_scope
enum<string>
default:local
Available options:
local,
global
focused_mode
boolean
default:false

Simplified interview: recipients open the distraction-free full-page chat instead of the app. Best for external or mobile respondents.

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.

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.

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