API reference

Base URL: https://appclickprint.com. Keep every acm_ management key and acp_ customer key in trusted backend code.

Create a developer account

POST /v1/developers
Content-Type: application/json

{
  "businessName":"Your SaaS",
  "email":"[email protected]",
  "password":"minimum-10-characters",
  "allowedOrigins":["https://app.example.com"]
}

No billing details are required to create a developer. The response shows the management key once and includes a Demo Customer with its own API key, onboarding URL and gateway code. The developer’s first 100 successful prints are free and shared across every customer they create.

Activate developer-paid billing when ready

After testing, the developer can add their legal billing details and complete Stripe Checkout once. Approved accounts can instead be enabled for direct invoicing by AppClickPrint without supplying Stripe billing details. Each paid site costs $2.50 USD monthly and includes a hard 50 MB allowance. See the billing guide.

Up to 25,600 direct-URL jobs: each gateway-direct documentUrl job uses a fixed 2 KB of allowance. Compact text-only uploads can also exceed 20,000 labels when each averages about 2.5 KB or less. Learn how usage is calculated.

Provision a customer

POST /v1/developer/customers
Authorization: Bearer acm_YOUR_MANAGEMENT_KEY
Idempotency-Key: customer-4821-create
Content-Type: application/json

{"externalId":"customer-4821","businessName":"Example Company"}

Customers can be created during the shared free trial or after billing is active, provided the developer remains below their configured customer limit. Customer portal email and password remain optional. The response returns the one-time customer API key, onboarding URL and gateway code.

Set the customer's monthly limit

PATCH /v1/developer/customers/customer-4821/usage-limit
Authorization: Bearer acm_YOUR_MANAGEMENT_KEY
Content-Type: application/json

{"monthlyLimitMb":100}

Limits use 50 MB increments. Every additional 50 MB adds $1 USD per month. Gateway-direct URL jobs use 2 KB each. Uploaded or inline jobs use a 2 KB minimum and are rounded up to 0.5 KB increments. See the complete calculation and direct-URL guide.

Print

POST /v1/printers/{printerAlias}/print
Authorization: Bearer acp_CUSTOMER_API_KEY
Content-Type: multipart/form-data

documentUrl=https://files.example.com/signed/label.pdf
filename=label.pdf
widthMm=100
heightMm=150
copies=1
photoMode=true

PDF jobs require widthMm and heightMm. Optional Boolean photoMode=true improves photographs for compatible raster drivers; false favours crisp text and barcodes. It overrides the saved printer setting for this job; omit it to inherit that setting. Native IPP/AirPrint and operating-system drivers handle images themselves. Use an idempotency key for retries.

Send ZPL directly

curl -X POST https://appclickprint.com/v1/printers/zebra-label/print \
  -H "Authorization: Bearer acp_CUSTOMER_API_KEY" \
  -F "format=zpl" \
  -F 'data=^XA^FO40,40^A0N,40,40^FDHello^FS^XZ' \
  -F "idempotencyKey=label-10492"

ZPL text can be supplied as data. For a file or binary-safe transport, upload it as document or use dataBase64.

Send ESC/POS directly

curl -X POST https://appclickprint.com/v1/printers/receipt/print \
  -H "Authorization: Bearer acp_CUSTOMER_API_KEY" \
  -F "format=escpos" \
  -F "[email protected];type=application/octet-stream" \
  -F "idempotencyKey=receipt-10492"

ESC/POS is binary, so upload a command file or submit padded Base64 in dataBase64. Raw jobs are passed through unchanged and are accepted only when the selected printer has the matching ZPL or Epson ESC/POS driver. copies repeats the complete raw payload; omit it if the commands already specify quantity.

Billing and limit failures return machine-readable errors including billing_required and monthly_print_limit_reached.

Download OpenAPI JSON