Watermark API — Free Tier + Pay-As-You-Go
Add text or image watermarks to PDFs, videos, and images via API. Configurable position, opacity, rotation, and tiling.
What it does
The Watermark API overlays text or image watermarks onto PDFs, videos, and image files with full positioning, opacity, rotation, and tiling control. Text watermarks support custom fonts (uploaded with the request or selected from the 200-font bundle), color, size, stroke, shadow, and per-page (PDF) or per-frame (video) positioning. Image watermarks accept PNG with alpha for clean overlay; SVG inputs rasterise to the requested DPI.
Per-job parameters include position (one of 9 anchors — TL, T, TR, L, C, R, BL, B, BR — or explicit `x,y` pixel coordinates), opacity (0-100), rotation (degrees), tile mode (single overlay vs repeating grid), and scope (PDF: page-range; video: time-range). For PDFs, watermarks can be applied as content layer (visible, editable) or as PDF Background Underlay (visible behind content but skipped on text extraction). For videos, watermarks are baked into the video stream via FFmpeg's `overlay` filter — the watermark survives any downstream re-encoding by viewers.
For images, watermarks composite via Sharp's `composite` operation with full alpha-channel handling.
Supported formats
Source formats (10)
- mp4
- mov
- mkv
- webm
- jpg
- png
- webp
- tiff
- gif
Target formats (7)
- mp4
- mov
- jpg
- png
- webp
- tiff
Quick start
All three SDK languages show the same conversion: a single POST to /v1/convert with your API key in the X-Api-Key header.
curl -X POST https://api.convertintomp4.com/v1/watermark \
-H "X-Api-Key: ck_your_api_key" \
-F "file=@input.pdf" \
-F "text=DRAFT" \
-F "position=center" \
-F "opacity=30" \
-F "rotation=45"import { ConvertIntoMP4 } from "@convertintomp4/sdk";
import fs from "node:fs";
const client = new ConvertIntoMP4({ apiKey: process.env.CIM4_API_KEY });
const job = await client.watermark({
file: fs.createReadStream("input.pdf"),
text: "DRAFT",
position: "center",
opacity: 30,
rotation: 45,
});
const result = await client.waitForJob(job.id);
console.log("Watermarked:", result.outputUrl);from convertintomp4 import Client
client = Client(api_key="ck_your_api_key")
with open("input.pdf", "rb") as f:
job = client.watermark(
file=f, text="DRAFT", position="center", opacity=30, rotation=45,
)
result = client.wait_for_job(job.id)
print("Watermarked:", result.output_url)Features
- Text or image watermarks (PNG + SVG)
- 9 anchor positions or explicit x,y
- Opacity 0-100, rotation, tiling
- PDF: content-layer or background-underlay mode
- Video: baked into FFmpeg output stream
- Image: alpha-channel composite via Sharp
- Per-page (PDF) or per-frame (video) scoping
Pricing
From $9.99/mo (Pro) or $24.99/mo (Business) — or pay-as-you-go on the API plan.
Free tier: 5 conversions/day, 100 MB file size, no API key required (IP-gated). Pro $9.99/mo: 100/day (2,000/month), 2 GB files. Business $24.99/mo: 1,000/day (20,000/month), 10 GB files, GPU encoding, dedicated support.
See full pricing breakdown →Built for production
99.9% uptime SLA
Multi-region failover, transparent status page, 60-second response-time guarantee on Business.
Encryption + auto-delete
TLS 1.2+ in transit, AES-256 at rest. Files deleted after 1h / 24h / 7d depending on plan, or instantly via DELETE endpoint. See the security page.
~7s median latency
Most sub-100 MB jobs complete in 6-9 seconds. Webhook-driven async for heavier workloads; waitForJob for synchronous flows.
Frequently Asked Questions
Can the watermark survive re-encoding by downstream viewers?
For video and image outputs — yes. The watermark is baked into the pixel data and survives any re-encoding, screenshot, or screen recording. For PDF, watermarks added as content layer are extractable; as background underlay, they're not extractable via copy-paste but are removable via PDF editing tools. There's no fully tamper-proof watermarking — only friction levels.
How do I position the watermark precisely?
Use one of 9 named anchors (`position=top-right`) or explicit pixel coordinates (`x=100,y=200`). For PDFs, coordinates are in points (1pt = 1/72 inch) from the bottom-left of the page. For videos and images, in pixels from the top-left.
Can I use a custom font for text watermarks?
Yes. POST your TTF/OTF with the form field `customFont` and reference it in the request via `fontFamily=<filename>`. Alternatively, pick from our 200-font bundle by name (`fontFamily=Inter,Roboto,Open Sans,Lato,...`).
Does the watermark cover the whole page or just a corner?
Both modes. `tile=false` (default) places one watermark at the specified position; `tile=true` repeats the watermark across the entire page/frame/image. Tiling is useful for high-friction copyright protection where users would otherwise crop around a corner watermark.
Can I watermark a video without re-encoding?
Watermarking always re-encodes the video — the watermark is composited into the pixel data via FFmpeg's overlay filter. For watermark-without-re-encoding, the watermark would need to be a subtitle track (separate stream), which most platforms strip on upload. Re-encoding is the only durable approach.
Related APIs
- Compression APICompress video, image, PDF, and audio files programmatically. Per-file-type presets and target-size mode.
- Merge APIMerge PDFs, videos, images, and audio files programmatically. Order-preserving, format-aware concatenation.
- Split APISplit PDFs by page range, videos by duration, audio by silence detection via API. Per-output naming and ZIP delivery.
- OCR APIOptical Character Recognition for PDFs and images via API. 100+ languages, searchable PDF output, plain-text extraction.
- File Conversion APIOne unified file conversion API for video, audio, image, document, ebook, archive, and font formats — 255 formats, 2,290+ conversion pairs.
- Convert APIProduction-grade file conversion API with 9 language SDKs, async webhooks, and cloud-to-cloud workflows. Free tier available.
Or browse the full catalogue of 23 API products →
Get an API key
Start integrating the Watermark API in five minutes. Read the docs, grab a key, and ship your first conversion before the trial coffee cools.