# Watermark API > Watermark, resize and convert images, videos and PDFs over HTTP. Send a public file URL and a list of operations to a /v1 endpoint with an API key (Authorization: Bearer wm_live_… or wm_test_…); the request runs in the background, and you poll GET /v1/requests/{id} or receive a signed webhook, then download the result from a signed link. - OpenAPI 3.1 spec: https://api.watermark.ws/openapi.json - Every page in one file: https://api.watermark.ws/llms-full.txt - Operation catalog as JSON (needs a key): https://api.watermark.ws/v1/operations - Prices and limits as JSON: https://api.watermark.ws/pricing.json - Any docs page as Markdown: add `.md` to its URL, or send `Accept: text/markdown`. ## Docs - [Watermark API](https://api.watermark.ws/docs.md): Watermark, resize and convert images, videos and PDFs over HTTP. Send a public file URL and a list of operations; the API processes the file in the background and gives you a link to the result. - [Quickstart](https://api.watermark.ws/docs/quickstart.md): The Watermark API watermarks, resizes and converts images, videos and PDFs. You send a URL and a list of operations; the API fetches the file, processes it in the background and gives you a link to th... - [Authentication](https://api.watermark.ws/docs/authentication.md): Send your key in the `Authorization` header on every request: - [Requests, results and retries](https://api.watermark.ws/docs/requests.md): Every processing endpoint starts a **request** that runs in the background. The response is the request itself, with status `queued`. - [Webhooks](https://api.watermark.ws/docs/webhooks.md): Pass `webhook_url` on a request, or set a default for the account at [watermark.ws/developers](https://watermark.ws/developers), and the API posts the finished request to it as JSON: - [Errors](https://api.watermark.ws/docs/errors.md): Every error has the same shape and an HTTP status that matches its `type`: - [PHP library](https://api.watermark.ws/docs/php.md): The official PHP client for the Watermark API. One `Client` reaches every endpoint, waits for results, retries safely and checks webhook signatures. - [Command line](https://api.watermark.ws/docs/cli.md): The `watermark` command runs the Watermark API from a terminal, a shell script or a CI job. It waits for each request, downloads the result, and with `--json` prints output that scripts and AI agents... - [Pricing and limits](https://api.watermark.ws/docs/pricing.md): You buy credit in advance at [watermark.ws/developers](https://watermark.ws/developers); each finished request takes its price from it. Failed and aborted requests are free, and so is everything run w... - [Operations](https://api.watermark.ws/docs/operations.md): Operations run in order, top to bottom. Each is an object with a `type` and that operation's parameters; anything else is refused with `422`. The same catalog is served as JSON by `GET /v1/operations`... - [API reference](https://api.watermark.ws/docs/reference.md): All endpoints are under https://api.watermark.ws. Send JSON bodies and your key in the `Authorization` header. Processing endpoints answer `202 Accepted` with a request in status `queued`; read it wit...