Quickstart

Print your first label in 5 minutes.

One agent install, two curl commands. Everything below is copy-pasteable — swap in your own key and printer ID as you go.

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.

your new key
rp_live_9f2ab41c7d3e5f60...  # keep this secret — treat it like a password

Export 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.

printer machine — bash
$ 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   → 6a4738f7462183c7f5d70599

Every 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:

bash
$ 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:

bash
# ^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:

bash
$ 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

pendingdispatchingsentprintingcompleted
  • 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

That is the whole quickstart.

Wire it into your order flow and never hand-print a label again.

Get your API key