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

# API overview

> The same pipeline the Workbench runs, from a script. Conversion is free of credits. Skills charge. Paid plans only.

Base URL: `https://mediamonster.app`

The in-app reference is [mediamonster.app/developers](https://mediamonster.app/developers), which opens these docs. Mint a key at [mediamonster.app/keys](https://mediamonster.app/keys).

<Warning>
  API and MCP access comes with **Minotaur, Kraken, and Behemoth**. A Cyclops key is refused with `403 plan_required`.
</Warning>

## Authentication

Send the key as a bearer token. Keys start `mm_live_` and are shown once.

```bash theme={"theme":{"light":"github-dark","dark":"github-dark"}}
Authorization: Bearer mm_live_…
```

See [Authentication](/api/authentication).

## Endpoints

| Method | Path                  | Key | What it does                                |
| ------ | --------------------- | --- | ------------------------------------------- |
| `GET`  | `/api/v1/skills`      | No  | Live skills, prices, option ids             |
| `GET`  | `/api/v1/me`          | Yes | Plan and credit balance                     |
| `POST` | `/api/v1/convert`     | Yes | Convert or resize one file. Free of credits |
| `POST` | `/api/v1/run/{skill}` | Yes | Run a skill. Charges credits                |
| `POST` | `/api/v1/runs`        | Yes | Run a line — saved recipe or inline steps   |
| `GET`  | `/api/v1/runs/{id}`   | Yes | Poll a run and collect outputs              |
| `GET`  | `/api/v1/assets`      | Yes | Vault contents and room left                |
| `POST` | `/api/v1/assets`      | Yes | Store a finished job in the Vault           |
| `GET`  | `/api/v1/jobs/{id}`   | Yes | Poll a job and collect fresh download URLs  |
| `GET`  | `/api/v1/galleries`   | Yes | Galleries and public URLs                   |
| `POST` | `/api/v1/galleries`   | Yes | Create a gallery                            |
| `POST` | `/api/mcp`            | Yes | MCP server, streamable HTTP                 |

`GET /api/v1/skills` is the live list of option ids. It does not need a key.

## Skills and prices

Same catalogue the Workbench and MCP read. Send option ids on `POST /api/v1/run/{skill}`. An unknown option is an error.

| Slug                       | Takes                 | Credits                         | Options                                  |
| -------------------------- | --------------------- | ------------------------------- | ---------------------------------------- |
| `background-remover`       | image                 | 2 per file                      | output                                   |
| `face-cutout`              | image                 | 2 per file                      | crop, who, output                        |
| `blur-background`          | image                 | 3 per file                      | strength, look                           |
| `smart-expand`             | image                 | 6 per file                      | shape, fill                              |
| `upscale`                  | image                 | 25 per file                     | factor, mode                             |
| `alt-text`                 | image                 | 1 per file                      | tone, rename                             |
| `restyle`                  | image                 | 6 per file                      | style, strength                          |
| `background-swap`          | image                 | 6 per file                      | lighting                                 |
| `new-perspectives`         | image                 | 6 per file                      | angle, framing                           |
| `object-remove`            | image                 | 6 per file                      | mode, shadows                            |
| `restore`                  | image                 | 6 per file                      | job, grain                               |
| `colourise`                | image                 | 6 per file                      | look                                     |
| `headshot`                 | image                 | 6 per file                      | look, backdrop, attire                   |
| `try-on`                   | image                 | 6 per file                      | garment, pose                            |
| `virtual-model`            | image                 | 6 per file                      | worn, scene                              |
| `poster`                   | image                 | 6 per file                      | shape, style                             |
| `colouring-page`           | image                 | 6 per file                      | detail, border                           |
| `meme`                     | image                 | 1 per file                      | size, case                               |
| `mockup`                   | image                 | 6 per file                      | surface, scene                           |
| `swap`                     | image                 | 6 per file                      | mode, match                              |
| `animate`                  | image                 | 100 per file                    | length, motion, sound                    |
| `captions`                 | video or audio        | 8 per minute                    | output, style, motion, position          |
| `transcript`               | video or audio        | 4 per minute                    | format, speakers, timestamps             |
| `watermark`                | image                 | 0 per file                      | position, size, opacity, colour          |
| `extract-audio`            | video                 | 0 per file                      | format, quality, channels                |
| `video-to-gif`             | video                 | 0 per file                      | output, length, fps, loop                |
| `thumbnail`                | video                 | 3 per file                      | count, shape, prefer                     |
| `clean-audio`              | video or audio        | 4 per minute                    | strength, extras, output                 |
| `trim-video`               | video                 | 0 per file                      | —                                        |
| `split-video`              | video                 | 0 per minute                    | pieces, shape                            |
| `upscale-video`            | video                 | 150–1200 per minute             | target, footage                          |
| `b-roll`                   | video                 | 50 per clip + 5 per minute      | count, look                              |
| `dub-video`                | video                 | 150 per minute                  | language                                 |
| `vocal-remover`            | video or audio        | 25 per minute                   | separate, format                         |
| `video-background-remover` | video                 | 750 per minute                  | background, format                       |
| `slow-motion`              | video                 | 400–1600 per minute             | speed                                    |
| `lip-sync`                 | video                 | 100–750 per minute              | voice, quality                           |
| `remove-silences`          | video or audio        | 5 per minute                    | pauses, fillers                          |
| `compress-video`           | video                 | 0 per file                      | target                                   |
| `deinterlace`              | video                 | 2 per minute                    | mode, order                              |
| `stabilise-video`          | video                 | 3 per minute                    | strength                                 |
| `smart-reframe`            | video                 | 5 per minute                    | shape, layout                            |
| `translate-captions`       | video                 | 10 per minute                   | language, output, look, motion, position |
| `talking-photo`            | image                 | 150–600 per file                | length, voice                            |
| `image-qa`                 | image                 | 1 per file                      | purpose, strictness                      |
| `auto-tag`                 | image                 | 1 per file                      | depth, style                             |
| `classify`                 | image                 | 1 per file                      | mode, fallback                           |
| `blur-faces`               | image                 | 2 per file                      | style, strength                          |
| `video-face-blur`          | video                 | 4 per minute                    | style, strength                          |
| `clips`                    | video                 | 12 per clip + 3 per minute      | count, length, shape, layout, cover      |
| `youtube-thumbnail`        | image or video        | 9 per thumbnail + 3 per minute  | count, archetype, palette, subject       |
| `video-multiplier`         | video                 | 32 per second + 20, per version | change, count                            |
| `graphic-multiplier`       | image                 | 12 per version                  | change, count                            |
| `podcast-cover`            | image, video or audio | 10 per file                     | look, size                               |

See [Skills](/skills/overview) for the same prices grouped by drawer.

## Generate from a prompt

Send a `prompt`, and pick a `model` or leave it for the default — each model is billed at its own price. Image and video generation also take a file and start from it: a picture to work from, or the first frame of a clip. Voice and music take no file.

| Slug            | Takes | Credits          | Options               |
| --------------- | ----- | ---------------- | --------------------- |
| `generate`      | image | 5–20 per file    | model, shape, size    |
| `text-to-video` | image | 100–340 per file | model, length, shape  |
| `text-to-voice` | none  | 4–25 per minute  | model, voice, format  |
| `music`         | none  | 4–100 per minute | model, length, format |

Model ids and per-model prices are on [Generators](/skills/generators).

## How requests behave

<AccordionGroup>
  <Accordion title="Credits come off first">
    A skill is charged before the provider is called. A failed run is refunded. The response includes `credits_charged`.
  </Accordion>

  <Accordion title="Signed URLs last ten minutes">
    Download links expire after **ten minutes**. `GET` the job or run again for fresh ones.
  </Accordion>

  <Accordion title="Unknown options are errors">
    An option the skill does not have is refused. A typo must not quietly hand back the default look.
  </Accordion>

  <Accordion title="Unknown convert formats are errors">
    Image: `png`, `jpeg`, `webp` (default WebP). Video: `mp4`, `webm` (default MP4). Anything else is `400 unsupported_format`.
  </Accordion>

  <Accordion title="Wait, or poll">
    A call waits about 150 seconds, then returns `202` with `poll_url`. Send `wait=false` to get a job or run id immediately.
  </Accordion>

  <Accordion title="Rate limits are per key">
    REST and MCP share the same per-key ceiling: 60 / 300 / 1,000 requests a minute on Minotaur / Kraken / Behemoth. `429` includes `retry-after`.
  </Accordion>
</AccordionGroup>

Agents should start at [MCP](/mcp).
