apyhub
FILE CONVERSION · FILE MANIPULATION

Generate Watermark For Videos API

Hosted on ApyHub

What it does

Video Watermarking adds a text or image watermark to a video you upload or fetch from a remote URL. Send a source video plus either watermark_text or watermark_image, and get back a watermarked video as a streamed download or a signed file link.

Use the file-based endpoints when you already have the video binary, and the URL-based endpoints when the source lives elsewhere. For uploads, the service accepts common video formats such as .mp4, .mkv, .avi, .mov, .flv, .3gp, and .webm, with optional controls for output size, box, gif_loop, watermark_position, watermark_opacity, watermark_font_size, watermark_font_color, watermark_image_size, watermark_text_padding, and watermark_text_background_color.

For remote videos, provide video_url and the same watermark controls, including watermark_text, watermark_image or watermark_image_url, and the placement options. The signed-link endpoints return a data URI, while the download endpoints return the processed video as binary output.

Use Video Watermarking when you need to brand preview clips, stamp internal review copies, or mark exported social videos before distribution. It fits workflows where you want a consistent overlay without building your own media pipeline.

▣ ENDPOINT 01 / 04
POST
Apply watermark to remote video URL and stream download
http://localhost:8080/apyhub/generate-watermark-for-videos/url/download
QUICKSTARTGUIDE

Quickstart

Send a video URL to generate a watermarked video.

curl -X POST "http://localhost:8080/apyhub/generate-watermark-for-videos/url/download" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://assets.apyhub.com/samples/sample.mp4",
    "watermark_text": "ApyHub"

  }'

What you'll get back

Returns the generated video as binary data (string with format: binary), not JSON.

<binary video file>
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 video fetched from a remote URL, then streams the processed video back as a binary response. The request body includes the source video_url and optional watermark and layout settings.

Request Body

ParameterTypeMandatoryDescription
video_urlStringYesRemote video URL to process. Must be a URI.
boxStringNoWatermark box setting. Default: 0.
sizeStringNoOutput video size, such as 1280x720.
gif_loopBooleanNoWhether to loop GIF output. Default: false.
watermark_textStringNoText to use as the watermark.
watermark_imageStringNoRemote watermark image URL. Must be a URI. Legacy alias watermark_image_url is also accepted.
watermark_image_urlStringNoRemote watermark image URL. Must be a URI.
watermark_opacityStringNoWatermark opacity. 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_sizeStringNoWatermark text font size. Default: 24.
watermark_font_colorStringNoWatermark text color.
watermark_image_sizeStringNoWatermark image size, such as 120x40.
watermark_text_paddingStringNoPadding around watermark text. Default: 10.
watermark_text_background_colorStringNoBackground color for the watermark text.

Response

Returns a binary file response containing the processed video stream. The output schema is a string with binary format, so the successful response body is the video content itself.

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 02 / 04
POST
Apply watermark to remote video URL and return signed link
http://localhost:8080/apyhub/generate-watermark-for-videos/url/link
QUICKSTARTGUIDE

Quickstart

Send a video URL and a watermark value to generate a watermarked video link.

curl -X POST "http://localhost:8080/apyhub/generate-watermark-for-videos/url/link" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://assets.apyhub.com/samples/sample.mp4",
    "watermark_text": "ApyHub"
  }'

What you'll get back

Returns a JSON object with a data string field containing the URL 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 URL and returns a signed URL for the processed video. The request body must include the source video_url; other body fields control watermark text/image, placement, size, and styling.

Request Body

ParameterTypeMandatoryDescription
video_urlStringYesRemote video URL to process. Must be a URI.
boxStringNoWatermark box setting. Default: 0.
sizeStringNoOutput video size. Example format: 1280x720.
gif_loopBooleanNoWhether to loop GIF output. Default: false.
watermark_textStringNoText to use as the watermark.
watermark_imageStringNoRemote watermark image URL. Must be a URI. Legacy alias watermark_image_url is also accepted.
watermark_image_urlStringNoRemote watermark image URL. Must be a URI.
watermark_opacityStringNoWatermark opacity. 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_sizeStringNoWatermark font size. Default: 24.
watermark_font_colorStringNoWatermark font color. Example format: #ffffff.
watermark_image_sizeStringNoWatermark image size. Example format: 120x40.
watermark_text_paddingStringNoPadding around the watermark text. Default: 10.
watermark_text_background_colorStringNoBackground color for watermark text. Example format: #000000.

