Skip to main content
POST
Answer a question

Body

application/json
question
string
required
Minimum string length: 3
slideId
string
required

Current slide ID for context. Accepts a slide UUID or a legacy semantic ID such as slide-1.

Required string length: 1 - 100
deckId
string<uuid>

Deck to answer from. Ignored when presentationId is provided — the deck is resolved from the presentation, and this value is used only as a fallback if that deck has been deleted. Without a presentationId, a session is required and the deck must belong to the caller's current organization.

presentationId
string<uuid>

Required for unauthenticated viewer access

history
object[]
voiceId
string
language
string

BCP-47 language tag

Example:

"en"

repMode
boolean

Set by the viewer when a sales rep is driving the presentation rather than a homeowner. Optional. Omit the field when the client cannot determine it. An absent value is read as unknown, not as false.

firstScreen
enum<string>

The first screen the viewer showed on this visit. Optional. Omit the field when the client cannot determine it. Any value outside the enum is rejected with a 400.

Available options:
intro,
loading,
slides,
pending_data
Example:

"intro"

Response

Answer with audio

answer
string
required
audioUrl
string
required

URL for the spoken audio of the answer. Either an accessible stored file, or a relative /api/qa/audio?t=… URL that synthesizes the audio on request when audioStreamed is true.

source
enum<string>
required
Available options:
faq,
cached,
openai,
fallback
audioStreamed
boolean

true when audioUrl streams the audio as it is synthesized. Streamed audio can't be seeked while it plays.

wordTimings
object[]