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

# Remove Background

> Cut the subject out of a video: the person isolated on a true alpha channel, ready to composite anywhere.

Cut the subject out of a video: the person isolated on a true alpha channel, ready to composite anywhere. SYNCHRONOUS: the call returns the finished cutout (\~40-90s), no polling. The reflex call when an agent needs a background gone.

## See it

**29s** start to finish  ·  **25** credits  ·  **1080p** in and out

<Tabs>
  <Tab title="Output">
    <video controls muted loop playsinline preload="metadata" width="100%" poster="https://d7qhwxmzzmnbz.cloudfront.net/builtin-skills/remove-background/example-poster-v1.jpg" src="https://d7qhwxmzzmnbz.cloudfront.net/builtin-skills/remove-background/example-v1.mp4" />

    The same 14 seconds, with the wall gone. This run asked for `mp4`, which lays the subject on green; ask for `webm` or `mov` and the identical cutout arrives on a true alpha channel instead.
  </Tab>

  <Tab title="Your input video">
    <video controls muted loop playsinline preload="metadata" width="100%" poster="https://d7qhwxmzzmnbz.cloudfront.net/builtin-skills/remove-background/source-poster-v1.jpg" src="https://d7qhwxmzzmnbz.cloudfront.net/builtin-skills/remove-background/source-v1.mp4" />
  </Tab>

  <Tab title="Side by side">
    <Columns cols={2}>
      <Frame caption="Your input video">
        <video controls muted loop playsinline preload="metadata" style={{width:"100%",aspectRatio:"16 / 9",objectFit:"contain",background:"rgba(127,127,127,0.10)",borderRadius:"6px"}} poster="https://d7qhwxmzzmnbz.cloudfront.net/builtin-skills/remove-background/source-poster-v1.jpg" src="https://d7qhwxmzzmnbz.cloudfront.net/builtin-skills/remove-background/source-v1.mp4" />
      </Frame>

      <Frame caption="Output">
        <video controls muted loop playsinline preload="metadata" style={{width:"100%",aspectRatio:"16 / 9",objectFit:"contain",background:"rgba(127,127,127,0.10)",borderRadius:"6px"}} poster="https://d7qhwxmzzmnbz.cloudfront.net/builtin-skills/remove-background/example-poster-v1.jpg" src="https://d7qhwxmzzmnbz.cloudfront.net/builtin-skills/remove-background/example-v1.mp4" />
      </Frame>
    </Columns>
  </Tab>
</Tabs>

## Material

A video with one clear subject, up to 15 SECONDS. Any orientation; output is capped at 1080p on the long edge and 30fps. Pass an upload handle or a public https url.

## Spec

| Field          | Type                            | Required | Description                                                                              |
| -------------- | ------------------------------- | -------- | ---------------------------------------------------------------------------------------- |
| `quality`      | enum (`best` \| `fast`)         | no       | 'best' (default) is the quality pick. 'fast' trades a little edge fidelity for speed.    |
| `outputFormat` | enum (`webm` \| `mov` \| `mp4`) | no       | 'webm' (default) = VP9 with true alpha. 'mov' = ProRes 4444 alpha. 'mp4' = green screen. |

## Pricing & timing

|              |                                                                                |
| ------------ | ------------------------------------------------------------------------------ |
| **Delivery** | **File** — an mp4 at `outputUrl`, plus an editable canvas                      |
| Price        | 25 credits: [estimate](/docs/setting-up/jobs-and-polling) is free and authoritative |
| Typical run  | \~90s                                                                          |
| Review gate  | No: runs straight through                                                      |

## Refusals this template can return

* `NO_SUBJECT`
* `SUBJECT_TOO_SMALL`
* `SUBJECT_LEAVES_FRAME`
* `UNREADABLE`

Refusals are free and typed: see [Refusals](/docs/setting-up/refusals).

## Run it

<Tabs>
  <Tab title="curl (REST)">
    SYNCHRONOUS: the call holds open (\~90s) and the response IS the
    result. No job to poll.

    ```bash theme={null}
    curl -X POST https://api.askeditor.com/v1/run/remove-background \
      -H "Authorization: Bearer $ASKEDITOR_API_KEY" \
      -H "Content-Type: application/json" \
      --max-time 600 \
      -d '{ "material": "https://…/clip.mp4", "quality": "best" }'
    ```

    `material` is a public https url, or the handle from an
    [upload](/docs/setting-up/uploading-material).

    ```json theme={null}
    { "success": true, "data": { "status": "completed",
      "processedVideoUrl": "https://…/processed.webm",
      "canvasId": "…", "editorPath": "/workspace/canvas/editor/…",
      "credits": 25, "creditsCharged": true, "cached": false } }
    ```

    Retrying the identical call returns the same result with
    `"cached": true` and no second charge.
  </Tab>

  <Tab title="Agent (MCP)">
    Connected via the [MCP connector](/docs/mcp/connect)? Just ask:

    > "Remove the background from \~/Desktop/clip.mp4"

    The agent estimates (free), asks your consent, uploads, runs, and hands back
    the cutout plus the editable canvas.
  </Tab>
</Tabs>

**Editable delivery:** The canvas delivers the cutout as a live alpha layer over a swappable background element.

<Note>
  Verifying alpha: a naive ffprobe reports `pix_fmt=yuv420p` because VP9 alpha travels as a WebM side channel. Check the stream tag `ALPHA_MODE=1`, or decode with `-c:v libvpx-vp9` (the default decoder silently drops the alpha plane).
</Note>
