Watermark API

Watermark API · v1

Watermark, resize and convert files over HTTP

Send a file's URL and a list of operations. The API processes the image, video or PDF in the background and hands you a link to the result.

$1.00 free credit $0.002 per image Test keys are free
curl -X POST https://api.watermark.ws/v1/images/process \
  -H "Authorization: Bearer $WATERMARK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source": "https://example.com/photo.jpg",
    "operations": [
      {"type": "resize", "width": 1600, "height": 1600},
      {"type": "watermark", "image_url": "https://example.com/logo.png", "x": 40, "y": 40}
    ],
    "output": {"format": "webp"}
  }'

How a request works

Every processing endpoint follows the same three steps, whatever the file.

Requests and results →
POST /v1/images/process

Send a URL and operations

The API checks the request and answers at once with 202 Accepted.

{ "id": 1234, "status": "queued" }
GET /v1/requests/1234

It runs in the background

Poll the request, or pass webhook_url and get it posted to you when it finishes.

queuedprocessingsucceededfailedaborted
result.files[0].url

Download the result

Follow the link in the finished request. Failed and aborted requests are free.

"format": "webp", "size": 183021

What you can do

Operations chain in one request: resize, then watermark, then save as WebP.

Full API reference →

Libraries

Call the API from PHP or a terminal. Both wait for the result and retry safely; any other language works over plain HTTP.

Docs

Guides explain how the API behaves. The reference lists every field.

Pricing

Prepaid credit. Failed and aborted requests are free, and so is everything run with a test key.

Pricing and limits →
$1.00
Free credit on a new account
$0.002 / image
images/process
$0.004 / page
documents/process
$0.02 / minute
videos/process, accounts that have bought credits

For AI agents

Every page is also Markdown

Add .md to any docs URL, or ask for text/markdown, and you get the page as plain Markdown that reads well in a terminal or a model's context.

Two ways to the same Markdown
curl https://api.watermark.ws/docs/webhooks.md

curl https://api.watermark.ws/docs/webhooks \
  -H "Accept: text/markdown"