Home / API & Hot Folder
Enterprise · API & Hot Folder

Preflight API

A REST API and hot-folder intake for automated packaging and label preflight. Send a file, get a structured JSON report and a PASS, CONDITIONAL_PASS, or FAIL verdict, wired into the MIS and prepress systems you already run.

Preflight.art offers a REST API and a hot-folder intake for automated print preflight, available on the Enterprise plan. Send a packaging or label PDF and it returns a structured JSON report covering spot colors and plate count, dieline dimensions, bleed, barcode check-digit validation, image resolution, total ink coverage, and a PASS, CONDITIONAL_PASS, or FAIL verdict. File checks run automatically inside your workflow instead of one file at a time on a desktop.

Updated August 2026
Access Authentication Endpoints Quickstart Profiles Webhooks Errors Full reference

Access

The API and hot folder are available on the Enterprise plan. Keys are provisioned when you talk to us; there is no self-serve API signup. This reference is open so you can evaluate the API before you commit. Request access, or see the Enterprise plan.

REST API

Submit a file to the API with your key and receive the full preflight result as JSON. Ideal for connecting a web-to-print portal, an MIS, or a custom intake app so every incoming job is checked programmatically.

Hot folder

Point a watched folder at Preflight. Files dropped in are picked up, analyzed, and returned with a report, no code required. The fastest way to automate intake for a team already working from shared folders.

Base URL and authentication

All requests go to the /v1 base over HTTPS and carry your API key in an x-api-key header (not an Authorization bearer token). Keys are issued on the Enterprise plan and managed self-serve from your account.

# Base URL https://preflight.art/v1 # Every request is authenticated with your key -H "x-api-key: $PREFLIGHT_KEY"

Endpoints

MethodPathDescription
GET/v1/profilesList the print profiles available to your key.
POST/v1/preflightSubmit a file (multipart) for preflight. Returns a job id and poll URL.
GET/v1/preflight/{id}/statusJob status, progress, and verdict.
GET/v1/preflight/{id}/reportFull structured findings as JSON.
GET/v1/preflight/{id}/pdfRendered PDF report.
GET/v1/preflight/{id}/sourceDownload the original uploaded file.
GET/v1/preflight/{id}Full job record.
DELETE/v1/preflight/{id}Delete a job and its stored file.
POST/v1/webhooks/testSend a test event to your configured webhook.
GET/v1/webhooks/eventsList recent webhook delivery attempts.

Full request and response schemas: /v1/openapi.json

Quickstart

Submit a file, then fetch the report once the job is complete. Examples in curl, JavaScript, and Python are in the quickstart.

# 1. Submit a file (returns a job id) curl -X POST https://preflight.art/v1/preflight \ -H "x-api-key: $PREFLIGHT_KEY" \ -F "file=@artwork.pdf" \ -F "profile=digital-labels" # 2. Fetch the report once status is complete curl https://preflight.art/v1/preflight/$JOB_ID/report \ -H "x-api-key: $PREFLIGHT_KEY"
# Report response (abridged) { "job_id": "pf_9d2a1f", "status": "complete", "profile_id": "digital-labels", "verdict": "CONDITIONAL_PASS", "counts": { "critical": 0, "warning": 2, "info": 5 }, "findings": [ { "title": "Bleed below profile minimum", "severity": "warning", "category": "bleed", "fix": "Extend artwork to a 3 mm bleed on all sides." } ], "report_pdf_url": "https://preflight.art/v1/preflight/pf_9d2a1f/pdf" }

Full reference: /v1/docs  ·  OpenAPI spec: /v1/openapi.json

Print profiles

Pass a profile with each submission so checks are calibrated to the print method. Fetch the live list any time from GET /v1/profiles.

Webhooks

Rather than poll, subscribe to the preflight.completed event and Preflight will POST to your endpoint when a job finishes, with the verdict and counts attached. Send yourself a test event with POST /v1/webhooks/test, and review recent deliveries with GET /v1/webhooks/events.

# preflight.completed payload { "event": "preflight.completed", "job_id": "pf_9d2a1f", "verdict": "CONDITIONAL_PASS", "counts": { "critical": 0, "warning": 2, "info": 5 }, "report_url": "https://preflight.art/v1/preflight/pf_9d2a1f/report", "completed_at": "2026-08-11T18:04:22Z" }

Errors and rate limits

Errors return the matching HTTP status and a JSON body with a stable code and a human-readable message. Requests are rate limited per plan; exceeding a limit returns 429.

HTTPCodeMeaning
401API_KEY_REQUIREDMissing, malformed, or unrecognized x-api-key header.
403NOT_AVAILABLE_ON_THIS_PLANThe key's plan does not include API access. The API is Enterprise-only.
403IP_NOT_ALLOWEDRequest came from an IP outside the key's allowlist.
400INVALID_PROFILEUnknown profile id. Use one returned by GET /v1/profiles.
400INVALID_PDFThe uploaded file could not be read as a valid PDF.
413PAYLOAD_TOO_LARGEThe uploaded file exceeds the size limit.
404JOB_NOT_FOUNDNo job with that id exists for this key.
409NOT_READYThe report is not finished yet. Poll status first.
429RATE_LIMIT_HOURLY / RATE_LIMIT_DAILYToo many requests for the plan's limit.

Full error reference: /v1/errors

How it compares

Most ways of automating preflight sit at an extreme: script a desktop plug-in that was never built for unattended use, or commission an enterprise server with a heavy license and a months-long IT deployment. The Preflight API delivers automated, workflow-connected checks as a cloud service, with packaging-native analysis and an AI validation layer neither of those typically includes.

Approach Preflight API Scripting a desktop tool Enterprise preflight server
Integration REST API + hot folder, connects to MIS / prepress Hot-folder add-ons bolted onto a per-seat app Deep, but engineered and billed per change
Where it runs Cloud. Nothing to install or maintain A machine per seat, kept running manually On-site server plus desktop software
Output Structured JSON + shareable report Report file, not always machine-readable Structured, format varies by system
Packaging-native checks Yes. Dieline, spot plates, bleed by profile Generic PDF rules, tuned by hand Yes, with configuration
AI validation layer Yes. Cross-checks the report before it's returned No No
Setup Guided, typically live in about two weeks Per-seat install and scripting Multi-month deployment
Commercials Included with the Enterprise plan Per seat, per year License plus deployment, five and six figures

Third-party positioning is indicative, based on publicly available information. Product and company names are trademarks of their respective owners.

Keep exploring

Get API access

The API and hot folder are part of the Enterprise plan. Tell us about your systems and the files you handle, and we will provision a key and scope the connection to your workflow.