1. Create an API key
Sign up (free, no card), then go to Console → API Keys → Create key. Copy the key — it is shown once, then stored only as a hash.
rp_live_9f2ab41c7d3e5f60... # keep this secret — treat it like a passwordExport it so the commands below work: export ROCKETPRINT_KEY="rp_live_..."
2. Run the RocketPrint agent
Install the agent on any machine that can already print to your printer, then log in. The agent makes an outbound connection only — no ports to open and no firewall rules.
$ curl -fsSL https://get.rocketprint.io | sh
$ rocketprint login
✔ Logged in as ken@example.com
✔ Agent online — 2 printers registered:
Zebra ZD421 → 6a4738f7462183c7f5d70598
HP LaserJet M110 → 6a4738f7462183c7f5d70599Every printer the operating system can see auto-registers and gets a stable printerId. See the agent guide for what it does on the machine.
3. Find your printerId
List the printers registered to your organization:
$ 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, validated, and queued on our side.dispatching— leased by one dispatcher so it is never delivered twice.sent— delivered to the agent that owns the printer.printing— the agent handed it to the OS print system, which accepted it.completed— the print command succeeded.failed— carries the reason it failed.canceled— canceled by you while still pending.
Next steps
- API reference — every endpoint and field.
- Errors and limits — what to handle and how.
- SDKs — the Node client and its status poller.
That is the whole quickstart.
Wire it into your order flow and never hand-print a label again.
Get your API key