The Stripe for Printing

One API to send labels to any thermal printer. Ship faster with ZPL, templates, or images — 6 lines of code.

Read the Docs OpenAPI Spec
cURL
Python
Node.js
C#
# Print a shipping label in one call
curl https://labelinn.com/v1/print/jobs \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"printer_id":"abc","payload_type":"template",
       "design_id":"tmpl_shipping",
       "data":{"name":"Jane Doe","order":"ORD-4521"}}'

Everything You Need to Print

From raw ZPL to visual templates — one unified API.

🖨️

Multi-Protocol Printing

ZPL, ESC/POS, TSPL, SLCS — Zebra, TSC, Bixolon, Honeywell, Brother and more. TCP, USB, and Bluetooth.

📦

Batch Printing

Submit up to 100 labels in a single API call. Perfect for order fulfillment and warehouse operations.

🎨

Template Engine

Design once in the LabelInn app, fill with data via API. Variables, barcodes, images — all dynamic.

👁️

Preview Before Print

Render any template with data and get a PNG/PDF preview. Verify labels before committing to paper.

📡

Real-time Webhooks

Get notified on job completion, failures, printer status changes, and low supply alerts.

🔗

Data Connect

Push XML, CSV, JSON, or TSV from any ERP/WMS. Auto-parse, map fields to labels, and print — one API call.

📊

Usage Analytics

Track API calls, print volumes, and endpoint breakdown. See your usage in real-time.

🔑

Test Mode

Use sk_test_ keys to simulate everything without physical prints. Full API parity.

🤖

AI Agent Ready

OpenAPI spec + ai-plugin.json manifest. ChatGPT, Claude, and Copilot can discover and use your printing setup.

🛡️

Enterprise Security

SHA-256 key hashing, HMAC webhook signatures, SSRF protection, and per-key permission scoping.

🌐

Edge Server

Local LAN API on port 6631. Print via USB/TCP without internet — offline queue syncs back automatically.

🔍

Auto-Discovery

Discover USB, network, and Bluetooth printers via API. Trigger scans on remote devices and add printers to your fleet in one flow.

Official SDKs

Get started in your language with type-safe, idiomatic client libraries.

🟢

Node.js / TypeScript

npm install labelinn
🐍

Python

pip install labelinn
🔷

C# / .NET

dotnet add package LabelInn
🔵

Go

go get github.com/labelinn/labelinn-go

Edge Server — Local LAN API

Print directly to USB and network printers over your LAN — zero cloud round-trips, works offline.

Why Edge?

  • ⚡ Sub-millisecond latency — no internet required
  • 🔒 Bearer token auth (optional open mode)
  • 🔄 Offline queue with automatic cloud sync-back
  • 🖨️ USB, TCP, and Bluetooth printers

Endpoints

  • GET /local/v1/health — Server status
  • POST /local/v1/print/jobs — Submit a print job
  • GET /local/v1/jobs/{id} — Poll job status
  • GET /local/v1/fleet/printers — List printers
  • POST /local/v1/fleet/discover — Auto-discover printers
  • GET /local/v1/fleet/discover/{id} — Poll discovery
// 1. Discover the Edge Server on your LAN
const health = await fetch('http://192.168.1.100:6631/local/v1/health');
// → { status: "ok", server: "LabelInn Edge Server", mode: "hybrid", ... }

// 2. List connected printers
const printers = await fetch('http://192.168.1.100:6631/local/v1/fleet/printers', {
  headers: { 'Authorization': 'Bearer YOUR_EDGE_TOKEN' }
});
// → { printers: [{ id: "usb_zebra_01", name: "ZD420", ... }], count: 1 }

// 3. Print a label — returns instantly (HTTP 202)
const job = await fetch('http://192.168.1.100:6631/local/v1/print/jobs', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_EDGE_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    printerId: 'usb_zebra_01',
    payloadType: 'zpl',
    payloadData: '^XA^FO50,50^ADN,36,20^FDHello Edge^FS^XZ',
    copies: 1
  })
});
// → { jobId: "abc-123", status: "accepted" }

// 4. Poll for result
const result = await fetch('http://192.168.1.100:6631/local/v1/jobs/abc-123', {
  headers: { 'Authorization': 'Bearer YOUR_EDGE_TOKEN' }
});
// → { jobId: "abc-123", success: true, printedLabels: 1 }

Auto-Discovery — Find Printers via API

