# Submit a video background removal (green screen) job

Model: Video Background Removal Green screen
Endpoint: `POST /v1/video-background-removal-green-screen`

Start an asynchronous job that keys the green screen out of a source video, keeping only the foreground subject. For footage shot against a green screen: the backdrop is keyed out rather than segmented, which is faster and cleaner than the segmenting models when a green screen is available.

**Inputs**

- `video_url` — public URL of the source video, shot against a green screen
- `output_codec` — optional; `vp9` (the default) renders one WebM with an alpha channel, `h264` renders two files (the RGB video and an alpha matte) and is recommended for better RGB quality
- `spill_suppression_strength` — optional; how strongly green cast is removed from the kept subject, between `0` and `1` (defaults to `0.8`). Raise it when green spots remain, lower it when colours shift on the subject

**What happens next**

The job is **accepted immediately** — you get `202 Accepted` with a `job_id` and status `PROCESSING`. Rendering runs in the background; poll `GET /v1/video-background-removal-green-screen/{job_id}` until the job is `COMPLETED` or `FAILED`.

## Request body

- `output_codec` · enum · optional — Output encoding. vp9 (the default) yields a single webm video with an alpha channel; h264 yields two files (the RGB video and an alpha matte) and is recommended for better RGB quality. Accepts `vp9`, `h264`. Defaults to `"vp9"`.
- `spill_suppression_strength` · number · optional — How strongly green cast is removed from the kept subject. Raise it when green spots remain, lower it when colours shift on the subject. Between 0 and 1. Defaults to `0.8`.
- `video_url` · url · required — URL of the source video, shot against a green screen.

## Parameters

- `X-Veed-Store-IO` (header) — Set to `0` to not store this request's and response's bodies. They are then not available in your request logs for debugging.
- `X-Veed-Media-Expiration-Seconds` (header) — Number of seconds before the media URLs returned for this request expire. A value above the maximum is capped rather than rejected.

## Example request

```bash
curl -X POST "https://api.veed.io/v1/video-background-removal-green-screen" \
  -H "Authorization: Bearer $VEED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "video_url": "https://static-assets.veed.io/api-examples/green-screen-input.mp4"
}'
```

## Example response (202)

```json
{
  "data": {
    "credits_charged": 0,
    "credits_estimated": 0,
    "error": {
      "code": "input_validation",
      "details": [
        {
          "field": "<field>",
          "message": "<message>",
          "type": "<type>"
        }
      ],
      "message": "<message>"
    },
    "job_id": "123e4567-e89b-12d3-a456-426614174000",
    "result": {
      "files": [
        {
          "content_type": "video/mp4",
          "file_name": "<file_name>",
          "file_size": 0,
          "url": "<url>"
        }
      ]
    },
    "status": "PROCESSING"
  }
}
```

Rendered page: https://api.veed.io/docs/api/post-v1-video-background-removal-green-screen
