> ## Documentation Index
> Fetch the complete documentation index at: https://omi-codex-mobile-prompt-metadata.mintlify.site/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_device_id:
          anyOf:
            - type: string
            - type: 'null'
          description: Capture device id ({platform}_{hash})
          title: Client Device Id
        client_platform:
          anyOf:
            - type: string
            - type: 'null'
          description: Client platform (ios/android/macos)
          title: Client Platform
        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/GeolocationInput'
            - 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: phone
          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
    GeolocationInput:
      description: >-
        Released wire contract for coordinates accepted at legacy API
        boundaries.


        Bounds are enforced before any value is cached, geocoded, or persisted.
        Keeping

        this transport shape broad preserves clients released before the bound
        contract

        existed, while ``Geolocation`` remains the only usable server-side
        value.
      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: GeolocationInput
      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
        - rayban_meta
        - 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

````