Endpoints
GET
Retrieve conversations
GET Single
Get one conversation
POST
Create from text
PATCH
Update conversation
DELETE
Delete conversation
POST Segments
Create from transcript
Get Conversations
GET /v1/dev/user/conversations
Retrieve your conversation transcripts (only completed, non-discarded)
Query Parameters
Query Parameters
- cURL
- Python
- JavaScript
Response (without transcript)
Response (without transcript)
Response (with transcript)
Response (with transcript)
Response Fields
Response Fields
Transcript Segment Fields
Transcript Segment Fields
Geolocation Object Fields
Geolocation Object Fields
Structured Object Fields
Structured Object Fields
Create Conversation from Text
POST /v1/dev/user/conversations
Create a new conversation from text with full AI processing
Request Body
Request Body
- cURL
- Python
- JavaScript
Response Example
Response Example
Processing Pipeline
Processing Pipeline
When you create a conversation, the following happens automatically:
- Discard Detection: Determines if content is meaningful enough to save
- Structured Generation: Creates title, overview, category, and emoji
- Action Item Extraction: Identifies and creates action items (with deduplication against past 2 days)
- Memory Extraction: Extracts interesting facts and insights (up to 4 per conversation)
- App Integration: Triggers enabled summarization apps
- Webhooks: Notifies external systems
Memories and action items are extracted asynchronously. Use the GET endpoints to retrieve them after creation.
Create Conversation from Transcript Segments
POST /v1/dev/user/conversations/from-segments
Create from structured transcript with speaker diarization
Request Body
Request Body
Transcript Segment Fields
Transcript Segment Fields
Available Sources
Available Sources
omi, friend, openglass, phone, desktop, apple_watch, bee, plaud, frame, screenpipe, workflow, sdcard, external_integration- cURL
- Python
- JavaScript
Response Example
Response Example
Unlike text-based conversations, transcript segments ARE stored in the
transcript_segments field and can be retrieved with include_transcript=true.Get Single Conversation
GET /v1/dev/user/conversations/{conversation_id}
Retrieve a single conversation by ID
Path Parameters
Path Parameters
Query Parameters
Query Parameters
- cURL
- Python
- JavaScript
Response Example
Response Example
Update Conversation
PATCH /v1/dev/user/conversations/{conversation_id}
Update a conversation’s title or discard status
Path Parameters
Path Parameters
Request Body
Request Body
At least one field must be provided.
- cURL
- Python
- JavaScript
Response Example
Response Example
Delete Conversation
DELETE /v1/dev/user/conversations/{conversation_id}
Delete a conversation permanently
Path Parameters
Path Parameters
- cURL
- Python
- JavaScript
Response Example
Response Example
Use Case: Upload Meeting Transcript
- Python
- JavaScript
Use Case: Export Conversations
- Bash
- Python
- JavaScript
Public shared notes for agents
For a conversation the owner has already shared, the same public URL supports HTML, Markdown, and the public JSON payload. These representations require no login and use the existing share visibility rules; private or revoked shares return 404 for machine representations and show an unavailable page in HTML..md and .json suffixes select the same representations, independent of
Accept. Default requests receive HTML. Share responses vary on Accept and
advertise alternate representations in HTTP Link headers; the HTML page also
contains alternate links. Share discovery documents
these URLs.
Markdown comes from the public structured payload, including overview, sections,
participants, action items, and transcript. The explicit allowlist exposes section
heading, body and kind, plus action-item description, completion, owner_name,
due_at and context. It excludes attendee emails, private calendar fields,
insights, task IDs, confidence scores and section evidence IDs. Existing public
note text is included as authored; this is not a content redaction service.
Times are explicitly UTC, with ISO-8601 instants in Markdown and JSON. Transcript
labels use elapsed offsets from the conversation start (HH:MM:SS). Speaker
names use person links or an exact match to a public participant name; roster
order cannot identify a diarized speaker. An unmatched speaker string is not a
name: those turns use Speaker N when a speaker id exists, otherwise
Speaker unknown. The account holder without a verified name stays Owner.
Event times on the page and in Markdown use the same UTC labels. Unknown action
owners and due times appear as Unknown. An email-shaped owner_name is omitted.