# Video Editing API Reference

Bria's Video Editing APIs empowers builders with powerful tools for programmatically transforming video content while maintaining original quality.


**Asynchronous Requests and the Status Service** Bria API v2 endpoints process requests asynchronously by default. When you make an asynchronous request, the API immediately returns a `request_id` and a `status_url` instead of the final result. Use the Status Service to track the request's progress until it reaches a completed state.  

See the full guide at [Status Service Documentation](https://docs.bria.ai/status) for complete details and usage examples.



## Servers

```
https://engine.prod.bria-api.com/v2/video/edit
```

```
https://engine.prod.bria-api.com/v2/video/generate
```

```
https://engine.prod.bria-api.com/v2/video/segment
```

## Download OpenAPI description

[Video Editing API Reference](https://docs.bria.ai/_bundle/video-editing.yaml)

## Editing Endpoints

Tools for modifying video content (Erase, Upscale, Remove BG)

### Eraser

 - [POST /erase](https://docs.bria.ai/video-editing/editing-endpoints/erase-object.md): Try out this capability in Bria's sandbox


Description
Initiates an asynchronous object erasure job. Removes objects defined by the mask input and reconstructs the background.


Mask Input


This endpoint requires a mask definition object. You can provide a direct mask_url, or use one of our masking endpoints (mask_by_prompt, mask_by_key_points) to define the mask area.


Response behavior:

- Returns HTTP 202 with request_id and status_url

- Check job status by polling status_url or by calling the Status Service with the request_id until a terminal status is returned


Constraints & Limits:

- Max Duration: 5 seconds. Videos longer than 5s will be truncated if auto_trim is true, or rejected if false.

- Max Resolution: 750p. Inputs higher than 750p will be automatically downscaled.

- Frame Rate: Recommended 24 FPS (preserved in output).


Preservation Rules:

- Aspect Ratio (within 16:9 constraint)

- Frame Rate

- Audio (preserved by default)

### Increase Resolution - up to 8K

 - [POST /increase_resolution](https://docs.bria.ai/video-editing/editing-endpoints/increase-resolution.md): Try out this capability in Bria's sandbox


Description
Initiates an asynchronous resolution upscaling job for a video.

Upscales up to 8K output!


Response behavior:

- Returns HTTP 202 with request_id and status_url

- Check job status by polling status_url or by calling the Status Service with the request_id until a terminal status is returned


Supported input containers:

- .mp4, .mov, .webm, .avi, .gif


Supported input codecs:

- H.264, H.265 (HEVC), VP9, AV1, PhotoJPEG


Input attributes preserved in output:

- Aspect Ratio

- Frame Rate

- Color Bit Depth

- Audio if present

- Transparency if present and supported by the selected output preset


Limits:

- Max input duration: 60 seconds

- Max output resolution: 7680x4320 (8K). If the selected desired_increase would exceed this limit the server returns 422 Unprocessable Entity.


Encoding:

- Bitrate is adjusted automatically to match the target resolution to preserve quality.

### Remove Background

 - [POST /remove_background](https://docs.bria.ai/video-editing/editing-endpoints/remove-background.md): Try out this capability in Bria's sandbox


Description
Initiates an asynchronous background removal job for a video.


Response behavior:

- Returns HTTP 202 with request_id and status_url

- Check job status by polling status_url or by calling the Status Service with the request_id until a terminal status is returned


Supported input containers:

- .mp4, .mov, .webm, .avi, .gif


Supported input codecs:

- H.264, H.265 (HEVC), VP9, AV1, PhotoJPEG


Input attributes preserved in output:

- Aspect Ratio and resolution

- Frame Rate

- Audio if present


Limits:

- Max input duration: 60 seconds

- Resolutions: Input resolution up to 16000x16000 (16K). Inputs larger than this return 413 Payload Too Large. Output resolution matches the input resolution.


Background and transparency control:

- background_color must be one of the predefined string values listed below. Hex values are not supported. Default is Transparent.

- If background_color is Transparent, the selected output preset must support alpha. Otherwise the server responds with 422 Unprocessable Entity.


Output transparency support by preset:

- Alpha supported: webm_vp9, mov_proresks, mkv_vp9, mkv_raw, gif, mov_h265 when encoded as HEVC with Alpha

- Alpha not supported: mp4_h264, mp4_h265, mkv_h264, mkv_h265, avi_h264

## Masking Endpoints

Tools for generating segmentation masks

### Generate Mask by Prompt

 - [POST /mask_by_prompt](https://docs.bria.ai/video-editing/masking-endpoints/mask-by-prompt.md): Generates a segmentation mask video based on a text prompt.

Response behavior:
- Returns HTTP 202 with request_id and status_url
- The final result (via Status Service) will contain a mask_url.

Constraints:
- Max Duration: 5 seconds (Truncated if auto_trim=true).
- Max Resolution: 750p.

### Generate Mask by Key Points

 - [POST /mask_by_key_points](https://docs.bria.ai/video-editing/masking-endpoints/mask-by-key-points.md): Generates a segmentation mask video based on coordinate key points.

Response behavior:
- Returns HTTP 202 with request_id and status_url
- The final result (via Status Service) will contain a mask_url.

Constraints:
- Max Duration: 5 seconds (Truncated if auto_trim=true).
- Max Resolution: 750p.

### Foreground Mask

 - [POST /foreground_mask](https://docs.bria.ai/video-editing/masking-endpoints/foreground-mask.md): Initiates an asynchronous foreground mask generation job for a video.

Response behavior:
- Returns HTTP 202 with request_id and status_url
- Check job status by polling status_url or by calling the Status Service with the request_id until a terminal status is returned

Supported input containers:
- .mp4, .mov, .webm, .avi, .gif

Supported input codecs:
- H.264, H.265 (HEVC), VP9, AV1, PhotoJPEG

Input attributes preserved in output:
- Aspect Ratio and resolution
- Frame Rate
- Audio if present

Limits:
- Max input duration: 60 seconds
- Resolutions: Input resolution up to 16000x16000 (16K). Inputs larger than this return 413 Payload Too Large. Output resolution matches the input resolution.

