Skip to content

Overview

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 for complete details and usage examples.

Download OpenAPI description
Languages
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

Editing Endpoints

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

Operations

Eraser

Request

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)
Headers
api_tokenstringrequired
Bodyapplication/jsonrequired
videostringrequired

Publicly accessible URL of the input video.

maskstringrequired

Required. A URL with mask video defining the area to erase.

preserve_audioboolean

Whether to keep the original audio track.

Default true
auto_trimboolean

If true, videos longer than 5 seconds are trimmed to the first 5 seconds.

Default false
output_container_and_codecstring

Output container and codec preset.

Default "mp4_h264"
Enum"mp4_h264""mp4_h265""webm_vp9""mov_h265""mov_proresks""mkv_h264""mkv_h265""mkv_vp9""gif"
curl -i -X POST \
  https://engine.prod.bria-api.com/v2/video/edit/erase \
  -H 'Content-Type: application/json' \
  -H 'api_token: string' \
  -d '{
    "video": "example",
    "mask": "example",
    "output_container_and_codec": "mp4_h264"
  }'

Responses

Accepted

Bodyapplication/json
request_idstringrequired
status_urlstringrequired
Response
application/json
{ "request_id": "string", "status_url": "string" }

Increase Resolution - up to 8K

Request

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.
Headers
api_tokenstringrequired
Bodyapplication/jsonrequired
videostringrequired

Publicly accessible URL of the input video

desired_increaseinteger

Integer scale factor for upscaling

Default 2
Enum24
output_container_and_codecstring

Output container and codec preset

Default "mp4_h264"
Enum"mp4_h264""mp4_h265""webm_vp9""mov_h265""mov_proresks""mkv_h264""mkv_h265""mkv_vp9""gif"
preserve_audioboolean
Default true
curl -i -X POST \
  https://engine.prod.bria-api.com/v2/video/edit/increase_resolution \
  -H 'Content-Type: application/json' \
  -H 'api_token: string' \
  -d '{
    "video": "example",
    "desired_increase": 2,
    "output_container_and_codec": "mp4_h265"
  }'

Responses

Accepted

Bodyapplication/json
request_idstringrequired
status_urlstringrequired
Response
application/json
{ "request_id": "string", "status_url": "string" }

Remove Background

Request

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
Headers
api_tokenstringrequired
Bodyapplication/jsonrequired
videostringrequired

Publicly accessible URL of the input video. Input resolution supported up to 16000x16000 (16K)

background_colorstring

Predefined string only - one of the enum values below. Hex values are not supported

Default "Transparent"
Enum"Transparent""Black""White""Gray""Red""Green""Blue""Yellow""Cyan""Magenta"
output_container_and_codecstring

Output container and codec preset

Default "webm_vp9"
Enum"mp4_h264""mp4_h265""webm_vp9""mov_h265""mov_proresks""mkv_h264""mkv_h265""mkv_vp9""gif"
preserve_audioboolean
Default true
curl -i -X POST \
  https://engine.prod.bria-api.com/v2/video/edit/remove_background \
  -H 'Content-Type: application/json' \
  -H 'api_token: string' \
  -d '{
    "video": "example"
  }'

Responses

Accepted

Bodyapplication/json
request_idstringrequired
status_urlstringrequired
Response
application/json
{ "request_id": "string", "status_url": "string" }

Masking Endpoints

Tools for generating segmentation masks

Operations