跳转到主要内容

PDF Tools API

Add Watermark API

Apply confidential, draft, approval, or brand watermarks to PDFs automatically before distribution or storage.

Credits

1 Credit / call

1 Credit per successful API request. Failed processing attempts are refunded automatically.

Pricing

1,000 Credits = $1

Every signed-in user receives 100 free API Credits each month.

Endpoint

/api/external/pdf-tools/add-watermark

Use your API Key in the x-api-key header.

cURL example

curl -X POST https://itextmaster.com/api/external/pdf-tools/add-watermark \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: YOUR_API_KEY' \
  -d '{
    "files": [
      { "name": "input.pdf", "dataBase64": "JVBERi0xLjcK..." }
    ],
    "options": {"type":"text","text":"CONFIDENTIAL","position":"diagonal","opacity":0.25,"fontSize":48}
  }' \
  --output watermarked.pdf

Node.js example

import { writeFile } from 'node:fs/promises';

const response = await fetch('https://itextmaster.com/api/external/pdf-tools/add-watermark', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': process.env.ITEXTMASTER_API_KEY
  },
  body: JSON.stringify({
  files: [
    { name: 'input.pdf', dataBase64: 'JVBERi0xLjcK...' }
  ],
  options: {"type":"text","text":"CONFIDENTIAL","position":"diagonal","opacity":0.25,"fontSize":48}
})
});

if (!response.ok) {
  throw new Error(await response.text());
}

await writeFile('watermarked.pdf', Buffer.from(await response.arrayBuffer()));

Python example

import os
import requests

response = requests.post(
    'https://itextmaster.com/api/external/pdf-tools/add-watermark',
    headers={
        'Content-Type': 'application/json',
        'x-api-key': os.environ['ITEXTMASTER_API_KEY'],
    },
    json={
        'files': [
            {'name': 'input.pdf', 'dataBase64': 'JVBERi0xLjcK...'}
        ],
        'options': {'type':'text','text':'CONFIDENTIAL','position':'diagonal','opacity':0.25,'fontSize':48}
    },
)
response.raise_for_status()

with open('watermarked.pdf', 'wb') as f:
    f.write(response.content)

Error codes

401invalid_api_key

The x-api-key header is missing, invalid, or has been rotated.

402insufficient_credits

The account does not have enough API Credits for the request.

422pdf_tool_processing_failed

The file, options, or PDF structure could not be processed.

Limits

  • Text watermarking is best for classification labels and simple branding.
  • Very complex transparency or page boxes may affect visual placement.
  • Preview with representative files before large batch runs.

Example output

watermarked.pdf with X-Credits-Charged: 1 and X-Credit-Balance response headers.

X-Credits-Charged: 1

X-Credit-Balance: 99

Content-Disposition: attachment; filename="watermarked.pdf"

FAQ

Can I add a confidential watermark by API?

Yes. Send text, position, opacity, and font size options to create a visible watermark.

Can I watermark every page?

Yes. The API is designed for document-level watermark automation.

How much does watermarking cost?

Each successful Add Watermark API request uses 1 Credit.

Start with 100 free API Credits

Create an API Key, test Add Watermark API, and buy more Credits only when automation volume grows.