Scan for printers on any device running LabelInn. USB, mDNS, network scan, and ZPL validation — all from one API call.

Cloud API (Remote)

  • 🌐 Trigger scan on any online device
  • 📡 mDNS, port 9100, USB, Bluetooth
  • ✅ One-click add to fleet
  • ⏱️ 5-minute session TTL
POST /v1/fleet/discover
GET /v1/fleet/discover/{sessionId}
POST /v1/fleet/discover/{sessionId}/add

Edge Server (Local)

  • ⚡ Sub-second local scan
  • 🔌 Direct USB + network discovery
  • 🔒 No cloud round-trip needed
  • 🔄 Up to 3 concurrent scans
POST /local/v1/fleet/discover
GET /local/v1/fleet/discover/{sessionId}
// ── Cloud API: Discover printers on a remote device ──

// 1. Start a discovery session (target a specific device or any online device)
const session = await fetch('https://labelinn.com/v1/fleet/discover', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer sk_live_xxx',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ device_id: 'dev_warehouse_pc' })
});
// → { data: { session_id: "abc123", status: "pending" } }

// 2. Poll until discovery is complete
const results = await fetch('https://labelinn.com/v1/fleet/discover/abc123', {
  headers: { 'Authorization': 'Bearer sk_live_xxx' }
});
// → { data: { status: "complete", printers: [
//      { name: "ZD420", address: "192.168.1.50", brand: "ZEBRA", is_thermal: true },
//      { name: "Brother QL-820", address: "USB001", connection_type: "usb" }
//    ], count: 2 } }

// 3. Add a discovered printer to your fleet
const printer = await fetch('https://labelinn.com/v1/fleet/discover/abc123/add', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer sk_live_xxx',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ address: '192.168.1.50', name: 'Warehouse Zebra #3' })
});
// → { data: { id: "prt_a1b2c3d4e5f6", name: "Warehouse Zebra #3", status: "registered" } }

// 4. Now print to it!
await fetch('https://labelinn.com/v1/print/jobs', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer sk_live_xxx', 'Content-Type': 'application/json' },
  body: JSON.stringify({
    printer_id: 'prt_a1b2c3d4e5f6',
    payload_type: 'template',
    design_id: 'tmpl_shipping',
    data: { name: 'Jane Doe', order: 'ORD-4521' }
  })
});

Data Connect

Universal enterprise data ingestion — connect any data source to label printing.

Any Format, Any Source

  • ✅ XML / SAP IDoc
  • ✅ CSV / TSV
  • ✅ JSON / NDJSON
  • ✅ Auto-detection

How It Works

  1. Push data via API or webhook
  2. Schema auto-discovered
  3. Map fields → label variables
  4. Print labels in one call
// 1. Test-parse your data first (no storage, no cost)
const preview = await fetch('https://labelinn.com/v1/connect/test-parse', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer sk_test_YOUR_KEY', 'Content-Type': 'application/json' },
  body: JSON.stringify({
    payload: 'name,sku,qty,price\nWidget,SKU-001,50,9.99\nGadget,SKU-002,30,14.50',
    format: 'csv'
  })
});
// → { schema: [{path:"name",type:"string"}, {path:"qty",type:"number"}, ...], records_preview: [...] }

// 2. Push real data & print labels — 2 API calls
const result = await client.connect.ingest({
  source_id: "conn_sap_orders",
  payload: xmlFromSAP,
  format: "xml",
  config: { repeatPath: "IDOC.E1EDP01" }
});

await client.connect.sources.print("conn_sap_orders", {
  printer_id: "prt_warehouse_01",
  design_id: "dsg_shipping_label",
  ingest_id: result.data.ingest_id
});

Integrations

Connect LabelInn to your existing stack — code-free.

Zapier
Available
Make.com
Available
Shopify
Live
Trendyol
Live
Hepsiburada
Live
ikas
Live
SAP / ERP
Via API

Complete Endpoint Catalogue

108 operations across 16 categories — every backend route, machine-readable via OpenAPI 3.0.3 spec v2.0.0. AI agents discover this at https://labelinn.com/.well-known/ai-plugin.json.

Print Jobs (7)

  • POST /v1/print/jobs
  • POST /v1/print/batch
  • GET  /v1/print/jobs
  • GET  /v1/print/jobs/{id}
  • POST /v1/print/jobs/{id}/cancel
  • POST /v1/print/jobs/{id}/retry
  • GET  /v1/print/jobs/{id}/events

