Skip to content
AutomatePrint
Start free

Connect

Connect your MIS and web-to-print

Push artwork in, request approvals, run nests and screening, and pull cut files and quotes out. The OpenAPI 3 schema is public, with Swagger and ReDoc, and API keys are per user.

On every plan

Create an estimate with a customer link POST
curl -sS -X POST https://automateprint.com/a/your-team/estimating/api/v1/estimates/ \
  -H "Authorization: Api-Key $API_KEY" \
  -F "file=@window-decal.pdf;type=application/pdf" \
  -F "external_id=order-1001" \
  -F "customer_name=Larkfold Studio" \
  -F 'designer_link={"role": "customer", "expires_in_days": 14,
                 "return_url": "https://shop.example.com/orders/1001/done"}'

Returns the estimate with its designer_url: your customer traces and submits the parts, and Finish brings them back to your shop. The same external_id twice gets 409 with the existing id. Estimating API docs

Upload a folder to Files POST
import os, pathlib, requests

API = "https://automateprint.com/a/your-team/files/api/v1"
api = requests.Session()
api.headers["Authorization"] = f"Api-Key {os.environ['API_KEY']}"

files = [p for p in pathlib.Path("Larkfold").rglob("*") if p.is_file()]
paths = sorted({p.parent.as_posix() for p in files})
folders = api.post(f"{API}/folders/ensure/", json={"paths": paths}).json()["folders"]

for path in files:
    with path.open("rb") as handle:
        data = {"folder": folders[path.parent.as_posix()], "on_conflict": "version"}
        answer = api.post(f"{API}/files/", files={"file": handle}, data=data).json()
    print(path, answer["status"])  # new, version, unchanged or skipped

Missing folders are created, and a file sent again becomes its next version. Files up to 100 MiB go in one request; larger ones use an upload session. Files API docs

Today, and with AutomatePrint

Today: Orders are re-keyed from the web shop into prepress.

With AutomatePrint: Push artwork and metadata in with an external id; duplicates are refused.

Today: Someone emails the proof link by hand.

With AutomatePrint: Request approvals and read decisions over the API.

Today: Cut files are copied to the cutter's folder by hand.

With AutomatePrint: Pull print and cut files for a layout when it's ready.

In numbers

public schema
OpenAPI 3
with Swagger and ReDoc
per user
Api-Key
shown once, stored hashed
API areas
12

How it works

  1. Create a key

    Under API Keys on your profile. It's shown once and acts as you.

  2. Read the schema

    Browse it in Swagger or ReDoc, or generate a client from the OpenAPI 3 schema in your language.

  3. Push and poll

    Send work in with your own ids, then poll for what changed.

Every area has an API

Built for integrations

external_id on estimates, their lines and imposition jobs (a duplicate returns 409 with the existing id), free-form metadata, and polling by external_id or changed-since.

  • Stable error codes with a sentence you can show people
  • Idempotency keys on Files uploads and batches
  • Cursor pages and ETags for safe changes

What's in it

  • Files API on every plan
  • Custom integration API access on Production
  • OpenAPI 3 schema with Swagger and ReDoc
  • API keys per user
  • Polling by external_id and changed-since
  • Estimates with a customer designer link in one call
  • A ready-made sync script for your file server

What we don't do

  • No webhooks yet: poll by external_id or changed-since.

On which plan

Compare every plan
Capability FreeShopProductionPlant
Files API and API keys Included Included Included Included
Workflow REST API: approvals, preflight, prepress, imposition, nesting, marks, estimating, screening Not included Not included Included Included

Files API on every plan; workflow APIs on Production and Plant.

FAQ

Questions, answered

Anything else? Email hello@automateprint.com and a person who knows print will answer.

How do I authenticate?

With an API key per user, sent as “Authorization: Api-Key …”. Keys are stored hashed and shown once.

Are there rate limits?

Starting nests is limited to 60 a minute per user, and estimating's nest and pricing calls to 60 a minute per user or designer link.

Webhooks?

Not yet: poll by external_id or changed-since.

Which plan?

The Files API is on every plan; the workflow APIs are on Production and Plant.

Put every job on one platform

Start free, with 14 days of every Production feature. No card, and your customers review for free.