The Stripe for Printing

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

Quick Start OpenAPI Spec MCP for AI Agents
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

Quick Start — From Zero to First Print in 5 Minutes

Three concrete steps. The path from a fresh account to a thermal printer humming.

1. Get an API Key

Sign up for a free 14-day Pro trial — no credit card. Open Settings → API Keys in the dashboard, generate a key. Use sk_test_* for sandbox, sk_live_* for production.

Create account →

2. Pick an Integration Path

REST API — for ERPs, WMSes, custom dashboards. Submit jobs, query the fleet, subscribe to webhooks.

MCP Server — for Claude, Cursor, Copilot, or any AI agent. Natural-language printing.

Edge Server — for offline LAN printing without cloud round-trips.

3. Send Your First Job

Submit a print job with the saved design ID and your printer ID. Watch the printer come alive within 2–4 seconds.

See endpoints →

Full REST API Guide → OpenAPI Reference

MCP Server — Print from Claude, Cursor & ChatGPT

Plug LabelInn into any Model Context Protocol client. AI agents call your printers with structured tools, not glue code.

12 Tool Modules

print_label, print_zpl, batch_print, list_printers, design CRUD, render previews, audit, edge rules — the full LabelInn surface as MCP tools.

4 Resources

Browse labelinn://printers, labelinn://designs, labelinn://usage, labelinn://jobs/recent — read-only data the agent can pull on demand.

Local Server

Runs on your machine via npx @labelinn/mcp-server. Prompts and template data never leave your computer; only LLM calls go to your provider.

claude_desktop_config.json
{
  "mcpServers": {
    "labelinn": {
      "command": "npx",
      "args": ["-y", "@labelinn/mcp-server"],
      "env": { "LABELINN_API_KEY": "sk_live_..." }
    }
  }
}
Full MCP Guide →

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

Custom Quote
  • Unlimited API calls
  • Unlimited PCs & Mobile
  • Unlimited integrations
  • SQL connections
  • Priority support & SLA
Talk to Sales

Start Printing in 5 Minutes

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

Create Free Account Quick Start Guide