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

# Quickstart

> Get started with ViddyScribe API in under 5 minutes

## Quick Setup

Get your first audio description video in 3 simple steps.

<Steps>
  <Step title="Get Your API Key">
    Reach out to [hello@viddyscribe.com](mailto:hello@viddyscribe.com) to obtain a plan and your API key.

    ```bash theme={null}
    X-API-Key: vsk_your_api_key_here
    ```
  </Step>

  <Step title="Generate Audio Descriptions (Text Only)">
    Upload your video and generate descriptions in one step:

    <CodeGroup>
      ```bash cURL theme={null}
      curl -X POST https://api.viddyscribe.com/enterprise/api/generate_ad_text \
        -H "X-API-Key: vsk_your_api_key_here" \
        -F 'input={"type": "file"}' \
        -F "file=@video.mp4" \
        -F 'generation_config={"language": "en-US", "ad_type": "extended_ad", "format": "vtt"}'
      ```

      ```python Python theme={null}
      import json
      import requests

      with open("video.mp4", "rb") as f:
          response = requests.post(
              "https://api.viddyscribe.com/enterprise/api/generate_ad_text",
              headers={"X-API-Key": "vsk_your_api_key_here"},
              files={"file": f},
              data={
                  "input": json.dumps({"type": "file"}),
                  "generation_config": json.dumps({
                      "language": "en-US",
                      "ad_type": "extended_ad",
                      "format": "vtt",
                  }),
              },
          )
      print(response.json())
      ```

      ```javascript JavaScript theme={null}
      import fs from "node:fs";

      const form = new FormData();
      form.append("input", JSON.stringify({ type: "file" }));
      form.append("file", new Blob([fs.readFileSync("video.mp4")]), "video.mp4");
      form.append("generation_config", JSON.stringify({
        language: "en-US",
        ad_type: "extended_ad",
        format: "vtt",
      }));

      const response = await fetch(
        "https://api.viddyscribe.com/enterprise/api/generate_ad_text",
        {
          method: "POST",
          headers: { "X-API-Key": "vsk_your_api_key_here" },
          body: form,
        }
      );
      console.log(await response.json());
      ```
    </CodeGroup>

    <Note>
      You can also pass `input.type: "url"` or `input.type: "media_id"` instead of uploading a file directly — see the [generate AD text reference](/api-reference/processing/generate-audio-description-text) for the JSON variants.
    </Note>

    **Response:**

    ```json theme={null}
    {
      "job_id": "task_abc123xyz",
      "status": "queued",
      "media_id": "550e8400-e29b-41d4-a716-446655440000"
    }
    ```
  </Step>

  <Step title="Get Your Results">
    Poll for completion and download:

    <CodeGroup>
      ```bash cURL theme={null}
      curl -X GET "https://api.viddyscribe.com/enterprise/api/get_results?job_id=task_abc123xyz" \
        -H "X-API-Key: vsk_your_api_key_here"
      ```

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

      response = requests.get(
          "https://api.viddyscribe.com/enterprise/api/get_results",
          headers={"X-API-Key": "vsk_your_api_key_here"},
          params={"job_id": "task_abc123xyz"},
      )
      print(response.json())
      ```

      ```javascript JavaScript theme={null}
      const response = await fetch(
        "https://api.viddyscribe.com/enterprise/api/get_results?job_id=task_abc123xyz",
        { headers: { "X-API-Key": "vsk_your_api_key_here" } }
      );
      console.log(await response.json());
      ```
    </CodeGroup>

    **When done:**

    ```json theme={null}
    {
      "job_id": "task_abc123xyz",
      "status": "done",
      "media_id": "550e8400-e29b-41d4-a716-446655440000",
      "output": {
        "format": "vtt",
        "content": "WEBVTT\n\n1\n00:00:00.500 --> 00:00:03.100\nA woman in a yellow top sits at a desk with a laptop.\n\n2\n00:00:03.200 --> 00:00:05.900\nShe looks at the camera and smiles."
      }
    }
    ```
  </Step>
</Steps>

## That's it!

A 10 minute video usually takes up to 5 minutes for descriptions to be generated.

## What's Next?

<CardGroup cols={2}>
  <Card title="API Reference" icon="code" href="/api-reference/overview">
    Explore all available endpoints
  </Card>

  <Card title="Authentication" icon="key" href="/docs/authentication">
    Learn about API authentication
  </Card>

  <Card title="Looking to generate AD audio?" icon="volume-high" href="/generate-ad-audio">
    Generate a standalone audio track with descriptions
  </Card>

  <Card title="Looking to generate video with baked in AD?" icon="video" href="/generate-ad-video">
    Generate an MP4 with descriptions mixed in
  </Card>
</CardGroup>
