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

# Search transcripts across videos

> Case-insensitive substring search across transcript segments in the caller's organization. Filters compose (AND): pass `video_id` to limit to one video, `deal_id` to limit to a deal's videos, or both (segment must satisfy every filter). Results ordered by video creation time (newest first), then by segment start within each video.




## OpenAPI

````yaml /openapi.yaml get /v1/search/transcripts
openapi: 3.1.0
info:
  title: Lymo Platform API
  version: 1.0.0
  description: >
    Public API for external integrations. Authenticated via Unkey API keys. All
    endpoints are org-scoped — the API key determines which organization's data
    is accessible.
servers:
  - url: https://platform.lymo.jp
    description: Production
  - url: http://127.0.0.1:54321/functions/v1/platform
    description: Local development (Supabase CLI)
security:
  - apiKeyAuth: []
tags:
  - name: system
    description: Health and status endpoints
  - name: videos
    description: Video data and analysis
  - name: deals
    description: Deal management and scoring
  - name: members
    description: Organization members
  - name: analyses
    description: Video analysis resources (async)
  - name: scorings
    description: Deal scoring resources (async)
  - name: webhooks
    description: Webhook endpoint management
  - name: keys
    description: API key self-service
  - name: search
    description: Cross-entity search
paths:
  /v1/search/transcripts:
    get:
      tags:
        - search
      summary: Search transcripts across videos
      description: >
        Case-insensitive substring search across transcript segments in the
        caller's organization. Filters compose (AND): pass `video_id` to limit
        to one video, `deal_id` to limit to a deal's videos, or both (segment
        must satisfy every filter). Results ordered by video creation time
        (newest first), then by segment start within each video.
      operationId: searchTranscripts
      parameters:
        - name: q
          in: query
          required: true
          schema:
            type: string
            minLength: 1
          description: Search query (case-insensitive substring match)
        - name: video_id
          in: query
          required: false
          schema:
            type: string
          description: Restrict results to a single video
        - name: deal_id
          in: query
          required: false
          schema:
            type: string
          description: Restrict results to videos belonging to this deal
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
          description: Maximum number of items to return (1-100)
      responses:
        '200':
          description: Matching transcript segments with video context
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                  - meta
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - text
                        - start
                        - end
                        - video_id
                      properties:
                        id:
                          type: string
                          description: Transcript segment id
                        text:
                          type: string
                        speaker:
                          type: string
                          nullable: true
                        speaker_role:
                          type: string
                          nullable: true
                        start:
                          type: number
                          description: Start time in seconds
                        end:
                          type: number
                          description: End time in seconds
                        video_id:
                          type: string
                        video_title:
                          type: string
                          nullable: true
                        deal_id:
                          type: string
                          nullable: true
                  meta:
                    allOf:
                      - type: object
                        required:
                          - request_id
                        properties:
                          request_id:
                            type: string
                            description: Unique identifier for this request
                            example: req_abc123
                      - type: object
                        required:
                          - total_matches
                          - truncated
                        properties:
                          total_matches:
                            type: integer
                            description: Total matches before `limit` truncation
                          truncated:
                            type: boolean
                            description: Whether results were truncated by `limit`
        '400':
          description: Invalid query parameters
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                  - meta
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code
                        example: not_found
                      message:
                        type: string
                        description: Human-readable error description
                        example: Video not found
                  meta:
                    type: object
                    required:
                      - request_id
                    properties:
                      request_id:
                        type: string
                        description: Unique identifier for this request
                        example: req_abc123
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                  - meta
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code
                        example: not_found
                      message:
                        type: string
                        description: Human-readable error description
                        example: Video not found
                  meta:
                    type: object
                    required:
                      - request_id
                    properties:
                      request_id:
                        type: string
                        description: Unique identifier for this request
                        example: req_abc123
      security:
        - apiKeyAuth: []
components:
  securitySchemes:
    apiKeyAuth:
      type: http
      scheme: bearer
      description: Unkey API key (prefix lymo_)

````