kvitera

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 valueAction
status: completeDeclared checks completed; read properties and limitations
status: partialInspect coverage and limitations for unavailable information
assessment: signals_detectedRead findings and assess the reasons for document processing
assessment: no_signals_detectedCompleted checks found no signs; this does not prove the file is unchanged
assessment: inconclusiveRequest 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-Key does 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

HTTPCodeAction
401 / 403unauthorized, tenant_disabledCheck the key and company access
408upload_timeoutCheck the connection and retry the upload
413upload_too_largeChoose a smaller file
415unsupported_media_typeSend a PDF using multipart/form-data
422validationSend exactly one file without additional fields or query parameters
422invalid_pdf, encrypted_pdfRequest a readable original PDF without a password
422pdf_complexity_limit, pdf_analysis_timeoutUse a less complex document; do not repeatedly submit the same file
429rate_limitWait for the seconds specified in Retry-After
503overloaded, pdf_analysis_unavailable, database_unavailableRetry later, respecting Retry-After when present
503feature_unavailableThe method is temporarily disabled; try later

The error envelope is described in the general guide.

On this page