Remote printing API

Make any printer part of your API.

RocketPrint routes labels, receipts, and documents from your backend to printers in warehouses, stores, and factories — with no print dialogs, no inbound firewall rules, and no printer-specific code in your application.

0inbound ports
1API for every printer
LIVE JOB Agent online
SHIP TOBOULDER, CO
2-DAY
ACME FULFILLMENT
1900 PEARL STREET
BOULDER CO 80302
RP 03 8491 6250
job_abc1231 of 1
POST/v1/print-jobs1.8s
Works with the formats your printers already use
ZPLEPLESC/POSPDFTEXT

The problem

Cloud software ends at the browser. Your operation ends at a printer.

Every team that ships physical goods hits the same wall: the software knows exactly what should print, and has no reliable way to make it happen on a specific machine in a specific building.

The browser is not a print server

Print dialogs need a person. A warehouse at 6am does not have a person clicking Print, and a kiosk browser cannot choose between eleven queues.

The network is closed for a reason

Nobody is going to expose a label printer to the internet or run a VPN to every store so your backend can reach port 9100.

Drivers mangle labels

Rasterizing a 4×6 label through a generic driver produces soft barcodes and surprise margins. Thermal printers want their own language, untouched.

"Did it print?" has no answer

Fire-and-forget printing means support tickets that end in "try printing it again." A job needs an identity and a status you can query.

How it works

A straight line from your code to the printer.

Install a small agent next to the printers you already have. It connects outward to RocketPrint. Your backend makes one request, and we route it to the right machine.

01

Connect the local agent

Install RocketPrint on any Mac, Linux box, or Raspberry Pi that can already see your printers. It dials out, so your network stays closed.

rocketprint login
02

Send one request

POST raw ZPL, EPL, ESC/POS, a PDF, or plain text from any backend. Name a registered printer and we route the job to the station that owns it.

POST /v1/print-jobs
03

Know what happened

Track each job from pending to printing to completed, with timestamps and a real failure reason when something goes wrong.

status: completed

Built for production

Printing should be the boring part of your product.

Six things that decide whether a print API survives contact with a real warehouse — and what each one actually does.

01 / NATIVE

Send printer language as-is.

Raw ZPL, EPL, and ESC/POS pass through byte-for-byte to the print queue. No rasterizing, no re-scaling, no blurry barcode conversion. We have verified the exact bytes arriving on a printer's TCP port — what you send is what the printer gets.

Offline is handled

A disconnected station is not a failed workflow. Jobs for an offline printer persist as pending and dispatch in order the moment the agent reconnects.

How queueing works

Honest status

Every job has an id, timestamps, and a real state. printing means the OS accepted it; completed means the print command succeeded; failures carry the reason.

Read the state model

Safe retries

An idempotency key means a retried request never turns into a second label — enforced on our side and in the agent's own ledger, which survives a restart.

See the contract

Fleet you can see

Stations, printers, live presence, job history, and usage across every location in one console — so support can look instead of guess.

Tour the console

Outbound only

The agent initiates every connection and authenticates itself. No inbound ports, no VPN, no printer exposed to the internet.

Read the security model

Printers and formats

If the operating system can see it, we can usually print to it.

Thermal label printers get their native language untouched. Everything else prints through the OS queue. The full matrix says exactly what is verified and what is not.

Raw pass-through

For thermal label and receipt printers, send the printer's own language and it arrives unmodified.

  • ZPL — Zebra label printers
  • EPL — older Zebra and Eltron models
  • ESC/POS — receipt and kitchen printers

Through the OS queue

For documents, RocketPrint hands the file to the print system on the station using the driver that machine already has.

  • PDF — packing slips, invoices, work orders
  • Plain text — pick lists, simple tickets
  • Copies — set per job in options

See the full compatibility matrix →

The console

Every station, printer, and job in one place.

Printing fails in physical ways — a station sleeps, a printer goes offline, someone renames a queue. The console is where your team sees that happening instead of hearing about it from a customer.

rocketprint.io/app — printers
DashboardPrintersPrint jobsAPI keysUsage
PrinterStatusStationLast seen
Zebra ZD421 — Pack bench 1onlinebldr-wh-01
Zebra GK420d — Pack bench 2onlinebldr-wh-01
HP LaserJet M110 — Officeonlinebldr-wh-01
Epson TM-T20 — Front counterofflinestore-04
Common usesShipping labelsPacking slipsPick listsReceiptsOrder ticketsBadges

Simple pricing

Pay for what prints.
Nothing else.

No seats, no printer limits, and no sales call standing between you and production. Every feature is included from your first job.

  • Unlimited printers, stations, and API keys
  • Failed jobs are never billed
  • Metered per job — no plan to outgrow
One simple planNo credit card
500print jobs
free every month
After that$2 / 1,000 jobs
  • Offline queueing and idempotent retries
  • Complete job-status history
  • Raw printer language, PDF, and text
Get your API key

Questions

The things people ask before they trust us with a printer.

Do we have to open a port or run a VPN?

No. The agent opens an outbound connection to RocketPrint and keeps it alive. Nothing on your network is addressed from the internet, and no inbound firewall rule is required.

What does 'completed' actually mean?

It means the agent handed the job to the operating system's print system and the print command succeeded. It does not mean a sensor confirmed paper physically left the printer — no print API can honestly claim that, and we would rather tell you the real boundary than imply one we cannot hold.

What happens if the station is offline when we send a job?

The job persists as pending. When the agent reconnects, queued jobs dispatch automatically, in the order they were created. Your request does not fail because someone unplugged a machine.

Will our ZPL come out exactly as we wrote it?

Yes. Raw content is passed through byte-for-byte to the print queue with no rasterizing or re-scaling. We have verified the exact bytes arriving on a printer's TCP port.

Can we retry a request safely?

Send an Idempotency-Key header. A retry with identical input returns the original job with Idempotency-Replayed: true instead of printing a second label. The agent keeps its own ledger too, so a job already printed is never printed again after a restart.

Which operating systems can run the agent?

macOS and Linux today, including Raspberry Pi. A Windows agent runs and reports printers, but raw pass-through printing on Windows is not finished yet and returns an explicit error rather than printing something wrong.

Five minutes, honestly

Make something real come out of a printer.

The quickstart is one agent install and two curl commands. Start free — no card, no call.