apyhub
FILE CONVERSION · FILE MANIPULATION

Generate Watermark For Videos API

What it does

Video Watermarking lets you apply a text or image watermark to a video, then download the result as a streamed file or a signed link. Send either an uploaded video or a remote video URL, choose where the watermark should appear, and control how it looks with opacity, font size, font color, image size, padding, and background color.

Use the file-based endpoints when your app receives an upload and needs the processed video returned directly. Use the URL-based endpoints when the source video already lives elsewhere and you want the API to fetch it from a video_url. For image watermarks, you can provide a binary upload or a remote image URL. For text watermarks, you can set the watermark text and tune its presentation. The service also supports optional output sizing through size and gif_loop for compatible inputs.

The response depends on the endpoint you choose: the download endpoints return the processed video as binary data, while the link endpoints return a data field containing a signed URI. That makes Video Watermarking useful for content pipelines, media review tools, and product flows that need branded previews or protected clips without adding watermark logic in your own application.

▣ ENDPOINT 01 / 04
POST
Apply watermark to uploaded video and stream download (VW-01)
https://api.eu.apyverse.com/apyhub/apply-watermark-to-video/file/download

QUICKSTART

GUIDE

Quickstart

Upload a video and a text watermark to download the watermarked result.

curl -X POST "https://api.eu.apyverse.com/apyhub/apply-watermark-to-video/file/download" \
  -H "apy-token: $APY_TOKEN" \
  -F "video=@/path/to/video.mp4" \
  -F "watermark_text=ApyHub"

What you'll get back

Returns a binary file download (string with format: binary) containing the processed video.

TRY ITLIVE · 550 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.
body*
Output video scale WxH (even dimensions).
Source video (.mp4 .mkv .avi .mov .flv .3gp .webm). Max 500 MiB.
Text watermark. Required unless watermark_image is provided.
Image watermark (.jpg .jpeg .png .gif). Required unless watermark_text is provided.

About this endpoint

What it does

Applies a watermark to an uploaded video and returns the processed video as a streamed binary download. The request sends the source video plus either a text watermark or an image watermark, along with optional sizing and placement settings.

Request Body

ParameterTypeMandatoryDescription
videoStringYesSource video file. Supported formats: .mp4, .mkv, .avi, .mov, .flv, .3gp, .webm. Max size: 500 MiB.
boxIntegerNoControls the watermark box setting. Allowed values: 0, 1. Default: 0.
sizeStringNoOutput video scale in WxH format. Dimensions must be even. Example: 1280x720.
gif_loopENUMNoAllowed values: true, false, 0, 1.
watermark_textStringNoText watermark. Required unless watermark_image is provided. Example: ApyHub.
watermark_imageStringNoImage watermark file. Supported formats: .jpg, .jpeg, .png, .gif. Required unless watermark_text is provided.
watermark_opacityNumberNoWatermark opacity. Range: 0 to 1. Default: 0.5.
watermark_positionENUMNoWatermark placement. Allowed values: top_right, top_left, bottom_right, bottom_left, center, bottom_center, top_center, center_left, center_right. Default: bottom_right.
watermark_font_sizeIntegerNoFont size for text watermark. Minimum: 1. Default: 24.
watermark_font_colorStringNoText watermark font color. Example format: hex color such as #ffffff.
watermark_image_sizeStringNoSize for the image watermark. Example format: 120x40.
watermark_text_paddingStringNoPadding for the text watermark. Default: 10.
watermark_text_background_colorStringNoBackground color behind the text watermark. Example format: hex color such as #000000.

Response

Returns a binary file stream as a JSON string with format: binary, representing the processed video download.

ParameterTypeMandatoryDescription
valueStringYesBinary video content returned by the endpoint.

Notes

You must provide exactly one watermark source: either watermark_text or watermark_image. The schema marks both as optional individually, but each is required unless the other is supplied.

Body

Name
Type
Description
bodyREQUIRED
object

Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.

