> ## Documentation Index
> Fetch the complete documentation index at: https://docs.omi.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Conversation From Segments

> Create a new conversation from structured transcript segments.

This endpoint is for advanced integrations that have speaker diarization and timing information.
It processes the transcript segments through the full conversation pipeline.

**Transcript Segments:**
- **text**: The text spoken (required)
- **speaker**: Speaker identifier like 'SPEAKER_00', 'SPEAKER_01' (default: 'SPEAKER_00')
- **speaker_id**: Numeric speaker ID (auto-calculated from speaker if not provided)
- **is_user**: Whether this segment is from the user (default: False)
- **person_id**: ID of known person speaking (optional)
- **start**: Start time in seconds, e.g., 0.0, 1.5, 60.2 (required)
- **end**: End time in seconds, e.g., 1.5, 3.0, 65.8 (required)

**Other Parameters:**
- **source**: Source of conversation (default: external_integration). Options:
  - omi, friend, openglass, phone, desktop, apple_watch, bee, plaud, frame, etc.
- **started_at**: When conversation started (defaults to now)
- **finished_at**: When conversation finished (calculated from last segment if not provided)
- **language**: Language code (default: 'en')
- **geolocation**: Optional geolocation data

**Example:**
```json
{
  "transcript_segments": [
    {
      "text": "Hey, how are you doing?",
      "speaker": "SPEAKER_00",
      "is_user": true,
      "start": 0.0,
      "end": 2.5
    },
    {
      "text": "I'm doing great, thanks!",
      "speaker": "SPEAKER_01",
      "is_user": false,
      "start": 2.8,
      "end": 5.2
    }
  ],
  "source": "phone",
  "language": "en"
}
```



## OpenAPI

````yaml /api-reference/openapi.json post /v1/dev/user/conversations/from-segments
openapi: 3.1.0
info:
  contact:
    name: Omi
    url: https://omi.me/
  description: >-
    Programmatic access to your Omi data - memories, conversations, action
    items, goals, folders, and API keys. Build custom integrations, analytics
    dashboards, and automation workflows.
  license:
    name: MIT
    url: https://github.com/BasedHardware/omi/blob/main/LICENSE
  title: Omi Developer API
  version: 1.0.0
servers:
  - description: Production
    url: https://api.omi.me
security: []
tags:
  - description: Read and write user memories - timeless facts, preferences, and insights.
    name: Memories
  - description: Create and retrieve conversation transcripts with AI-generated summaries.
    name: Conversations
  - description: Retrieve user-defined folders for organizing conversations.
    name: Folders
  - description: Manage tasks and to-dos extracted from conversations or created manually.
    name: Action Items
  - description: Manage user goals and progress history.
    name: Goals
  - description: Create, list, and revoke developer API keys.
    name: API Keys
paths:
  /v1/dev/user/conversations/from-segments:
    post:
      tags:
        - Conversations
      summary: Create Conversation From Segments
      description: >-
        Create a new conversation from structured transcript segments.


        This endpoint is for advanced integrations that have speaker diarization
        and timing information.

        It processes the transcript segments through the full conversation
        pipeline.


        **Transcript Segments:**

        - **text**: The text spoken (required)

        - **speaker**: Speaker identifier like 'SPEAKER_00', 'SPEAKER_01'
        (default: 'SPEAKER_00')

        - **speaker_id**: Numeric speaker ID (auto-calculated from speaker if
        not provided)

        - **is_user**: Whether this segment is from the user (default: False)

        - **person_id**: ID of known person speaking (optional)

        - **start**: Start time in seconds, e.g., 0.0, 1.5, 60.2 (required)

        - **end**: End time in seconds, e.g., 1.5, 3.0, 65.8 (required)


        **Other Parameters:**

        - **source**: Source of conversation (default: external_integration).
        Options:
          - omi, friend, openglass, phone, desktop, apple_watch, bee, plaud, frame, etc.
        - **started_at**: When conversation started (defaults to now)

        - **finished_at**: When conversation finished (calculated from last
        segment if not provided)

        - **language**: Language code (default: 'en')

        - **geolocation**: Optional geolocation data


        **Example:**

        ```json

        {
          "transcript_segments": [
            {
              "text": "Hey, how are you doing?",
              "speaker": "SPEAKER_00",
              "is_user": true,
              "start": 0.0,
              "end": 2.5
            },
            {
              "text": "I'm doing great, thanks!",
              "speaker": "SPEAKER_01",
              "is_user": false,
              "start": 2.8,
              "end": 5.2
            }
          ],
          "source": "phone",
          "language": "en"
        }

        ```
      operationId: createConversationFromSegments
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateConversationFromTranscriptRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConversationCreateResponse'
          description: Successful Response
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
      security:
        - developerApiKey: []
