PDF metadata
Get PDF properties and signs of processing without payment parameters.
Send a PDF to POST /v1/pdf/metadata to inspect dates, creation software,
file properties, and signs of processing. No bank, amount, or recipient is required.
To compare a receipt against a payment request, use receipt verification.
Send the file
Use an active API key for your company and exactly one file field:
curl https://api.kvitera.tech/v1/pdf/metadata \
-H 'Authorization: Bearer YOUR_API_KEY' \
-F 'file=@document.pdf;type=application/pdf'Replace YOUR_API_KEY with your key and document.pdf with a local PDF.
The result is returned in the same response. Images, archives, and password-protected PDFs
are not supported. See the API reference for the complete schema.
Read the result
status describes analysis coverage; assessment describes detected signs:
| Field and value | Action |
|---|---|
status: complete | Declared checks completed; read properties and limitations |
status: partial | Inspect coverage and limitations for unavailable information |
assessment: signals_detected | Read findings and assess the reasons for document processing |
assessment: no_signals_detected | Completed checks found no signs; this does not prove the file is unchanged |
assessment: inconclusive | Request an original file or review the document manually |
Signs may result from ordinary saving, signing, or form completion.
No assessment value confirms authenticity or the receipt of money.
Response excerpt:
{
"request_id": "pdf_example",
"analysis_version": 1,
"status": "complete",
"assessment": "signals_detected",
"findings": [
{
"code": "incremental_updates_detected",
"severity": "info",
"message": "В файле обнаружены сохранённые обновления."
}
]
}Use stable code and enum values for automation. message is intended for readers.
analysis_version distinguishes versions of the analysis.
Inspect properties and sources
metadata contains the author, title, creation application (creator), PDF producer
(producer), dates, and other supported properties. metadata.properties lists their
original values with technical names and the info or xmp source.
Dates contain raw, value, status, precision, and timezone_known.
Do not assume UTC when a timezone is absent. missing means no date is specified;
invalid means it could not be interpreted. Long values marked truncated: true are
shortened; this method does not return their full original text.
history.saved_versions describes versions retained in the file. A single version does
not prove that no changes occurred. signatures.presence describes signature object
detection; signatures.validation: not_performed means validity was not checked.
coverage reports which sections are available and how many pages were analyzed.
Missing text or metadata does not by itself indicate forgery. This method does not
evaluate edits within images or verify payment content.
Limits and retries
- The standard limit is 15 MiB and 50 pages; complex PDFs can be rejected at smaller sizes.
- The standard rate limit is 30 requests per minute per company, shared by its keys, workspace and image metadata inspections.
- Uploads have up to 15 seconds; analysis has up to 10 seconds. Allow additional time in the client, for example a 35-second timeout.
- Receipt check quota is not consumed. Standalone inspection creates no receipt history entry and does not affect replay detection.
- A repeated request runs a new analysis and counts toward the rate limit.
Idempotency-Keydoes not change this behavior.
The source PDF is not retained: temporary files are removed after processing. Reports
and filenames are saved for 30 days and are available to your company’s members in the
workspace metadata history.
request_id identifies the report and can be used when contacting support. Save the JSON
response in your own system for longer retention. History includes new inspections;
earlier reports cannot be recovered. The free landing-page form does not save reports
to your company’s history.
Handle errors
| HTTP | Code | Action |
|---|---|---|
| 401 / 403 | unauthorized, tenant_disabled | Check the key and company access |
| 408 | upload_timeout | Check the connection and retry the upload |
| 413 | upload_too_large | Choose a smaller file |
| 415 | unsupported_media_type | Send a PDF using multipart/form-data |
| 422 | validation | Send exactly one file without additional fields or query parameters |
| 422 | invalid_pdf, encrypted_pdf | Request a readable original PDF without a password |
| 422 | pdf_complexity_limit, pdf_analysis_timeout | Use a less complex document; do not repeatedly submit the same file |
| 429 | rate_limit | Wait for the seconds specified in Retry-After |
| 503 | overloaded, pdf_analysis_unavailable, database_unavailable | Retry later, respecting Retry-After when present |
| 503 | feature_unavailable | The method is temporarily disabled; try later |
The error envelope is described in the general guide.