Fleet (8)

  • GET  /v1/fleet/printers
  • GET  /v1/fleet/printers/{id}
  • POST /v1/fleet/printers/{id}/identify
  • PUT  /v1/fleet/printers/{id}/media
  • POST /v1/fleet/discover
  • GET  /v1/fleet/discover/{sessionId}
  • POST /v1/fleet/discover/{sessionId}/add

Printer Groups (5)

  • GET  /v1/fleet/groups
  • POST /v1/fleet/groups
  • GET  /v1/fleet/groups/{id}
  • PUT  /v1/fleet/groups/{id}
  • DEL  /v1/fleet/groups/{id}

Designs (24)

  • GET/POST /v1/designs
  • GET/PUT/DEL /v1/designs/{id}
  • POST /v1/designs/{id}/render
  • GET  /v1/designs/renders/{renderId}
  • POST /v1/designs/{id}/publish
  • GET  /v1/designs/{id}/revisions
  • GET  /v1/designs/{id}/snapshots
  • GET  /v1/designs/{id}/snapshots/{snapId}
  • GET  /v1/designs/{id}/pages
  • GET/POST /v1/designs/{id}/pages/{pageId}/elements
  • PUT/PATCH/DEL .../elements/{elementId}
  • + legacy element CRUD

Render (4)

  • POST /v1/render
  • POST /v1/render/html
  • GET  /v1/render/{renderId}
  • GET  /v1/render/{renderId}/image

Webhooks (6)

  • GET  /v1/webhooks/events
  • GET/POST /v1/webhooks
  • GET/PUT/DEL /v1/webhooks/{id}
  • POST /v1/webhooks/{id}/test
  • GET  /v1/webhooks/{id}/deliveries

Rules (6)

  • GET/POST /v1/rules
  • GET/PUT/DEL /v1/rules/{id}
  • POST /v1/rules/{id}/test

Sites (9)

  • GET/POST /v1/sites
  • GET  /v1/sites/nearest?lat&lon
  • GET/PUT/DEL /v1/sites/{id}
  • POST /v1/sites/{id}/printers
  • DEL  /v1/sites/{id}/printers/{printerId}
  • GET  /v1/sites/{id}/analytics

Analytics (5)

  • GET  /v1/analytics/fleet/trends
  • GET  /v1/analytics/predictions/{printerId}
  • GET  /v1/analytics/quality/{printerId}
  • POST /v1/analytics/digital-twin/simulate
  • POST /v1/analytics/digital-twin/compare

Audit (4)

  • GET  /v1/audit/trail
  • GET  /v1/audit/trail/{entryId}
  • GET  /v1/audit/summary
  • POST /v1/audit/ingest

Compliance (6)

  • GET/POST /v1/audit/compliance/pools
  • GET  .../pools/{poolId}
  • POST .../pools/{poolId}/allocate
  • POST .../pools/{poolId}/void
  • GET  .../pools/{poolId}/report

Data Connect (13)

  • GET  /v1/connect
  • POST /v1/connect/parse-pasted
  • POST /v1/connect/test-parse
  • POST /v1/connect/upload-and-parse
  • POST /v1/connect/parse-and-print
  • POST /v1/connect/parse-and-template
  • + 7 connection-management routes

Edge Server (6)

  • GET  /local/v1/health
  • GET  /local/v1/fleet/printers
  • POST /local/v1/print/jobs
  • GET  /local/v1/jobs/{id}
  • POST /local/v1/fleet/discover
  • GET  /local/v1/fleet/discover/{id}

Usage (2)

  • GET  /v1/usage
  • GET  /v1/usage/daily

Relay (1)

  • GET  /v1/relay/status
  • WS   wss://labelinn.com/v1/relay
View OpenAPI 3.0.3 Spec AI Plugin Manifest npm: labelinn PyPI: labelinn NuGet: LabelInn

API Pricing

API access is included with Pro and Enterprise plans.

Starter

$14.90/mo
  • No API access
  • 1 PC + 1 Mobile
  • Excel/CSV data
  • Email support

Enterprise

$69.90/mo
  • 50,000 API calls/day
  • 3 PC + 3 Mobile
  • Unlimited integrations
  • SQL connections
  • Priority support

Start Printing in 5 Minutes

Create an account, generate an API key, send your first print job.

Create Free Account Read the Docs