Image watermark
Image watermark is an API that overlays text or your logo on a photo or image. The sibling of PDF watermark, for when what needs marking is a loose image, not a document.
How it works
You send an image and, either text or your logo (another image), and get back the first one with the mark overlaid. By default it comes out diagonal, centered and semi-transparent.
Only one at a time: text OR logo, never both in the same call.
All you need
- Your API key. Create it in your dashboard with "+ Create key". It's shown only once, so copy and save it.
- In your automation platform, an "HTTP Request" step (n8n, Make, Zapier, Pipedream… all have one).
Text watermark: how to use it in n8n
You send your image as-is (binary) and the text as a parameter. In the HTTP Request node:
- Method:
POST - URL:
https://api.cofferdock.com/image-watermark - Send Query Parameters: on → add
text=© My Company(and whatever else:opacity,position… see the table). - Send Headers: on → add
x-api-key= your key. - Send Body: on → choose to send a binary file (in n8n: "n8n Binary File").
- In Options → Response → Response Format: choose File
Watermark with your logo
To use a logo instead of text, you need to send two images at once, so this only works with a JSON body:
{ "file": "<your image in base64>", "image": "<your logo in base64>" }
Options
| Option | Default | What it does |
|---|---|---|
text | - | The watermark text (max 200 characters). Use this OR image. |
image | - | Your logo in base64. JSON body only. |
position | center | center, top-left, top-right, bottom-left, bottom-right. |
opacity | 0.3 | 0.05 (nearly invisible) to 1 (solid). |
rotation | 45 | Degrees. |
API overview
- Endpoint:
POST https://api.cofferdock.com/image-watermark - Auth: header
x-api-key: YOUR_KEY. - Input: text → raw image (with
textas a query param) or JSON{ file, text, ... }. Logo → JSON ONLY,{ file, image, ... }. - Engine: sharp (libvips) + an image-sized SVG overlay. No browser, no external binaries.
- Limits: 30 requests/min per IP. 1 watermark = 1 credit.
Options
| Option | Default | Description |
|---|---|---|
text | - | Max 200 characters. Exactly one of text/image. |
image | - | Base64 of an image. JSON mode only. |
position | center | Center or a corner. |
opacity | 0.3 | 0.05–1. |
rotation | 45 | Degrees, any value. |
font_size | ~6% of width | 8–400 px. Only applies to text. |
color | #808080 | Hex. Only applies to text. |
scale | 0.3 | 0.05–1: fraction of the width the logo takes up. Only applies to image. |
format | same as input | jpeg, png, webp or avif. |
Examples
curl:
curl -X POST "https://api.cofferdock.com/image-watermark?text=CONFIDENTIAL" \
-H "x-api-key: YOUR_KEY" \
-H "Content-Type: image/png" \
--data-binary @photo.png \
--output watermarked.png
Response
{ "success": true, "image": "iVBORw0KGgo...", "mime_type": "image/png",
"meta": { "type": "text", "format": "png", "width": 1200, "height": 800,
"size_bytes": 84213, "used": 12, "remaining": 488 } }
What you get back
By default: with the raw image it returns the image; with JSON it returns base64. Add output=image to force the binary, or output=url for a temporary link (valid 15 minutes).