Skip to main content

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

Response (without transcript)


Create Conversation from Text

POST /v1/dev/user/conversations

Create a new conversation from text with full AI processing

Request Body

Response Example

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

omi, friend, openglass, phone, desktop, apple_watch, bee, plaud, frame, screenpipe, workflow, sdcard, external_integration

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

Query Parameters

Response Example


Update Conversation

PATCH /v1/dev/user/conversations/{conversation_id}

Update a conversation’s title or discard status

Path Parameters

Request Body

At least one field must be provided.

Response Example

Use discarded: true to hide a conversation from the main list without permanently deleting it.

Delete Conversation

DELETE /v1/dev/user/conversations/{conversation_id}

Delete a conversation permanently

Path Parameters

Response Example

This action is permanent. Deleted conversations and their associated photos cannot be recovered. Consider using PATCH with discarded: true to hide a conversation instead.

Use Case: Upload Meeting Transcript


Use Case: Export Conversations

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