PDF to PDF/A
Convert a PDF file to PDF/A archival format
PDF to PDF/A feature of the Conversions endpoint converts a standard PDF into a PDF/A archival format. PDF/A is an ISO-standardized subset of PDF designed for long-term preservation — it embeds all fonts, colour profiles, and metadata required to render the document identically in the future without any external dependencies.
Conformance levels
PDF/A comes in three generations (1, 2, 3) and three conformance tiers (b, u, a):| Level | Name | Description |
|---|---|---|
1b | PDF/A-1b | Basic visual-appearance conformance. No special document structure required. |
1a | PDF/A-1a | Accessible conformance. Requires a tagged PDF (logical document structure). |
2b | PDF/A-2b | Basic conformance for PDF 1.7 features: JPEG2000 images, transparency, and layers. |
2u | PDF/A-2u | Unicode conformance. Like 2b, plus guarantees all text is Unicode-mappable for reliable search and copy. |
2a | PDF/A-2a | Accessible conformance for PDF 1.7 features. Requires a tagged PDF. |
3b | PDF/A-3b | Like 2b, but also permits embedding arbitrary files (e.g. XML, CSV) inside the PDF. |
3u | PDF/A-3u | Unicode conformance for PDF/A-3 feature set. |
3a | PDF/A-3a | Accessible conformance for PDF/A-3. Requires a tagged PDF. |
a (accessible) require the source PDF to be tagged — that is, it must contain a logical structure tree. Submitting an untagged PDF to an a-level conformance target will return an error. Use b or u variants for general-purpose archiving.Output File Format
The endpoint can return output either as JSON or as a binary file. The format depends on theAccept header (details below), which defaults to application/json.
Processing
When requesting JSON, you can run the operation synchronously or asynchronously. This is determined by thePrefer header (details below).
- In sync mode, the response includes a URL pointing to the processed file.
- In async mode, the request creates a Job, and the response contains the Job ID and status so you can track progress.
Custom File Delivery
The endpoint supports custom file-delivery destinations through the optional delivery parameter. You can provide an upload target, such as your own PUT endpoint or a pre-signed S3 URL, and Nitro will upload the resulting file there. This works for both synchronous and asynchronous processing.-
Sync delivery
In synchronous calls, the delivery parameter lets you direct Nitro to upload the output file to a custom URL endpoint or a pre-signed URL (e.g S3), by providing an upload url in theuploadResultTooruploadResultsToproperties.Custom endpoint
S3 delivery
If you are using S3 to manage delivery uploads, follow this AWS documentation to generate a pre-signed PUT URL. -
Async delivery
In asynchronous flows, you can also provide a custom URL or pre-signed S3 object viauploadResultTooruploadResultsTo, to upload your file(s) once the Job is done processing.Callback
For asynchronous processing, you can also include a callback URL within the delivery parameter. This callback is a POST endpoint that Nitro will call once the Job is created and running, providing details about the file-processing job. Example of Nitro’s callback request body:
Response behavior Matrix
This matrix shows the expected response behavior based on content type, sync/async mode, and custom file-delivery settings.JSON (application/json) | Binary (application/octet-stream) | |
|---|---|---|
| Synchronous | Returns a JSON object with a file(s) URL(s). | Returns the processed file directly as binary. |
Asynchronous (respond-async) | Returns a JSON object with a Job ID and status. | Async preference ignored, returns sync binary. |
| Synchronous delivery | File delivered to custom endpoint / Bucket, returns success confirmation. | N/A |
| Asynchronous delivery | Returns a JSON object with a Job ID and status. The file(s) will be uploaded to the provided PUT endpoint / S3 Bucket at the end of process. If callback url is provided, Nitro will notify the endpoint with a JOB ID and location. | N/A |
Limits
The Platform API has the following limits:- File size: Maximum of 100 MB per request. This applies to single-file and multi-file requests.
- Page count: Maximum of 500 pages per individual document. This applies to single-file and multi-file requests. Multiple documents may exceed 500 pages in total.
- Retention time: Inputs and outputs are deleted approximately 15 minutes after the operation completes.
Request
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Controls response format and behavior. See endpoint description above for detailed response combinations.
application/json: Returns JSON response with operation resultapplication/octet-stream: Returns binary file content*/*: Defaults to JSON response
application/json, application/octet-stream, */* Controls synchronous vs asynchronous operation. See endpoint description above for behavior details.
respond-async: Makes request asynchronous, returns job status for polling- No value: Synchronous response
respond-async Body
The Conversions' endpoint method: convert
convert The file to process. It can be provided as a binary upload or as a JSON remote file reference.
This endpoint lets you supply your own URL to receive the single-file output. The URL may point to a custom API endpoint or a pre-signed S3 URL.
The HTTP method defaults to PUT, but you can change it based on your implementation needs via the verb parameter. You can also provide custom headers, such as authentication headers or any others required by your endpoint.
Response
Returns either JSON or binary output depending on the Accept header (defaults to JSON). JSON responses include a file URL for synchronous tasks or a job status for asynchronous tasks.
- Sync - Single File
- Async - Job