Product

One print API for every printer, location, and workflow.

Your code makes one request. We find the printer you named, and the computer it is attached to, and send the job down the connection that computer already opened to us.

Architecture

Three moving parts, one of which is already in your building.

There is no hardware to buy and nothing to let in through your firewall. RocketPrint Station is an ordinary desktop app that runs next to printers you already own.

Your backend

One authenticated POST per job. You do not need a client library — it is a JSON REST API — but a Node client is available if you want typed helpers and something to wait for the result.

RocketPrint

Checks the request, saves the job, and finds the computer attached to the printer you named. If that computer is connected, the job goes out immediately. If not, the job waits and goes out as soon as it reconnects.

RocketPrint Station

A small desktop app that signs in to your account, reports every printer that computer can see, and keeps one connection open to us. It receives jobs, prints them, and tells you what happened.

Your printers

Thermal label and receipt printers get their own language, untouched. Documents print the normal way, using whatever driver that computer already has.

The request

One request, whatever you need to print.

The same request prints a Zebra label, a packing slip, or a kitchen ticket. The only thing that changes is contentType.

bash
$ curl -X POST https://rocketprint.io/api/v1/print-jobs \
    -H "X-API-Key: $ROCKETPRINT_KEY" \
    -H "Idempotency-Key: order-1042-label" \
    -H "Content-Type: application/json" \
    -d '{
      "printerId": "6a4738f7462183c7f5d70598",
      "title": "Order #1042 label",
      "contentType": "raw_base64",
      "content": "XlhBLi4uXlha",
      "source": "my-shop",
      "options": { "copies": 1 }
    }'

{
  "id": "job_abc123",
  "printerId": "6a4738f7462183c7f5d70598",
  "stationId": "stn_bldr_wh_01",
  "status": "sent",
  "createdAt": "2026-08-22T14:03:07Z"
}

Printer languages

raw_base64 carries the printer's own language — ZPL, EPL, or ESC/POS — base64-encoded. It reaches the printer untouched.

Documents

pdf_base64 and text print the normal way through that computer. Use these for packing slips, invoices, and pick lists.

The API also accepts URLs, but that is switched off by default and returns an error unless someone deliberately turns it on. Send base64.

The job lifecycle

Seven job states, and exactly what each one means.

The most useful thing a print service can give you is a straight answer about what happened. Here is what each status means.

pendingdispatchingsentprintingcompleted
pending
Accepted, checked, and saved. If the printer's computer is offline, the job waits here.
dispatching
Claimed by one of our servers. This state exists so two servers can never send the same job twice.
sent
Delivered to the Station app attached to that printer.
printing
Your computer's print system accepted the job.
completed
The print command succeeded. See the boundary note below for exactly what this does and does not mean.
failed
Something went wrong, and the job tells you what — the printer refused it, could not be reached, or does not handle that format.
canceled
You canceled the job before it was sent. Once it has been sent, it can no longer be canceled.

Capabilities

What RocketPrint actually does for you.

The six things that decide whether a print integration survives a real warehouse.

Getting a job to the right printer

Your code sends one request naming a printer. We find that printer and the computer it is attached to, and send the job down the connection that computer already opened to us. Nothing on your network is reachable from the internet, and your code never needs a hostname, an IP address, or a port.

Labels print exactly as designed

ZPL, EPL, and ESC/POS reach the printer untouched. Nothing is redrawn, rescaled, or re-encoded, so a barcode you designed at 203 dpi prints at 203 dpi. We have checked the exact bytes arriving at the printer.

Offline is handled

A computer that is asleep, restarting, or briefly off the network does not turn into a failed order. Jobs for an offline printer wait, then print automatically in the order you sent them the moment the Station app reconnects.

You can always see what happened

Every job has an ID, a status, timestamps, and a reason when it fails. Filter by status, printer, or source. Support can answer "what happened to that label" by looking, instead of asking someone to try again.

Safe retries

Send an Idempotency-Key and a repeated request returns the original job instead of printing a second copy. Send different content under a key you already used and we reject it rather than printing something unexpected.

Every printer in one place

Every computer, printer, job, API key, and monthly usage total across all your locations, in one place. Printing fails in physical ways; this is where your team sees it happen.

The console

Where your team looks when a printer plays up.

Which computers and printers are online, what printed, what failed and why, your API keys, and this month's usage.

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

Boundaries

What RocketPrint does not do.

Every one of these is a real limit today. If one of them rules us out for you, better to find out here than three weeks into an integration.

We cannot confirm paper came out

completed means the print command succeeded, not that a sensor saw paper. No print service can tell you otherwise.

We do not call you back yet

To find out how a job finished, you ask us. Webhooks are coming; until then, check the job with GET /v1/print-jobs/:id or let the Node client poll for you.

Windows document printing is weaker

Label printing on Windows goes straight to the print spooler. PDFs and text open with whatever app Windows associates them with, which is the least predictable path we have.

We do not design your labels

We deliver what you send and tell you what happened. Producing the ZPL or the PDF is your code's job, or your carrier's.

See the full compatibility list →

About five minutes

Send one request. Listen for the printer.

Install the Station app, create a key, send a label. The quickstart is two curl commands.