İçeriğe atla

API belgeleri

Bir uç nokta ZPL'yi PNG veya PDF'ye işler. Labelary'nin v1 API'si ile uyumludur: aynı yollar, başlıklar ve hatalar.

Bir etiketi oluştur

GET  https://api.openzpl.com/v1/printers/{dpmm}/labels/{width}x{height}/{index}/{zpl}
POST https://api.openzpl.com/v1/printers/{dpmm}/labels/{width}x{height}/{index}
POST https://api.openzpl.com/v1/printers/{dpmm}/labels/{width}x{height}/
dpmmBaskı yoğunluğu: 6dpmm, 8dpmm, 12dpmm, 24dpmm.
width, heightEtiket boyutu inç cinsinden, örneğin 4x6 veya 2.25x1.25. Her biri 15 inçe kadar.
indexHangi etiketi render edeceğinizi belirtin, 0'dan başlayarak. PDF çıktısı ile her etiketi almak için bunu bırakın, her sayfada bir etiket.
zplGET için, URL kodlu ZPL. #'i %23 olarak kodlayın. Uzun herhangi bir şey için POST kullanın.

POST ile ZPL'yi ham istek gövdesi olarak veya file adında bir çok parçalı form alanı olarak gönderin.

API anahtarları

Bir anahtar olmadan, IP adresi başına ücretsiz limitler alırsınız. Kontrol panelinizden bir anahtar ile bunu X-API-Key başlığında gönderin ve çalışma alanınızın plan limitleri geçerli olacaktır.

curl https://api.openzpl.com/v1/printers/8dpmm/labels/4x6/0/ \
  -H "X-API-Key: oz_live_…" --data-binary @label.zpl > label.png

Örnekler

# PNG from a short ZPL string
curl --get https://api.openzpl.com/v1/printers/8dpmm/labels/4x6/0/ \
  --data-urlencode "^xa^cfa,50^fo100,100^fdHello World^fs^xz" > label.png

# PDF with every label in a file
curl https://api.openzpl.com/v1/printers/8dpmm/labels/4x6/ \
  -H "Accept: application/pdf" --form file=@labels.zpl > labels.pdf
import requests

zpl = "^xa^cfa,50^fo100,100^fdHello World^fs^xz"
res = requests.post("https://api.openzpl.com/v1/printers/8dpmm/labels/4x6/0/", data=zpl)
res.raise_for_status()
open("label.png", "wb").write(res.content)
const zpl = "^xa^cfa,50^fo100,100^fdHello World^fs^xz";
const res = await fetch("https://api.openzpl.com/v1/printers/8dpmm/labels/4x6/0/", {
  method: "POST",
  headers: { Accept: "application/pdf" },
  body: zpl,
});
await require("fs/promises").writeFile("label.pdf", Buffer.from(await res.arrayBuffer()));
$zpl = "^xa^cfa,50^fo100,100^fdHello World^fs^xz";
$ch = curl_init("https://api.openzpl.com/v1/printers/8dpmm/labels/4x6/0/");
curl_setopt_array($ch, [CURLOPT_POST => true, CURLOPT_POSTFIELDS => $zpl, CURLOPT_RETURNTRANSFER => true]);
file_put_contents("label.png", curl_exec($ch));

Talep başlıkları

BaşlıkDeğerlerVarsayılan
Acceptimage/png, application/pdfPNG
X-QualityGrayscale (8-bit, düzgün kenarlar) veya Bitonal (1-bit, daha küçük dosyalar)Grayscale
X-Rotation0, 90, 180, 270, saat yönünde0
X-API-KeyÇalışma alanı anahtarınız, isteğe bağlı—

Sınırlar

  • Free, no sign-up and no key: 3 requests per second and 5,000 labels per UTC day, per IP address.
  • Labels, not requests, count against the daily allowance: every label rendered, ^PQ copies and PDF pages included. A 10-label PDF is 1 request and 10 labels.
  • Every request: up to 50 labels, a 1 MB body, 15 inches per side, and 10 seconds of render time.
  • Paid plans (Starter $9/month: 10 requests/s and 25,000 labels/day, Pro $29/month: 10 requests/s and 100,000 labels/day, Business $99/month: 20 requests/s and 500,000 labels/day) are announced but billing isn't live yet. API keys work today; a workspace stays on the Free plan until billing opens.
  • Over a limit the API answers 429 with Retry-After (seconds) and a body that names the limit, e.g. ERROR: Daily limit reached: 5000 labels per UTC day on this plan (^PQ copies and PDF pages count).

Yanıtlar ve hatalar

Başarılı yanıtlar X-Total-Count içerir, ZPL'nin ürettiği etiket sayısıdır, ^PQ kopya dahildir. Hatalar ERROR: ile başlayan düz metinlerdir.

DurumAnlam
400Bir parametre geçersiz, etiket çok büyük veya index aralığın dışında.
401API anahtarı bilinmiyor veya iptal edildi.
406Accept başlığı, henüz mevcut olmayan bir çıktı formatı talep ediyor.
413Gövde 1 MB'tan fazla veya ZPL 50'den fazla etiket üretiyor.
429Planınız için çok fazla talep veya etiket. Retry-After'deki süre kadar bekleyin.
503Etiketin işlenmesi 10 saniyeden fazla sürdü, veya hizmet kapasitededir. Yeniden deneyin veya yoğunluğu veya boyutu azaltın.

Motorun neleri çizdiği, göz ardı ettiği veya henüz desteklemediği the compatibility page üzerinde; üretim sunucusunda, the benchmarks page üzerinde ne kadar hızlı render ettiği.

OpenAPI ve Markdown

Aynı sözleşme OpenAPI 3.1 ve Markdown olarak yayınlanmıştır, kod üreteçleri ve kodlama asistanları için.

Adım adım rehberler: Python, Node.js, PHP, C#. Labelary'den geçiş: migration guide.

Geri bildirim