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

# Search Batch Transcripts

> Search across transcribed videos in a batch by keyword or natural language

Search transcript segments within a batch using keyword, semantic, or hybrid search. Returns timestamped results with matching text.

**Cost:** 0 credits per query

Search works on any transcribed batch. Classification is not required.

<Note>
  For best practices and search mode recommendations, see the [Transcript Search Guide](/guides/search).
</Note>

## Path parameters

<ParamField path="batch_id" type="string" required>
  UUID of the batch to search. Must be completed and have search enabled.
</ParamField>

## Request body

<ParamField body="query" type="string" required>
  Search query text. Minimum 1 character.
</ParamField>

<ParamField body="mode" type="string" default="hybrid">
  Search mode. Options:

  * `"keyword"` — Full-text search with language-aware stemming
  * `"semantic"` — Embedding-based similarity search
  * `"hybrid"` — Both combined with score fusion (recommended)
</ParamField>

<ParamField body="max_results" type="integer" default={20}>
  Maximum number of results to return (1-100).
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api.fastdrop.io/api/v1/batch/a1b2c3d4-5678-90ab-cdef-1234567890ab/search \
    -H "Content-Type: application/json" \
    -H "X-API-Key: fd_live_your_key_here" \
    -d '{
      "query": "talking about deadlines",
      "mode": "hybrid",
      "max_results": 10
    }'
  ```

  ```python Python theme={null}
  import httpx

  response = httpx.post(
      "https://api.fastdrop.io/api/v1/batch/a1b2c3d4-.../search",
      headers={"X-API-Key": "fd_live_your_key_here"},
      json={
          "query": "talking about deadlines",
          "mode": "hybrid",
          "max_results": 10,
      },
  )
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://api.fastdrop.io/api/v1/batch/a1b2c3d4-.../search",
    {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "X-API-Key": "fd_live_your_key_here",
      },
      body: JSON.stringify({
        query: "talking about deadlines",
        mode: "hybrid",
        max_results: 10,
      }),
    }
  );
  const data = await response.json();
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "query": "talking about deadlines",
    "total_results": 3,
    "results": [
      {
        "video_id": "f8e7d6c5-4321-ba09-fedc-ba0987654321",
        "filename": "GH010087.MP4",
        "role": null,
        "start_time": 42.5,
        "end_time": 49.2,
        "text": "We need to push the deadline back by at least two weeks.",
        "relevance_score": 0.8721,
        "match_type": "hybrid",
        "language": "en",
        "thumbnail_url": "https://storage.fastdrop.io/thumbs/abc123-t1.jpg"
      },
      {
        "video_id": "a9b8c7d6-...",
        "filename": "interview-day2.mp4",
        "role": "A-Roll",
        "start_time": 128.0,
        "end_time": 135.5,
        "text": "The project timeline is really tight, we're behind schedule.",
        "relevance_score": 0.6543,
        "match_type": "semantic",
        "language": "en",
        "thumbnail_url": "https://storage.fastdrop.io/thumbs/def456-t1.jpg"
      }
    ]
  }
  ```
</ResponseExample>

## Result fields

| Field | Type | Description |
| - | - | - |
| `video_id` | string | UUID of the matched video |
| `filename` | string | Original filename |
| `role` | string \| null | Classification role, if classified. Null otherwise. |
| `start_time` | float | Segment start time in seconds |
| `end_time` | float | Segment end time in seconds |
| `text` | string | Transcript text of the matched segment |
| `relevance_score` | float | 0.0 to 1.0 relevance score |
| `match_type` | string | Which search matched: `keyword`, `semantic`, or `hybrid` |
| `language` | string | ISO 639-1 language code of the segment |
| `thumbnail_url` | string \| null | Video thumbnail URL |

## Error responses

| Status | Meaning |
| - | - |
| 400 | Search not enabled for this batch, or invalid search mode |
| 404 | Batch not found or not owned by this API key |
| 409 | Batch processing not yet complete |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.