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

# Video to Text

> Transform videos into rich, searchable text content

## Quick Start

First, make sure you have Cloudglue set up by following the [setup guide](/getting-started/setup-cloudglue).

## Transform Your Video

Using Cloudglue's Describe API, convert your video into structured text content in minutes. Get everything from your video:

* Complete speech transcription
* Scene-by-scene descriptions
* Text shown in the video
* Concise video summary

<Tabs>
  <Tab title="Python" value="python">
    ```python theme={null}
    from cloudglue import Cloudglue

    # Initialize client (API key will be loaded from environment)
    client = Cloudglue()

    # Upload your video file
    uploaded = client.files.upload(
        'path/to/local/video.mp4',
        wait_until_finish=True
    )

    # Start description using the uploaded file URI
    description = client.describe.run(
        url=uploaded.uri,
        enable_summary=True,
        enable_speech=True,
        enable_scene_text=True,
        enable_visual_scene_description=True,
        response_format='markdown'
    )

    # Print the results
    print(description.data.content)
    ```

    For more details about the Python SDK, check out our [Python SDK Documentation](/sdks/python).
  </Tab>

  <Tab title="Node" value="node">
    ```typescript theme={null}
    /// <reference lib="dom" />

    import { Cloudglue } from '@cloudglue/cloudglue-js';
    import * as fs from 'fs';
    import * as path from 'path';

    const client = new Cloudglue();
    const filePath = 'path/to/video.mp4';

    // Read and prepare file for upload
    const fileBuffer = await fs.promises.readFile(filePath);
    const file = new File([fileBuffer], path.basename(filePath));
    const uploadResult = await client.files.uploadFile({ file });
    const fileDetails = await client.files.waitForReady(uploadResult.data.id);

    // Start description and wait for completion
    const job = await client.describe.createDescribe(
      fileDetails.uri,
      {
        enable_summary: true,
        enable_speech: true,
        enable_scene_text: true,
        enable_visual_scene_description: true
      }
    );
    const describeJob = await client.describe.waitForReady(
      job.job_id,
      {
        response_format: 'markdown'
      }
    );

    console.log(describeJob.data.content);
    ```

    For more details about the Node.js SDK, check out our [JavaScript SDK Documentation](/sdks/javascript).
  </Tab>
</Tabs>

For more detailed examples and advanced usage, check out our [API Reference](/api-reference/endpoint/describe).
