The API is server-to-server. Call it from your backend with a secret key, never from browser code. In the browser, the editor runs with your public Domain Key as before.
Base URL
Authentication
Send a secret key as a bearer token on every request:Endpoints
To put these together into an order check, follow Verify a project before fulfilling.
To be told when a project is created or a file is uploaded rather than asking, use webhooks. Turn on signing so your server can check that each one comes from Print.App.
Conventions
- JSON request and response bodies, UTF-8, with
camelCasefield names. - Every object carries an
objectfield naming its type ("project","account","list"). - Timestamps are ISO-8601 in UTC, for example
2026-10-17T09:12:03Z. - IDs keep their prefixes:
dom_…for your account (your Domain Key),project_…for projects,design_…for designs. - Every response carries an
x-request-idheader. Quote it when you contact support. - Errors share one shape: see Errors & rate limits.
- Lists are paged with a cursor: see Pagination.
Versioning
The version is in the path (/v2). Within v2, changes are additive only: new endpoints, new optional parameters, new fields in responses and new error codes. Write your client to ignore fields it doesn’t know.