▣ ENDPOINT 02 / 04
POST
Apply watermark to uploaded video and return signed link (VW-02)
https://api.eu.apyverse.com/apyhub/apply-watermark-to-video/file/link

QUICKSTART

GUIDE

Quickstart

Upload a video and a watermark image to generate a watermarked video.

curl -X POST "https://api.eu.apyverse.com/apyhub/apply-watermark-to-video/file/link" \
  -H "apy-token: $APY_TOKEN" \
  -F "video=@/path/to/video.mp4" \
  -F "watermark_image=@/path/to/watermark.png"

What you'll get back

Returns a JSON object with a data string field containing a URI to the generated video.

{
  "data": "https://storage.example.com/video-clips/watermarked.mp4?sig=abc"
}
TRY ITLIVE · 550 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.
body*
Output video scale WxH (even dimensions).
Source video (.mp4 .mkv .avi .mov .flv .3gp .webm). Max 500 MiB.
Text watermark. Required unless watermark_image is provided.
Image watermark (.jpg .jpeg .png .gif). Required unless watermark_text is provided.

About this endpoint

What it does

Applies a watermark to an uploaded video and returns a signed URI to the processed video. The request body must include the source video, and you can provide either watermark_text or watermark_image to define the watermark content.

Request Body

ParameterTypeMandatoryDescription
videoStringYesSource video file (.mp4, .mkv, .avi, .mov, .flv, .3gp, .webm). Max 500 MiB.
boxIntegerNoBox overlay flag. Allowed values: 0, 1. Default: 0.
sizeStringNoOutput video scale WxH with even dimensions. Example: 1280x720.
gif_loopENUMNoAllowed values: true, false, 0, 1.
watermark_textStringNoText watermark. Required unless watermark_image is provided. Example: ApyHub.
watermark_imageStringNoImage watermark. Required unless watermark_text is provided. Binary file accepted. Allowed formats: .jpg, .jpeg, .png, .gif.
watermark_opacityNumberNoWatermark opacity. Range: 0 to 1. Default: 0.5.
watermark_positionENUMNoWatermark position. Allowed values: top_right, top_left, bottom_right, bottom_left, center, bottom_center, top_center, center_left, center_right. Default: bottom_right.
watermark_font_sizeIntegerNoWatermark font size. Minimum: 1. Default: 24.
watermark_font_colorStringNoWatermark font color. Example: #ffffff.
watermark_image_sizeStringNoWatermark image size. Example: 120x40.
watermark_text_paddingStringNoPadding around the text watermark. Default: 10.
watermark_text_background_colorStringNoBackground color for the text watermark. Example: #000000.

Response

Returns a JSON object with a data string field containing a URI to the processed, watermarked video.

ParameterTypeMandatoryDescription
dataStringYesSigned URI for the watermarked video.

Notes

Provide exactly one watermark source: watermark_text or watermark_image is required, and the schema indicates each one is required unless the other is supplied. The endpoint also accepts a binary video upload only, and the schema specifies a maximum size of 500 MiB.

Body

Name
Type
Description
bodyREQUIRED
object

Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.

▣ ENDPOINT 03 / 04
POST
Apply watermark to remote video URL and stream download (VW-03)
https://api.eu.apyverse.com/apyhub/apply-watermark-to-video/url/download

QUICKSTART

GUIDE

Quickstart

Upload a video URL and add a watermark in one simple request.

curl -X POST "https://api.eu.apyverse.com/apyhub/apply-watermark-to-video/url/download" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://assets.apyhub.com/samples/sample.mp4"
  }'

What you'll get back

Returns a binary file as the response body.

TRY ITLIVE · 550 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
Remote watermark image URL. Legacy alias watermark_image_url also accepted.

About this endpoint

What it does

Applies a watermark to a remote video identified by URL and streams the processed video back as a binary response.

Request Body

