API URL
POST /api/v1/pdf-toolkit
Headers
Code
Content-Type: application/jsonBody Parameters
Param
Type
Description
operation
required
string
merge, split, extract, rotate, watermark, compress, encrypt or inspect
file
optional
file
Canonical base64 PDF or object with data; non-merge operations
files
optional
array
2-20 canonical base64 PDFs or objects with data; merge only
pages
optional
string
Page operations: all or ascending ranges; duplicates deduplicated
angle
optional
number
Rotate: multiples of 90; watermark: any angle; -360 to 360
text
optional
string
Watermark: 1-200 characters supported by Helvetica WinAnsi
opacity
optional
number
Watermark: 0-1; default 0.6
color
optional
string
Watermark: three RGB numbers 0-1; default 0.6 0.6 0.6
fontSize
optional
number
Watermark: 8-300 points; default scales with page size
password
optional
string
Encrypt: 8+ characters, max 127 UTF-8 bytes, no CR/LF/NUL
owner_password
optional
string
Same password limits; different from user; random when omitted
Example Request
Code
POST https://datpaq.com/api/v1/pdf-toolkit?api_key=your-api-key | Body: {"operation":"inspect","file":"JVBERi0xLjMKJZOMi54gUmVwb3J0TGFiIEdlbmVyYXRlZCBQREYgZG9jdW1lbnQgKG9wZW5zb3VyY2UpCjEgMCBvYmoKPDwKL0YxIDIgMCBSIC9GMiA2IDAgUgo+PgplbmRvYmoKMiAwIG9iago8PAovQmFzZUZvbnQgL0hlbHZldGljYSAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZyAvTmFtZSAvRjEgL1N1YnR5cGUgL1R5cGUxIC9UeXBlIC9Gb250Cj4+CmVuZG9iagozIDAgb2JqCjw8Ci9BIDw8Ci9TIC9VUkkgL1R5cGUgL0FjdGlvbiAvVVJJIChodHRwczovL2RhdHBhcS5jb20pCj4+IC9Cb3JkZXIgWyAwIDAgMCBdIC9SZWN0IFsgNzIgNzAwIDIyMCA3MzAgXSAvU3VidHlwZSAvTGluayAvVHlwZSAvQW5ub3QKPj4KZW5kb2JqCjQgMCBvYmoKPDwKL0JpdHNQZXJDb21wb25lbnQgOCAvQ29sb3JTcGFjZSAvRGV2aWNlUkdCIC9GaWx0ZXIgWyAvQVNDSUk4NURlY29kZSAvRmxhdGVEZWNvZGUgXSAvSGVpZ2h0IDE2IC9MZW5ndGggMjQgL1N1YnR5cGUgL0ltYWdlIAogIC9UeXBlIC9YT2JqZWN0IC9XaWR0aCAxNgo+PgpzdHJlYW0KR2IiWldfIWxnZk5NO1BtISNQXzkhPH4+ZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8Ci9Bbm5vdHMgWyAzIDAgUiBdIC9Db250ZW50cyAxMSAwIFIgL01lZGlhQm94IFsgMCAwIDYxMiA3OTIgXSAvUGFyZW50IDEwIDAgUiAvUmVzb3VyY2VzIDw8Ci9Gb250IDEgMCBSIC9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdIC9YT2JqZWN0IDw8Ci9Gb3JtWG9iLmViNDRiZjM1MjZiZjllNzk4ZjQ1MzYyODhmMzQ1Y2FlIDQgMCBSCj4+Cj4+IC9Sb3RhdGUgMCAKICAvVHJhbnMgPDwKCj4+IC9UeXBlIC9QYWdlCj4+CmVuZG9iago2IDAgb2JqCjw8Ci9CYXNlRm9udCAvQ291cmllciAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZyAvTmFtZSAvRjIgL1N1YnR5cGUgL1R5cGUxIC9UeXBlIC9Gb250Cj4+CmVuZG9iago3IDAgb2JqCjw8Ci9Db250ZW50cyAxMiAwIFIgL01lZGlhQm94IFsgMCAwIDYxMiA3OTIgXSAvUGFyZW50IDEwIDAgUiAvUmVzb3VyY2VzIDw8Ci9Gb250IDEgMCBSIC9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdCj4+IC9Sb3RhdGUgMCAvVHJhbnMgPDwKCj4+IAogIC9UeXBlIC9QYWdlCj4+CmVuZG9iago4IDAgb2JqCjw8Ci9QYWdlTW9kZSAvVXNlTm9uZSAvUGFnZXMgMTAgMCBSIC9UeXBlIC9DYXRhbG9nCj4+CmVuZG9iago5IDAgb2JqCjw8Ci9BdXRob3IgKGFub255bW91cykgL0NyZWF0aW9uRGF0ZSAoRDoyMDI2MTAwODEwMTkzNy0wNCcwMCcpIC9DcmVhdG9yIChhbm9ueW1vdXMpIC9LZXl3b3JkcyAoKSAvTW9kRGF0ZSAoRDoyMDI2MTAwODEwMTkzNy0wNCcwMCcpIC9Qcm9kdWNlciAoUmVwb3J0TGFiIFBERiBMaWJyYXJ5IC0gXChvcGVuc291cmNlXCkpIAogIC9TdWJqZWN0ICh1bnNwZWNpZmllZCkgL1RpdGxlIChJbmRlcGVuZGVudCBpbnRlcm9wZXJhYmlsaXR5IGZpeHR1cmUpIC9UcmFwcGVkIC9GYWxzZQo+PgplbmRvYmoKMTAgMCBvYmoKPDwKL0NvdW50IDIgL0tpZHMgWyA1IDAgUiA3IDAgUiBdIC9UeXBlIC9QYWdlcwo+PgplbmRvYmoKMTEgMCBvYmoKPDwKL0ZpbHRlciBbIC9BU0NJSTg1RGVjb2RlIC9GbGF0ZURlY29kZSBdIC9MZW5ndGggMTcwCj4+CnN0cmVhbQpHYXBBMF1hRFYxJ0YhRFg6TjhqSEJSQkAmRkgibDtkJVM7cz5ZUmVFNjdEXjBLMVYyUDM1YV84JyJXKypvVTo9XVVSX1o5XyRRblYlQSM7Wy1wLkJBMDIiP0ZgbFpRTV9kaTYybkk0OWlRVidKL2FiLVQjQDg2XE9nMWdUTGYsZ0B0WmpvWUZCZ1dlSjVJZE1LWkk2OlpacnU4dVtwOyoiYCIybVosNWh+PmVuZHN0cmVhbQplbmRvYmoKMTIgMCBvYmoKPDwKL0ZpbHRlciBbIC9BU0NJSTg1RGVjb2RlIC9GbGF0ZURlY29kZSBdIC9MZW5ndGggMTExCj4+CnN0cmVhbQpHYXBRaDBFPUYsMFVcSDNUXHBOWVReUUtrP3RjPklQLDtXI1UxXjIzaWhQRU1fP0NdNiFmRE5JYzFFT3VpZUM4U2JgLi5vNVRxQ1M2LFVmJWApLlxuZEc3ZiQrWEJdKDZqb2VnSkk7SWNxJWRvfj5lbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCAxMwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwNjEgMDAwMDAgbiAKMDAwMDAwMDEwMiAwMDAwMCBuIAowMDAwMDAwMjA5IDAwMDAwIG4gCjAwMDAwMDAzNTggMDAwMDAgbiAKMDAwMDAwMDU2OSAwMDAwMCBuIAowMDAwMDAwODQ1IDAwMDAwIG4gCjAwMDAwMDA5NTAgMDAwMDAgbiAKMDAwMDAwMTE0NSAwMDAwMCBuIAowMDAwMDAxMjE0IDAwMDAwIG4gCjAwMDAwMDE1MDMgMDAwMDAgbiAKMDAwMDAwMTU2OSAwMDAwMCBuIAowMDAwMDAxODMwIDAwMDAwIG4gCnRyYWlsZXIKPDwKL0lEIApbPGIyMjEzNGRlOWEyYzJkY2E3YjA3ZTIzZjgxMGUxZTE1PjxiMjIxMzRkZTlhMmMyZGNhN2IwN2UyM2Y4MTBlMWUxNT5dCiUgUmVwb3J0TGFiIGdlbmVyYXRlZCBQREYgZG9jdW1lbnQgLS0gZGlnZXN0IChvcGVuc291cmNlKQoKL0luZm8gOSAwIFIKL1Jvb3QgOCAwIFIKL1NpemUgMTMKPj4Kc3RhcnR4cmVmCjIwMzIKJSVFT0YK"}Successful Response
Status
HTML
200 OKBody
Code
{
"success": true,
"operation": "inspect",
"result": {
"size": 2505,
"pages": 2,
"pdfVersion": "1.3",
"encrypted": false
},
"metadata": {
"correlationId": "example-request",
"timestamp": "2026-10-08T12:00:00.000Z",
"processingTime": "8ms",
"api_token_name": "QA",
"rate_limit": {
"limit": 100,
"remaining": 99,
"reset": 1791460860
}
}
}Field
Type
success
boolean
operation
string
result
object
result_data
string
result_files
array
result_pages
number
result_size
number
result_pdfVersion
string
result_encrypted
boolean
result_encryption
string
result_extracted_pages
array
result_rotated_pages
array
result_watermarked_pages
array
result_original_size
number
result_original_stream_bytes
number
result_compressed_stream_bytes
number
name
string
usage
string
operations
array
metadata
object
metadata_correlationId
string
metadata_timestamp
string
metadata_processingTime
string
metadata_api_token_name
string
metadata_rate_limit
object
error
object
status
string
service
string
version
string
engine
string
Error Response
Example
Code
HTTP 400 VALIDATION_ERROR: Missing or invalid input/options — Request could not complete; HTTP 400 INVALID_JSON: Malformed JSON body — Request could not complete; HTTP 401 AuthenticationError: Gateway authentication failure — Request could not complete; HTTP 404 NOT_FOUND: Unknown service route — Request could not complete; HTTP 413 PAYLOAD_TOO_LARGE: JSON body exceeds 64 MiB — Request could not complete; HTTP 429 RATE_LIMITED: More than 40 requests per 15 minutes — Request could not complete; HTTP 500 INTERNAL_ERROR: Unexpected processing failure — Request could not complete; HTTP 422 PROCESSING_LIMIT: Processing time, heap or output limit exceeded — Request could not complete; HTTP 503 SERVICE_BUSY: Two workers are already processing — Request could not complete; HTTP 503 Unhealthy: PDF engine unavailable on health probe — Request could not completeLast Updated: May 4, 2026