Conversations
Create a conversation
Start a new conversation with your clone. Returns a conversation ID and the clone's initial greeting.
Endpoint: POST /v3/conversation
Request body:
slug
string
No
Which Mind to start the conversation with. Defaults to the API key's Mind.
user_email
string
No
Email of the user starting the chat
overrides
object
No
Per-conversation experience overrides. See the table below.
If
user_emailis provided, the conversation is linked to that user. Otherwise, it's created as an anonymous conversation.
Overrides object:
purpose
string
No
Overrides the Mind's default purpose/instructions for this conversation only. Max 10,000 characters.
default_language
string
No
BCP-47 language code the Mind should respond in by default (e.g. "es", "fr", "pt-BR").
multiple_languages
boolean
No
When false and default_language is set, the Mind always answers in default_language regardless of the language the user writes in. Defaults to allowing the Mind to match the user's language.
Overrides are per-conversation and merge on top of the Mind's channel-level settings — any key you set here wins; keys you omit fall back to the Mind's defaults.
Example request:
curl -X POST "https://api.delphi.ai/v3/conversation" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"user_email": "customer@example.com",
"overrides": {
"purpose": "You are helping the user with a billing issue. Be concise and direct.",
"default_language": "es",
"multiple_languages": false
}
}'Example response:
Ask a one-off question
Endpoint: POST /v3/conversation/ask
Generate a single answer without creating or using a conversation. Use this for stateless Q&A. If you pass user_email, the Mind loads that visitor's memory (summary, known facts, cross-conversation context) for the answer.
Request body:
question
string
Yes
The question to answer. 1–50,000 characters.
slug
string
No
Which Mind to ask. Defaults to the API key's Mind.
user_email
string
No
Loads this visitor's memory into the answer. Omit for a fully anonymous, memory-free answer.
file_urls
array of string
No
Up to 10 file URLs. Indexed the same way as chat uploads before the answer is generated.
Response:
answer
string
The Mind's answer.
citations
array of object
Sources backing the answer (same citation shape as conversation history — see below).
Citation fields (each item in citations)
type
string
Citation type.
text
string
Cited text/snippet.
title
string
Source title (nullable).
url
string
Source URL (nullable).
citation_url
string
Direct link to the cited location (nullable).
page_num
number
Page number for document sources (nullable).
timestamp
number
Timestamp for audio/video sources (nullable).
tweet_id
string
Tweet ID for tweet sources (nullable).
created_at
string
When the source was created (nullable).
Example request:
Example response:
Stream a response
Send a message and receive the clone's response as a real-time stream (Server-Sent Events).
Endpoint: POST /v3/stream
Request body:
conversation_id
string
Yes
UUID of the conversation
message
string
Yes
The user's message
file_urls
string[]
No
URLs of user-uploaded files for context
slug
string
No
Your clone's slug
Example request:
Response format: text/event-stream
The response is a stream of Server-Sent Events. Each event contains a chunk of the clone's response. The stream ends with a [DONE] event.
List conversations
Retrieve all conversations for a specific user.
Endpoint: GET /v3/conversation/list
Query parameters:
email
string
Yes
The user's email address
Example request:
Example response:
Conversations are sorted by newest first. Only active (non-deleted) conversations are returned.
Get conversation history
Retrieve the full message history for a conversation.Endpoint: GET /v3/conversation/{conversation_id}/historyPath parameters:
Parameter
Type
Description
conversation_id
string
UUID of the conversation
Query parameters:
include_citations
boolean
No
false
Include source citations
Example request:
Example response:
Citation fields (when include_citations=true):
url
string
Source URL
text
string
Relevant excerpt
type
string
Source type: WEB, PDF, TWITTER
title
string
Source title (nullable)
page_num
number
PDF page number (nullable)
timestamp
number
Video/audio timestamp (nullable)
tweet_id
string
Tweet ID (nullable)
citation_url
string
Direct citation link (nullable)
Messages are returned in chronological order (oldest first).
Get insights for a conversation
Endpoint: POST /v3/conversation/{conversation_id}/insights
Returns the insight cards generated for a conversation, newest first. Insight cards are surfaced by Delphi's synthesis (e.g. a notable testimonial, or a user worth meeting) and are attached to the conversation they came from.
Path parameters:
conversation_id
string
Yes
The conversation's ID.
Response:
Returns an object with an insights array. Each item:
id
string
Insight ID.
created_at
string
When the insight was created (ISO 8601).
data
object
The insight card. Fields below.
Data (insight card) fields:
type
string
Card type: "testimonial" or "user_worth_meeting".
description
string
Human-readable summary of the insight.
reasoning
array of string
Why this insight was surfaced.
items
array of string
Supporting bullet points (nullable).
ctaType
string
Suggested call-to-action type (e.g. share_socials, reply_to_user, view_conversation).
ctaLabel
string
Display label for the CTA.
ctaData
object
Arbitrary data for the CTA.
evidence
array of object
Supporting evidence. Each has a type of CONVERSATION, USER, or CONTENT plus fields for that type.
compositeScore
number
Confidence/priority score between 0 and 1.
period
string
The time period the insight covers.
createdAt
string
Card creation timestamp (ISO 8601).
Example request:
Example response:
Update conversation title
Set or update the title of a conversation.
Endpoint: PUT /v3/conversation/{conversation_id}/title
Path parameters:
conversation_id
string
UUID of the conversation
Request body:
title
string
Yes
New title (1–500 characters)
Example request:
Example response:
Append a clone message
Add a clone message to an existing conversation. Useful for seeding conversations or injecting a custom clone message mid-conversation.
Endpoint: POST /v3/conversation/{conversation_id}/append-clone-message
Path parameters:
conversation_id
string
UUID of the conversation
Request body:
text
string
Yes
Message text (1–50,000 characters)
Example request:
Example response:
Delete a conversation
Soft-delete a conversation. It will no longer appear in list results.
Endpoint: DELETE /v3/conversation/{conversation_id}
Path parameters:
conversation_id
string
UUID of the conversation
Example request:
Example response:
This is a soft delete — the conversation is hidden, not permanently removed.
Last updated