ParameterTypeMandatoryDescription
video_urlStringYesRemote video URL to process. Must be a URI.
boxStringNoBox value used by the watermarking operation. Default: 0.
sizeStringNoOutput size. Example format: 1280x720.
gif_loopBooleanNoWhether GIF looping is enabled. Default: false.
watermark_textStringNoText watermark to apply. Example: ApyHub.
watermark_imageStringNoRemote watermark image URL. Must be a URI. Legacy alias watermark_image_url is also accepted.
watermark_opacityStringNoWatermark opacity. Default: 0.5.
watermark_positionENUMNoWatermark position. Allowed values: top_right, top_left, bottom_right, bottom_left, center, bottom_center, top_center, center_left, center_right. Default: bottom_right.
watermark_font_sizeStringNoFont size for text watermark. Default: 24.
watermark_image_urlStringNoRemote watermark image URL. Must be a URI. Legacy alias of watermark_image.
watermark_font_colorStringNoFont color for text watermark. Example: #ffffff.
watermark_image_sizeStringNoSize of the watermark image. Example format: 120x40.
watermark_text_paddingStringNoPadding around the text watermark. Default: 10.
watermark_text_background_colorStringNoBackground color for the text watermark. Example: #000000.

Response

Returns a binary response containing the processed video stream.

ParameterTypeMandatoryDescription
dataStringYesBinary video content returned by the endpoint.

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 04 / 04
POST
Apply watermark to remote video URL and return signed link (VW-04)
https://api.eu.apyverse.com/apyhub/apply-watermark-to-video/url/link

QUICKSTART

GUIDE

Quickstart

Create a watermarked video from a public video URL and get back a downloadable file URL.

curl -X POST "https://api.eu.apyverse.com/apyhub/apply-watermark-to-video/url/link" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://assets.apyhub.com/samples/sample.mp4"
  }'

What you'll get back

Returns a JSON object with a data string field containing the URI of the generated watermarked video.

{
  "data": "https://storage.example.com/video-clips/watermarked.mp4?sig=abc"
}
TRY ITLIVE · 550 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
Remote watermark image URL. Legacy alias watermark_image_url also accepted.

About this endpoint

What it does

Applies a watermark to a remote video fetched from a URL and returns a signed URL to the processed video. The request accepts the source video URL plus optional watermark and sizing settings in the body.

Request Body

ParameterTypeMandatoryDescription
video_urlStringYesRemote video URL to process. Must be a URI.
boxStringNoBox setting for the watermark area. Default: 0.
sizeStringNoOutput size in WIDTHxHEIGHT format. Example: 1280x720.
gif_loopBooleanNoWhether the resulting GIF should loop. Default: false.
watermark_textStringNoWatermark text to render. Example: ApyHub.
watermark_imageStringNoRemote watermark image URL. Must be a URI. Legacy alias watermark_image_url is also accepted.
watermark_opacityStringNoWatermark opacity. Default: 0.5.
watermark_positionENUMNoWatermark position. Allowed values: top_right, top_left, bottom_right, bottom_left, center, bottom_center, top_center, center_left, center_right. Default: bottom_right.
watermark_font_sizeStringNoWatermark text font size. Default: 24.
watermark_image_urlStringNoWatermark image URL. Must be a URI. Example: https://assets.apyhub.com/samples/sample.png.
watermark_font_colorStringNoWatermark text font color. Example: #ffffff.
watermark_image_sizeStringNoWatermark image size in WIDTHxHEIGHT format. Example: 120x40.
watermark_text_paddingStringNoPadding around watermark text. Default: 10.
watermark_text_background_colorStringNoBackground color behind the watermark text. Example: #000000.

Response

Returns a JSON object with a data string field containing a signed URI to the watermarked video. The success response is a 200 JSON response.

ParameterTypeMandatoryDescription
dataStringYesSigned URL for the generated watermarked video. Must be a URI. Example: https://storage.example.com/video-clips/watermarked.mp4?sig=abc.

Body

Name
Type
Description
bodyREQUIRED
object
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.