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

# Cue API

> Match licensed music to any video, over an API.

Cue is the soundtrack-matching API for video. Send a clip, get back a ranked
shortlist of licensed music that fits it. It is the same engine behind the
[Cue app](https://cue.vibeset.ai), running in your own product.

Five things it does. **[Match](/docs/match)** music to a video you've ingested.
**[Underscore](/docs/underscore)** a script, with no video at all. **[Sync](/docs/sync)** a track to the
moments in a clip. **[Loop](/docs/loop)** a short track across a long one. **[Beats](/docs/beats)** maps the
beat and downbeat grid of any audio you can point us at. Ingest a video once and match, sync and
loop all reuse it.

## Match a video in one call

<CodeGroup>
  ```bash cURL theme={null}
  curl https://cue.vibeset.ai/v1/match \
    -H "x-api-key: vbsk_live_..." \
    -H "content-type: application/json" \
    -d '{"video_id": "your_video_id", "top_k": 5}'
  ```

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

  res = requests.post(
      "https://cue.vibeset.ai/v1/match",
      headers={"x-api-key": "vbsk_live_..."},
      json={"video_id": "your_video_id", "top_k": 5},
  )
  data = res.json()
  ```

  ```javascript Node theme={null}
  const res = await fetch("https://cue.vibeset.ai/v1/match", {
    method: "POST",
    headers: {
      "x-api-key": "vbsk_live_...",
      "content-type": "application/json",
    },
    body: JSON.stringify({ video_id: "your_video_id", top_k: 5 }),
  });
  const data = await res.json();
  ```
</CodeGroup>

A match against a video Cue has not analyzed under your account's engine yet answers `202` and a
job to poll. [Match](/docs/match) walks both branches.

## Start here

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/docs/quickstart">
    From a key to a real shortlist, in five minutes.
  </Card>

  <Card title="Authentication" icon="key" href="/docs/authentication">
    Creating keys, and how to keep them safe.
  </Card>
</CardGroup>

## The workflows

<CardGroup cols={2}>
  <Card title="Match music to a video" icon="wand-magic-sparkles" href="/docs/match">
    A ranked shortlist for a clip you've ingested.
  </Card>

  <Card title="Underscore a script" icon="pen-nib" href="/docs/underscore">
    Match to the words instead. No video needed.
  </Card>

  <Card title="Find where to cut" icon="scissors" href="/docs/sync">
    Sync points: where a track lands against your video.
  </Card>

  <Card title="Loop over long video" icon="repeat" href="/docs/loop">
    Cover a clip that runs longer than the song, without breaking the beat.
  </Card>

  <Card title="Map a track's beats" icon="drum" href="/docs/beats">
    Beat and downbeat times for audio you point us at. No video involved.
  </Card>
</CardGroup>

## Then

<CardGroup cols={3}>
  <Card title="Render it" icon="waveform" href="/docs/own-license">
    Turn a plan into audio under your own license.
  </Card>

  <Card title="API reference" icon="code" href="/docs/api-reference/overview">
    Every endpoint you can call with a key, with a live "Try it" panel.
  </Card>

  <Card title="MCP server" icon="robot" href="/docs/mcp-server">
    Drive Cue from an agent instead of writing HTTP.
  </Card>
</CardGroup>
