# Slicer API

> The public Slicer REST API — everything you do in the app can be done in code with an API token, from uploads and montage to edits and export.

Source: https://docs.slicer.media/en/api/

The Slicer API is a public REST API, version 1 (`/v1`). Your code can do what you do in the app: upload videos, photos and audio, run the AI montage, pick a version of the video, edit captions and on-screen elements, export the video and publish it to connected social accounts. Use it for automation ("a reel from every new recording"), your own integrations and services built on top of Slicer.

If you work with an AI agent (Claude, Cursor, VS Code, Codex, ChatGPT), connecting the [MCP server](https://docs.slicer.media/en/mcp/) is easier — it gives the agent the same abilities without any code.

## The basics

| What | Value |
| --- | --- |
| Base URL | `https://api.slicer.media/v1` |
| Auth | `Authorization: Bearer <token>` — an [API token](https://docs.slicer.media/en/api/authentication/) from your profile or an OAuth access token |
| Format | JSON, `camelCase` fields, times in ISO 8601 UTC, durations in seconds, prices in whole tokens (the expected price of at-cost operations is fractional) |
| Response | `{ "ok": true, "data": … }` or `{ "ok": false, "error": { "code", "message" } }` |
| Specification | [`GET /v1/openapi.json`](https://api.slicer.media/v1/openapi.json) — OpenAPI 3.1, no token needed |
| Version | 1.3.0; changes within v1 are additive only — [Versioning](https://docs.slicer.media/en/api/versioning/#history) |

Your first request checks the token and your balance:

Terminal:

```bash
curl https://api.slicer.media/v1/me \
  -H "Authorization: Bearer $SLICER_TOKEN"
```

Response:

```json
{
  "ok": true,
  "data": {
    "id": 1042,
    "name": "Anna",
    "language": "en",
    "wallet": { "balance": 240, "held": 0, "available": 240, "freeMontageAvailable": false, "montageTokens": 24 },
    "token": { "kind": "personal", "scopes": ["account:read", "projects:read", "projects:write", "montage:run"], "spendLimit": 200, "spentThisMonth": 0 }
  }
}
```

## How it works

A typical path of a video through the API:

### 1. Upload materials

`POST /v1/uploads` creates an upload and returns a one-time `uploadUrl` you can send the file to with a single `curl -T`. You can also upload in parts or from a public URL — see [Uploading files](https://docs.slicer.media/en/api/uploads/).

### 2. Get the price and start the montage

`POST /v1/projects` without `confirmCost` returns the price and starts nothing. Repeat the request with `confirmCost` equal to that price, and the project is created and the montage starts. Nothing is spent without explicit consent — see [Montage and pricing](https://docs.slicer.media/en/api/montage/). To build the video yourself, use a free [project without the AI director](https://docs.slicer.media/en/api/montage/#manual) (`mode: "manual"`).

### 3. Wait for the result

Poll `GET /v1/projects/{id}` every 5 seconds or subscribe to [webhooks](https://docs.slicer.media/en/api/webhooks/). The montage produces two versions of the video — pick the best one.

### 4. Edit and export

Edits are operations on transcript words or video time, and they are free ([Editing the video](https://docs.slicer.media/en/api/editing/)). Export re-renders the video and can publish it to social networks ([Export and publishing](https://docs.slicer.media/en/api/export/)).

### 5. Download

`GET /v1/projects/{id}/result` returns the video file with your token; the project also opens in the web app via its `appUrl`.

The whole path with ready-to-run code in curl, JavaScript and Python is in the [Quickstart](https://docs.slicer.media/en/api/quickstart/).

## What spends tokens

Paid operations are montage, rebuild, retry, captions from speech, the AI assistant and caption translation. Each of them first answers with a price (`Quote`) and starts only with `confirmCost`. Captions from speech, the AI assistant and translation are priced at AI cost with no markup: the price has an expected amount and a maximum, and the actual cost is charged, never more than the maximum. On top of that, a token can have a monthly [spend limit](https://docs.slicer.media/en/api/authentication/) and limited scopes: without the `montage:run` scope a token cannot spend anything. Edits, style changes, choosing a version, export and projects without the AI director are free.

## What is app-only for now

API 1.7 does not cover: buying token packs, connecting social accounts (this needs the account owner's browser), background removal, voice isolation, AI avatar and AI effects, adding files to the media of an existing project, or talking to the director in the [Chat](https://docs.slicer.media/en/guide/ai/chat/). These will come in later minor versions of v1 — follow the [changelog](https://docs.slicer.media/en/changelog/).

## Security

A token gives access to your account — treat it like a password: keep it in an environment variable or a secrets manager, never in code or in a browser. Slicer stores only a hash of the token, and you can revoke it at any time. How the service and your data are protected is described on the [Security](https://docs.slicer.media/en/security/) page.

## What's next

[QuickstartYour first video through the API in 10 minutes: curl, JavaScript, Python.](https://docs.slicer.media/en/api/quickstart/)[Tokens and scopesCreate a token and choose its access, expiry and spend limit.](https://docs.slicer.media/en/api/authentication/)[ReferenceEvery v1 endpoint with parameters, responses and examples.](https://docs.slicer.media/en/api/reference/)[MCP serverThe same abilities for AI agents — no code.](https://docs.slicer.media/en/mcp/)
