Use case
Use it after a reviewer or detection system identifies regions that must be covered before a PDF is shared.
PDF Tools API
Apply deterministic redaction areas from review decisions, coordinates, or compliance workflows.
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/pdf-redactionUse your API Key in the x-api-key header.
Use it after a reviewer or detection system identifies regions that must be covered before a PDF is shared.
curl -X POST https://itextmaster.com/api/external/pdf-tools/pdf-redaction \
-H 'x-api-key: YOUR_API_KEY' \
-F 'file=@input.pdf;type=application/pdf' \
-F 'options={"areas":[{"page":1,"x":72,"y":120,"width":180,"height":36,"replacementText":"REDACTED"}],"color":{"r":0,"g":0,"b":0}}' \
--output redacted.pdfcurl -X POST https://itextmaster.com/api/external/pdf-tools/pdf-redaction \
-H 'x-api-key: YOUR_API_KEY' \
-F 'file=@input.pdf;type=application/pdf' \
-F 'options={"areas":[{"page":1,"x":72,"y":120,"width":180,"height":36,"replacementText":"REDACTED"}],"color":{"r":0,"g":0,"b":0}}' \
--output redacted.pdfcurl -X POST https://itextmaster.com/api/external/pdf-tools/pdf-redaction \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY' \
-d '{
"file": { "name": "input.pdf", "dataBase64": "JVBERi0xLjcK..." },
"options": {"areas":[{"page":1,"x":72,"y":120,"width":180,"height":36,"replacementText":"REDACTED"}],"color":{"r":0,"g":0,"b":0}}
}' \
--output redacted.pdfimport { writeFile } from 'node:fs/promises';
const response = await fetch('https://itextmaster.com/api/external/pdf-tools/pdf-redaction', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': process.env.ITEXTMASTER_API_KEY
},
body: JSON.stringify({
file: { name: 'input.pdf', dataBase64: 'JVBERi0xLjcK...' },
options: {"areas":[{"page":1,"x":72,"y":120,"width":180,"height":36,"replacementText":"REDACTED"}],"color":{"r":0,"g":0,"b":0}}
})
});
if (!response.ok) {
throw new Error(await response.text());
}
await writeFile('redacted.pdf', Buffer.from(await response.arrayBuffer()));import os
import requests
response = requests.post(
'https://itextmaster.com/api/external/pdf-tools/pdf-redaction',
headers={
'Content-Type': 'application/json',
'x-api-key': os.environ['ITEXTMASTER_API_KEY'],
},
json={
'file': {'name': 'input.pdf', 'dataBase64': 'JVBERi0xLjcK...'},
'options': {'areas': [{'page': 1, 'x': 72, 'y': 120, 'width': 180, 'height': 36, 'replacementText': 'REDACTED'}], 'color': {'r': 0, 'g': 0, 'b': 0}}
},
)
response.raise_for_status()
with open('redacted.pdf', 'wb') as f:
f.write(response.content)invalid_api_keyThe x-api-key header is missing, invalid, or has been rotated.
insufficient_creditsThe account does not have enough API Credits for the request.
pdf_tool_processing_failedThe file, options, or PDF structure could not be processed. Failed processing attempts are refunded automatically.
redacted.pdf with X-Credits-Charged: 1 and X-Credit-Balance response headers.
Content-TypeContent-DispositionX-Credits-ChargedX-Credit-BalanceEach successful PDF Redaction API request uses 1 Credit. 1,000 Credits cost $1, and every signed-in user receives 100 free API Credits each month.
Failed processing attempts are refunded automatically, and the API returns an error response you can log or retry.
No. Keep API Keys server-side and call the endpoint from your backend, queue, or automation job when you need to pdf redaction.
Create an API Key, test PDF Redaction API, and buy more Credits only when automation volume grows.