PDF Overlay (Watermark) API

Start building for free today – no credit card required.

Easily add watermarks or overlays to your PDF files with our API. Upload your base document and an overlay PDF, and our API merges them seamlessly. Perfect for adding company logos, confidential stamps, or approval marks to documents automatically.


Benefits of our PDF Overlay API

Effortlessly enhance PDF documents with custom watermarks using our intuitive PDF Overlay API. Add logos, stamps, or confidential markings programmatically while preserving the original layout and formatting. Perfect for branding, security, or compliance purposes, our API seamlessly integrates into your workflow to automate watermarking and ensure consistent document protection across all files.

Read our API documentation to learn how to overlay pages in PDFs.

No-Code PDF Overlaying (Watermarks)

Integrate our PDF Overlay API with Zapier Webhooks to automate watermarking across your documents effortlessly. Add logos, stamps, or confidential markings from hundreds of apps supported by Zapier, without writing a single line of code. Automatically protect and brand your PDFs in workflows, saving time and ensuring consistency across every file.

Multi-language Code Example

curl -X POST https://apdf.io/api/pdf/page/overlay \
  -H "Authorization: Bearer TOKEN" \
  -d file="FILE_URL" \
  -d overlay="OVERLAY_FILE_URL" \
  -d from="1,3" \
  -d to="2-z" \
  -d repeat="1"
const data = new FormData();
data.append('file', 'FILE_URL');
data.append('overlay', 'OVERLAY_FILE_URL');
data.append('from', '1,3');
data.append('to', '2-z');
data.append('repeat', '1');

fetch('https://apdf.io/api/pdf/page/overlay', {
    headers: {'Authorization': 'Bearer TOKEN'},
    method: 'POST',
    body: data
})
.then(response => response.json())
.then(json => console.log(json));
use GuzzleHttp\Client;

$client = new Client();
$response = $client->post(
    'https://apdf.io/api/pdf/page/overlay', [
    'headers' => [
        'Authorization' => 'Bearer TOKEN'
    ],
    'form_params' => [
        'file' => 'FILE_URL',
        'overlay' => 'OVERLAY_FILE_URL',
        'from' => '1,3',
        'to' => '2-z',
        'repeat' => '1'
    ]
]);

$body = $response->getBody();
echo json_encode($body->getContents());
require 'rest-client'

response = RestClient.post(
  'https://apdf.io/api/pdf/page/overlay',
  {
    'file' => 'FILE_URL',
    'overlay' => 'OVERLAY_FILE_URL',
    'from' => '1,3',
    'to' => '2-z',
    'repeat' => '1'
  },
  {
    Authorization: "Bearer TOKEN"
  }
)

puts response.body
import requests

response = requests.post(
    'https://apdf.io/api/pdf/page/overlay',
    headers = {
        'Authorization': 'Bearer TOKEN'
    },
    data = {
        'file': 'FILE_URL',
        'overlay': 'OVERLAY_FILE_URL',
        'from': '1,3',
        'to': '2-z',
        'repeat': '1'
    }
)

print(response.text)
import (
  "fmt"
  "github.com/go-resty/resty/v2"
)

func main() {
  client := resty.New()
  data := map[string]string{
    "file": "FILE_URL",
    "overlay": "OVERLAY_FILE_URL",
    "from": "1,3",
    "to": "2-z",
    "repeat": "1"
  }

  resp, _ := client.R().
    SetFormData(data).
    SetHeader("Authorization", "Bearer TOKEN").
    Post("https://apdf.io/api/pdf/page/overlay")

  fmt.Println(resp.String())
}
import okhttp3.*;

class Pdf {
  public static void main(String[] args) throws Exception {
    OkHttpClient client = new OkHttpClient();
    FormBody formBody = new FormBody.Builder()
      .add("file", "FILE_URL")
      .add("overlay", "OVERLAY_FILE_URL")
      .add("from", "1,3")
      .add("to", "2-z")
      .add("repeat", "1")
      .build();

    Request request = new Request.Builder()
      .url("https://apdf.io/api/pdf/page/overlay")
      .addHeader("Authorization", "Bearer TOKEN")
      .post(formBody)
      .build();

    Response response = client.newCall(request).execute();
    System.out.println(response.body().string());
  }
}

Start using our API today — no trial needed!
Get Started for Free