Skip to content

Supported formats

The conversion endpoint, POST https://api.labelzoom.com/api/v2/convert/{source}/to/{target}, accepts these formats.

Format Content-Type Source Target
zpl (Zebra) text/plain Yes Yes
epl (Zebra and Eltron) text/plain Yes Yes
ipl (Intermec) text/plain Yes Yes
tspl (TSC) text/plain Yes Yes
dpl (Datamax) text/plain Yes Yes
sbpl (SATO) text/plain Yes Yes
pdf application/pdf Yes Yes
png image/png Yes Yes
jpeg (jpg also works) image/jpeg Yes Yes
gif image/gif Yes Yes
bmp image/bmp Yes Yes
xml (LabelZoom XML) application/xml Yes Yes
json (LabelZoom JSON) application/json Yes Paid plans
url text/plain Yes No

On the free tier, conversion between two image or PDF formats (such as pdf to png), the json target, and the dialect parameter return 403. See Free tier.

Body How to send it
A label or file The raw bytes, with the format’s Content-Type. application/octet-stream also works for any source.
A URL The URL as text/plain, with the source url. The URL must return a supported Content-Type. Converting a URL to ZPL requires an API key; without one, the request returns 401.
Base64 For an image or PDF source, base64 text with Content-Type: text/plain.

Form-urlencoded and multipart bodies return 415. Accept can be */*, the target’s media type, or a wildcard such as image/*. An Accept that doesn’t match the target returns 400.

Terminal window
curl -X POST "https://api.labelzoom.com/api/v2/convert/url/to/zpl" \
-H "Authorization: Bearer API_KEY" \
-H "Content-Type: text/plain" \
-H "Accept: */*" \
--data "https://example.com/label.pdf" \
--output label.zpl

ZPL, XML, and JSON output is text.

An input can hold several labels, such as several ^XA…^XZ blocks or a multi-page PDF:

Target Output
pdf One page per label.
zpl, epl, ipl, tspl, dpl, sbpl Every label, in sequence.
png, jpeg, gif, bmp, xml The first label only. To pick another, set labelIndex.

On the free tier, a request converts only its first label, and later labels become a placeholder label. To convert a later label on the free tier, request it on its own with labelIndex. See Free tier. Each data entry also produces a label; see Variable data.