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

# NanoClip API

> Upload video or audio and extract transcript, speaker, face, scene, and retake intelligence.

The NanoClip API turns source video and audio into structured media intelligence for clipping, analysis, search, cleanup, and editing workflows. (Audio sources are transcript-only.)

<CardGroup cols={2}>
  <a
    href="/claude-code"
    style={{
color: "inherit",
textDecoration: "none",
textDecorationLine: "none"
}}
  >
    <div
      style={{
  height: "100%",
  border: "2px solid #F86685",
  borderRadius: "16px",
  background: "rgba(248, 102, 133, 0.08)",
  padding: "24px",
  boxShadow: "0 0 0 1px rgba(248, 102, 133, 0.10), 0 10px 24px rgba(248, 102, 133, 0.12)"
}}
    >
      <div
        style={{
    display: "inline-flex",
    alignItems: "center",
    borderRadius: "999px",
    background: "#F86685",
    color: "#FFFFFF",
    fontSize: "12px",
    fontWeight: 600,
    lineHeight: 1,
    padding: "6px 10px",
    marginBottom: "20px"
  }}
      >
        Recommended
      </div>

      <div
        style={{
    display: "flex",
    alignItems: "center",
    justifyContent: "center",
    width: "40px",
    height: "40px",
    borderRadius: "10px",
    background: "#F86685",
    color: "#F86685",
    fontSize: "24px",
    fontWeight: 700,
    lineHeight: 1,
    marginBottom: "20px"
  }}
      >
        <span style={{ color: "#FFFFFF" }}>>\_</span>
      </div>

      <h3
        style={{
    color: "inherit",
    fontSize: "18px",
    fontWeight: 600,
    margin: "0 0 8px"
  }}
      >
        Use with Claude Code
      </h3>

      <p
        style={{
    color: "inherit",
    opacity: 0.8,
    fontSize: "16px",
    lineHeight: 1.5,
    margin: 0
  }}
      >
        Paste a ready-to-run NanoClip plus HyperFrames prompt into your agent.
      </p>
    </div>
  </a>

  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Upload a video or audio file, start analysis, and poll for results on production.
  </Card>

  <Card title="Authentication" icon="key" href="/authentication">
    Send API keys and use scopes.
  </Card>

  <Card title="Analysis jobs" icon="sparkles" href="/analysis">
    Understand upload, transcript, vision, and retake-removal outputs.
  </Card>

  <Card title="Limits" icon="gauge" href="/limits">
    Review request, project, command, and upload limits.
  </Card>
</CardGroup>

## Base URL

```text theme={null}
https://api.nanoclip.ai
```

## Typical flow

1. Create an upload project.
2. PUT the bytes to the signed upload URL.
3. Complete the upload so NanoClip can validate and register the source.
4. Start one or more analysis commands.
5. Poll the command result endpoint until its `status` is `completed` or `failed`.

## Status values

Projects and analyses have separate status vocabularies, each declared as an enum in the [OpenAPI spec](/openapi.json).

Project `status` (`ProjectStatus`):

| Status      | Meaning                                                  |
| ----------- | -------------------------------------------------------- |
| `created`   | The project exists but has no source yet.                |
| `uploading` | An upload project is waiting for source bytes.           |
| `ready`     | The source is uploaded and validated — analyses can run. |
| `failed`    | The upload was rejected (for example, oversized).        |

Analysis `status` (`AnalysisResultStatus` on result responses; start responses use the same words minus `failed` — a failed analysis is re-dispatched or rejected, never acknowledged as started):

| Status       | Meaning                                                                                                     |
| ------------ | ----------------------------------------------------------------------------------------------------------- |
| `queued`     | The analysis has been accepted and is waiting to run.                                                       |
| `processing` | Actively processing the source.                                                                             |
| `completed`  | The requested output is available in the response.                                                          |
| `failed`     | Processing stopped; the response `error` string carries the reason (see [Errors](/errors#failed-analyses)). |

## Current endpoint style

The public API uses stable analysis endpoints:

* `GET /v1/me`
* `POST /v1/projects/upload`
* `POST /v1/projects/{project_id}/upload/complete`
* `POST /v1/projects/{project_id}/transcript`
* `GET /v1/projects/{project_id}/transcript`
* `POST /v1/projects/{project_id}/vision`
* `GET /v1/projects/{project_id}/vision`
* `POST /v1/projects/{project_id}/retake-removal`
* `GET /v1/projects/{project_id}/retake-removal`
