Documentation · API v1
API documentation
Everything you need to generate ZPL labels with a single API call.
Quick Start
Generate your first label. Replace YOUR_API_KEY with the key from your dashboard.
curl -X POST https://api.zeepler.com/v1/zeeplify \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"config": {
"size": "4x2"
},
"data": {
"product": "Widget Pro",
"sku": "WDG-001"
},
"templates": [
{
"type": "Text",
"dataPath": "product",
"coords": [
50,
30
],
"font": "0,40"
},
{
"type": "BarCode",
"dataPath": "sku",
"coords": [
50,
100
],
"style": "code128"
}
]
}'Authentication
Every request carries your API key in the x-api-key header. Generate one in your dashboard; it starts with zpl_. A missing, unknown or disabled key is answered with 401.
POST /v1/zeeplify
Host: api.zeepler.com
x-api-key: zpl_your_api_key
Content-Type: application/jsonRequest Body
The request body contains your label data and templates.
configobjectrequiredLabel configuration
{
"size": "4x2" // "3x1" or "4x2"
// "lang" is optional and only takes "zpl", which is the default
}dataobjectrequiredYour label data (any key-value pairs)
{
"product": "Widget Pro",
"sku": "WDG-001",
"price": "$29.99"
}templatesarrayrequiredArray of elements to render on the label
Template Types
Each template defines an element on your label. Use dataPath to reference values from your data object.
Text
{
"type": "Text",
"dataPath": "product", // Key from your data object
"coords": [50, 30], // [x, y] position in dots
"font": "0,40", // Optional: font name, height, width
"maxLength": 22 // Optional: truncate; text does not wrap
}BarCode
{
"type": "BarCode",
"dataPath": "sku",
"coords": [50, 80],
"style": "code128" // Optional: code128 (default), code93, ean13
// ean13 takes 12 or 13 digits
}QRCode
{
"type": "QRCode",
"dataPath": "url",
"coords": [200, 30],
"magnification": 5 // Required: size, 1-10
}Response
On success the API returns ZPL as text/plain, ready to send to a Zebra printer at 203 dpi. This is the exact response to the quick start above.
^XA^MCY^XZ
^XA
^SZ2
^MMT
^MNY
^LL406
^PW815
^LH0,0
^CF0,40^FO50,30^FDWidget Pro^FS
^BY2,2,59^FO50,100^BCN,,N,N,N,A^FDWDG-001^FS
^XZStatus Codes
200Success - ZPL returned400Invalid body - every problem is listed with its field401Missing, unknown or disabled API key429Too many requests - wait the seconds in the Retry-After header - or monthly spending limit reached500Our fault, not yours - retryLabel Sizes
Coordinate system uses dots (203 DPI). Origin (0,0) is top-left.
3" x 1"
615 x 210 dots
Good for: Product labels, asset tags
4" x 2"
815 x 406 dots
Good for: Shipping labels, detailed info
Complete Example
A shipping label with product name, SKU barcode and QR code.
1{2 "config": {3 "size": "4x2"4 },5 "data": {6 "product": "Widget Pro",7 "sku": "WDG-001",8 "url": "https://example.com/track/12345"9 },10 "templates": [11 {12 "type": "Text",13 "dataPath": "product",14 "coords": [15 50,16 3017 ],18 "font": "0,40"19 },20 {21 "type": "BarCode",22 "dataPath": "sku",23 "coords": [24 50,25 10026 ],27 "style": "code128"28 },29 {30 "type": "QRCode",31 "dataPath": "url",32 "coords": [33 560,34 3035 ],36 "magnification": 637 }38 ]39}And what the API returns for it:
^XA^MCY^XZ
^XA
^SZ2
^MMT
^MNY
^LL406
^PW815
^LH0,0
^CF0,40^FO50,30^FDWidget Pro^FS
^BY2,2,59^FO50,100^BCN,,N,N,N,A^FDWDG-001^FS
^BY2,2,0^FO560,30^BQN,2,6^FDQA,https://example.com/track/12345^FS
^XZIntegration guides
Worked labels for public-sector workflows, each with the request, the ZPL it returns, and what to check before going live.
- Healthcare specimen labels
Patient name, date of birth, a scannable MRN and a QR code carrying the specimen id.
- Evidence and property labels
Case and item numbers, who collected it and when, with the case number as a QR code.
- Asset tags
Department, location and a scannable asset number on the smaller 3 × 1 inch stock.
Need Help?
Having trouble? Email us - the first reply comes within 2 business days.