components:
  schemas:
    CreateConversationFromTranscriptRequest:
      properties:
        client_session_id:
          anyOf:
            - maxLength: 200
              minLength: 1
              type: string
            - type: 'null'
          description: >-
            Stable client-generated session ID. When provided, retries return
            the same conversation ID.
          title: Client Session Id
        finished_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: >-
            When conversation finished (calculated from segments duration if not
            provided)
          title: Finished At
        geolocation:
          anyOf:
            - $ref: '#/components/schemas/Geolocation'
            - type: 'null'
          description: Geolocation where conversation occurred
        language:
          anyOf:
            - type: string
            - type: 'null'
          default: en
          description: Language code (ISO 639-1, e.g., 'en', 'es', 'fr')
          title: Language
        source:
          anyOf:
            - $ref: '#/components/schemas/ConversationSource'
            - type: 'null'
          default: external_integration
          description: >-
            Source of the conversation (e.g., omi, friend, openglass, phone,
            external_integration)
        started_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: When conversation started (defaults to now)
          title: Started At
        transcript_segments:
          description: List of transcript segments with speaker and timing info
          items:
            $ref: '#/components/schemas/CreateConversationTranscriptSegment'
          maxItems: 500
          minItems: 1
          title: Transcript Segments
          type: array
      required:
        - transcript_segments
      title: CreateConversationFromTranscriptRequest
      type: object
    ConversationCreateResponse:
      properties:
        discarded:
          title: Discarded
          type: boolean
        id:
          title: Id
          type: string
        status:
          title: Status
          type: string
      required:
        - id
        - status
        - discarded
      title: ConversationCreateResponse
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          title: Detail
          type: array
      title: HTTPValidationError
      type: object
    Geolocation:
      properties:
        address:
          anyOf:
            - type: string
            - type: 'null'
          title: Address
        google_place_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Google Place Id
        latitude:
          title: Latitude
          type: number
        location_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Location Type
        longitude:
          title: Longitude
          type: number
      required:
        - latitude
        - longitude
      title: Geolocation
      type: object
    ConversationSource:
      enum:
        - friend
        - omi
        - fieldy
        - bee
        - plaud
        - frame
        - friend_com
        - apple_watch
        - phone
        - phone_call
        - desktop
        - openglass
        - screenpipe
        - workflow
        - sdcard
        - external_integration
        - limitless
        - onboarding
        - unknown
      title: ConversationSource
      type: string
    CreateConversationTranscriptSegment:
      properties:
        end:
          description: End time in seconds (e.g., 1.5, 3.0, 65.8)
          title: End
          type: number
        is_user:
          default: false
          description: Whether this segment is from the user
          title: Is User
          type: boolean
        person_id:
          anyOf:
            - type: string
            - type: 'null'
          description: ID of person speaking (if known)
          title: Person Id
        speaker:
          anyOf:
            - type: string
            - type: 'null'
          default: SPEAKER_00
          description: Speaker identifier (e.g., 'SPEAKER_00', 'SPEAKER_01')
          title: Speaker
        speaker_id:
          anyOf:
            - type: integer
            - type: 'null'
          description: Numeric speaker ID
          title: Speaker Id
        start:
          description: Start time in seconds (e.g., 0.0, 1.5, 60.2)
          title: Start
          type: number
        text:
          description: The text spoken in this segment
          title: Text
          type: string
      required:
        - text
        - start
        - end
      title: CreateConversationTranscriptSegment
      type: object
    ErrorResponse:
      properties:
        detail:
          anyOf:
            - type: string
            - type: array
            - type: object
          description: Error detail returned by the API.
      required:
        - detail
      title: ErrorResponse
      type: object
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          title: Location
          type: array
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
      type: object
  responses:
    Error401:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: Missing or invalid authentication credentials.
    Error403:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: Authenticated, but the token does not grant the required scope.
  securitySchemes:
    developerApiKey:
      bearerFormat: Omi Developer API key
      description: 'Send `Authorization: Bearer <omi_developer_api_key>`.'
      scheme: bearer
      type: http

````