API quickstart

One request in. A finished label or document out.

If your system can make an authenticated HTTPS request, it can render a Qpro+ label or document. You send a template name and your data; you get back ZPL, PDF, PNG, SVG, or EPS. Nothing to install, no print server to run.

No expiry · No print cap · ZPL never watermarked

Hello, label

The whole thing, in four steps.

01

Create an account

Free, no card, no expiry. You get five templates and one user.

02

Design a template

Or open one from the gallery. Give it a name — that name is your API handle.

03

Map your fields

Name the values your system will send. Qpro+ generates the request snippet — copy it out.

04

Call /v1/render

Send your token and your data. Print what comes back.

POST /v1/rendercurl
curl https://api.qproplus.com/v1/render \
  -H "Authorization: Bearer $QPRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "template": "HELLO-WORLD-4x6",
    "format":   "zpl",
    "data": {
      "title":     "HELLO WORLD",
      "printed_at": "2026-08-16T09:14:22Z"
    }
  }'
200 OKjson
{
  "render_id": "rnd_8f2c41a9",
  "template":  "HELLO-WORLD-4x6",
  "format":    "zpl",
  "output":    "^XA^FO40,40^A0N,60,60^FDHELLO WORLD^FS…^XZ",
  "rendered_at": "2026-08-16T09:14:22Z"
}

Authentication

An API token and a secret. Nothing exotic.

Generate a token pair in your account settings. Send the token as a bearer credential on every request. Rotate or revoke at any time — revocation takes effect immediately.

Keep the secret server-side

Never ship a Qpro+ secret in browser code, a mobile binary, or firmware a customer can read.

One pair per environment

Separate tokens for development, staging, and production so you can revoke one without stopping the line.

Scope by template

Restrict a token to specific templates when it's deployed somewhere you don't fully control.

Output formats

Ask for what you're going to do with it.

formatReturnsUse it for
zplZPL II command stringSending straight to a thermal printer
pdfBase64 PDFPacking lists, certificates, form-fill and archival documents
pngBase64 PNGPreviews, web display, audit records
svgSVG markupVector output, scaling, downstream editing
epsBase64 EPSPrepress and commercial print workflows
jsonStructured element dataInspecting what the template resolved to

Languages

It is an HTTP call, so it works wherever you are.

Pythonrequests
import os, requests

res = requests.post(
    "https://api.qproplus.com/v1/render",
    headers={"Authorization": f"Bearer {os.environ['QPRO_TOKEN']}"},
    json={
        "template": "FG-PALLET-4x6",
        "format": "zpl",
        "data": {
            "lot_number": "L25-8814",
            "pallet_id": "PLT-4471",
            "piece_qty": "48 CS",
        },
    },
    timeout=10,
)
res.raise_for_status()
zpl = res.json()["output"]
JavaScriptnode
const res = await fetch("https://api.qproplus.com/v1/render", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.QPRO_TOKEN}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    template: "FG-PALLET-4x6",
    format: "zpl",
    data: {
      lot_number: "L25-8814",
      pallet_id:  "PLT-4471",
      piece_qty:  "48 CS"
    }
  })
});

if (!res.ok) throw new Error(await res.text());
const { output } = await res.json();

Postman

Print a Hello World label without writing anything.

The collection includes a pre-built render request, a working sample template, and environment variables for your token. Import it, paste your key, and send. If it prints, the integration is going to work.

Included requestscollection
Qpro+ API
├── Render — Hello World (ZPL)
├── Render — Hello World (PDF)
├── Render — pallet label with GS1-128
├── Render — pass-through fields
├── List   — templates
├── Get    — template field map
└── Get    — render history

Limits and errors

What you'll hit, and what it means.

StatusMeaningWhat to do
401Token missing, malformed, or revokedCheck the Authorization header and that the token is still active
403Token isn't scoped to this templateWiden the token scope, or call a template it covers
404No template with that nameNames are case-sensitive; list your templates to confirm
422A mapped field is missing or the wrong typeThe response names the field — send it, or make it optional in the map
429Rate limit reachedFree accounts are capped at 60 renders per minute. Respect Retry-After

Paid accounts are provisioned against your expected throughput rather than a fixed published ceiling. If you're load-testing toward production volume, tell us first so we raise it before you hit it.

Get a label on real stock today.

Free account, no expiry, no print cap, and ZPL output is never watermarked — so what you print now is exactly what you'd print in production.

Qpro+ is a Quando Solutions product — supply chain & manufacturing IT