1. Create an API key
Sign up, choose Launch, Orbit, or Constellation in Billing, then go to API Keys → Create key. Copy it now — it is shown once, and we only ever store a scrambled version.
rp_live_9f2ab41c7d3e5f60... # keep this secret — treat it like a passwordExport it so the commands below work: export ROCKETPRINT_KEY="rp_live_..."
For a guided first print without writing code, open Setup & print. You can save printer defaults and upload a PDF there.
2. Install RocketPrint Station
RocketPrint Station is a small desktop app that runs on any computer that can already print to your printer. Download the installer for that platform from the download page and run it — a .dmg on macOS, an .exe on Windows, an .AppImage on Linux.
Choose Connect in Station and sign in through your browser. Verify your email if requested, then approve the matching code. That connects the computer to your account — there is no API key to copy onto it. It only ever connects out, so there are no ports to open and no firewall rules to add.
- Every printer that computer can see is reported automatically.
- Each one gets a stable
printerIdyou can safely store in your own database. - The station keeps running in the menu bar or system tray, and can launch at login.
3. Find your printerId
List the printers on your account:
$ curl https://rocketprint.io/api/v1/printers \
-H "X-API-Key: $ROCKETPRINT_KEY"
{
"printers": [
{
"id": "6a4738f7462183c7f5d70598",
"name": "Zebra ZD421",
"systemName": "Zebra_ZD421",
"status": "online",
"stationId": "stn_bldr_wh_01"
},
{
"id": "6a4738f7462183c7f5d70599",
"name": "HP LaserJet M110",
"systemName": "HP_LaserJet_M110",
"status": "online",
"stationId": "stn_bldr_wh_01"
}
]
}Grab the id of your label printer. That is the printerId for the next step.
4. Print a label
Base64-encode your ZPL and post it. Here is a minimal Hello label for a Zebra:
# ^XA...^XZ is a complete ZPL document
$ ZPL='^XA^FO50,50^A0N,50,50^FDHELLO, WORLD^FS^XZ'
$ curl -X POST https://rocketprint.io/api/v1/print-jobs \
-H "X-API-Key: $ROCKETPRINT_KEY" \
-H "Idempotency-Key: my-first-label" \
-H "Content-Type: application/json" \
-d "{
\"printerId\": \"6a4738f7462183c7f5d70598\",
\"contentType\": \"raw_base64\",
\"content\": \"$(echo -n "$ZPL" | base64)\"
}"
{
"id": "job_abc123",
"printerId": "6a4738f7462183c7f5d70598",
"status": "sent",
"createdAt": "2026-08-22T14:03:07Z"
}Listen for the printer. That sound is your API working.
5. Check the job status
Every job is a record you can query for as long as you keep the ID:
$ curl https://rocketprint.io/api/v1/print-jobs/job_abc123 \
-H "X-API-Key: $ROCKETPRINT_KEY"
{
"id": "job_abc123",
"status": "completed",
"createdAt": "2026-08-22T14:03:07Z",
"sentAt": "2026-08-22T14:03:08Z",
"completedAt": "2026-08-22T14:03:09Z"
}The job lifecycle
pending— accepted, checked, and queued on our side.dispatching— claimed by one of our servers so it is never sent twice.sent— delivered to the Station app attached to that printer.printing— your computer's print system accepted it.completed— the print command succeeded.failed— carries the reason it failed.canceled— you canceled it before it was sent.
Next steps
- API reference — every endpoint and field.
- Errors and limits — what to handle and how.
- Client libraries — the Node client and its status helper.
That is the whole quickstart.
Wire it into your order flow and never hand-print a label again.
Get your API key