Apply Watermark on Images API

60 atoms
Base tier


The API lets you add watermarks to images programmatically. This API accept images in PNG, JPEG, JPG, BMP, TIFF, GIF and WebP image formats and provides customization options for the watermark text, positioning, opacity, and more.
The API is ideal for applications protecting, promoting, and personalizing image content. E-commerce platforms can use it to safeguard product images and enhance brand visibility, photography websites can protect photographers' work and add promotional text.
Try out the API in the API playground and see how this free Image Watermark API can help you improve your image editing process and workflows with a simple API call.
Select API Endpoints

API Playground

API Documentation

input file: output file

Request example

curl --location --request POST 'https://api.apyhub.com/processor/image/watermark/file?output=test-sample&preserve_format=true' \
--header 'apy-token: {{token}}' \
--form 'image=@"stock-photo.jpg"' \
--form 'watermark_image=@"watermark-photo.jpg"'
Method: POST
Content Type: multipart/form-data
Query Parameter(s)
outputStringNoThe output file name for the watermarked image.
preserve_formatBooleanNoTo preserve the format of the output image file, set it to true. The default is false, which returns a jpeg image.
Request Body
imageFileYesThe source image file in supported formats such as png, jpeg, jpg, bmp, tiff, gif, or webp.
watermark_textStringYes (if watermark_image not given)the text or content which you want to use as watermark text to give text in multiple line add new-line("\n") For example sample \n text. If watermark_text and watermark_image both are present in the request then watermark_text will be applied as watermark.
watermark_imageFileYes (if watermark_text not given)the path of watermark image file which should be accessible by ApyHub. If watermark_text and watermark_image both are present in the request then watermark_text will be applied as watermark.
watermark_positionStringNothe watermark position. For example: If you want to add the watermark to the center of the image then it has to be position: center. It defaults to bottom_right and user can enter any of top_right,top_left,top_center,bottom_right,bottom_left,bottom_center,center,center_left,center_right
watermark_opacityStringNothe opacity of the watermark , should be in decimal format. Range is from 0.0 to 1.0 and it defaults to 0.5
watermark_text_background_colorStringNothe background color of the watermark text, should be in hexadecimal color#rrggbb format. For example #000000 for white and it defaults to "" i.e. transparent
watermark_font_sizeStringNothe font-size of the watermark text, should be in numeric format. For example 50 and it defaults to 24
watermark_text_alignmentStringNothe watermark text alignment. For example: you want to add the watermark text in center alignment then it will be as watermark_text_alignment: left and it defaults to center and user can enter any of right,left,center
watermark_font_colorArray of stringNothe font color of the watermark text should be provided as an array of strings containing a maximum of two Color-Hex format values for example :["#ffffff"] for white color text or["#000000","#ffffff"] for gradient watermark text, defaults to ["#ffffff"]
watermark_text_paddingNumberNothe text-padding of the watermark text and background box, should be in numeric format. For example 15 and it defaults to 10
watermark_text_line_spacingNumberNothe line-spacing between the watermark text multiple lines , should be in decimal format. For example 1.75 and it defaults to 1
watermark_angleNumberNothe angle at which the watermark image or text should rotate, should be in numeric format value must be from 0 to 360 and it defaults to 0
watermark_image_sizeStringNothe dimensions of the watermark image, should be in WidthxHeight format and it defaults to 200x150
sizeStringNothe dimensions of the generated image file, should be in WidthxHeight format and it defaults to original_size
Sample Response
The method returns the watermarked image in the output file mentioned in the URI.

HTTP Response Codes

The method may return one of the following HTTP status codes:
Status CodeDescription
200The request was successful.
401Required authentication information is either missing or not valid for the resource.
400Invalid input - the image files are corrupt.
500If any unexpected error occurs while processing the request.


All API requests to ApyHub services need to be authenticated. Currently we support tokens or basic authentication mechanisms. You can generate and view your existing credentials from your workspace settings (on the left side of the navbar) and go to “API Keys".
Points to note:
  • Credential secrets are generated on the fly and are not stored in plain text, so on generating a credential please save the secrets somewhere safe.
  • Use the apy-token as the header parameter to pass the token.
  • Use the Authorization header to send the basic authentication credentials.

Error codes

"error": {
"code": 105,
"message": "Invalid URL"
To search for a specific error code, enter the code in the search box below. Alternatively, you can click on the button to view a complete list of all error codes.