Response

Returns a JSON object with a data string field containing a signed URI for the watermarked video. Success response shape: { "data": "..." }.

ParameterTypeMandatoryDescription
dataStringYesSigned URL to the processed video. Must be a URI.

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 03 / 04
POST
Apply watermark to uploaded video and stream download
http://localhost:8080/apyhub/generate-watermark-for-videos/file/download
QUICKSTARTGUIDE

Quickstart

Upload a video and add a text watermark to get the processed file back.

curl -X POST "http://localhost:8080/apyhub/generate-watermark-for-videos/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 (string with format: binary) as the downloaded watermarked 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 resulting video as a streamed binary download. The request sends the source video plus optional watermark configuration such as text/image watermark, placement, size, opacity, and output scaling.

Request Body

ParameterTypeMandatoryDescription
videoStringYesSource video file. Supported formats: .mp4, .mkv, .avi, .mov, .flv, .3gp, .webm. Max 500 MiB.
boxIntegerNoWhether to apply a box/background style setting. Allowed values: 0, 1. Default: 0.
sizeStringNoOutput video scale in WxH format. Dimensions must be even. Example: 1280x720.
gif_loopENUMNoControls GIF loop behavior. Allowed 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: #ffffff.
watermark_image_sizeStringNoSize for image watermark. Example: 120x40.
watermark_text_paddingStringNoPadding around text watermark. Default: 10.
watermark_text_background_colorStringNoBackground color for text watermark. Example: #000000.

Response

Returns a binary file stream as the success response. The response body is a single binary payload, not a JSON object.

ParameterTypeMandatoryDescription
binary payloadStringYesDownloaded watermarked video file returned as binary content.

Notes

If you provide a text watermark, watermark_text is used; if you provide an image watermark, watermark_image is used. The schema marks each as required only in relation to the other, so send one of them to satisfy the watermark requirement.

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 04 / 04
POST
Apply watermark to uploaded video and return signed link
http://localhost:8080/apyhub/generate-watermark-for-videos/file/link
QUICKSTARTGUIDE

Quickstart

Upload a video and add a simple text watermark.

curl -X POST "http://localhost:8080/apyhub/generate-watermark-for-videos/file/link" \
  -H "apy-token: $APY_TOKEN" \
  -F "video=@/path/to/video.mp4" \
  -F "watermark_text=ApyHub"

What you'll get back

Returns a JSON object with a data string field containing the URL 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.
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 for the processed video. The request includes the source video plus watermark configuration, and the response returns the resulting file link.

Request Body

ParameterTypeMandatoryDescription
videoStringYesSource video file. Supported formats: .mp4, .mkv, .avi, .mov, .flv, .3gp, .webm. Max 500 MiB.
boxENUMNoBox mode flag. Allowed values: 0, 1. Default: 0.
sizeStringNoOutput video scale in WxH format with even dimensions.
gif_loopENUMNoLoop flag. Allowed 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. Minimum: 0; maximum: 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_sizeIntegerNoFont size for text watermark. Minimum: 1. Default: 24.
watermark_font_colorStringNoFont color for text watermark. Example: #ffffff.
watermark_image_sizeStringNoImage watermark size. Example format: 120x40.
watermark_text_paddingStringNoText padding. Default: 10.
watermark_text_background_colorStringNoBackground color for the text watermark. Example: #000000.

Response

Returns a JSON object with a data string field formatted as a URI. The data value is the signed link to the watermarked video.

ParameterTypeMandatoryDescription
dataStringYesSigned URI for the processed video file.

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.

▣ 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.