ohmywrap
Get an API key

§ Read and verify

Validate PDF API

The only operation that runs in strict mode — every other endpoint uses relaxed validation, because real documents routinely bend the spec and refusing them would be unhelpful. A document that parses but fails strict validation still returns 200 with the verdict in the body; that is what a linter is for.

Endpoint
POST /pdf/validate
Inputs
Exactly 1 PDF
Returns
application/json
Limits
20 MB per file.
Price
$0.001

§ 01 The request

One POST, and the file comes back.

POST /pdf/validate
curl -sS --fail-with-body \
  -H "Authorization: Bearer $OHMYWRAP_KEY" \
  -F "file=@generated.pdf" \
  https://api.ohmywrap.com/pdf/validate

Options

None. Send the file and nothing else. An options object is still accepted, but any key inside it is 422 invalid_options.

Worth knowing

A document that cannot be read at all is 422 invalid_pdf, since there is nothing to report on.

Your first /pdf/validate call takes one line of curl.

Ten thousand calls cost ten dollars, the pack never expires, and nothing you send is kept.

10,000 calls for $10. No subscription, no expiry.