Skip to content

Office Printers (IPP)

Ordinary office printers — Canon, HP, Epson, Brother laser and inkjet models — work with ProxyBox Zero out of the box. Network printers that speak IPP (which is virtually every office printer made in the last decade) are auto-discovered via mDNS/Bonjour, and USB-attached office printers are picked up on the USB bus. No driver installation, no setup.

These printers accept documents, not raw printer language: you send a PDF and the print pipeline renders it. This is also where the options field of the print API does its work.

In the admin UI, select Print File on the printer’s card or drag a PDF onto it, then select Print in the confirmation dialog. The dialog reports when printing completes or fails.

All three POST /print body forms work. The most common for integrations — point ProxyBox at a URL and let it fetch the document:

Terminal window
curl -X POST https://pbx-D8A4.pbxz.cloud/api/v1/print/ipp_Canon85e2b4-local \
-H 'Content-Type: application/json' \
-H 'X-API-Key: ULA9WHXMFCHF' \
-d '{
"content": "https://example.com/invoice-1234.pdf",
"contentType": "pdf_url",
"title": "Invoice #1234",
"options": { "copies": 2, "duplex": "long-edge" }
}'

Or base64-encode the PDF and submit it inline with contentType: "pdf_base64", or POST the raw PDF bytes as application/octet-stream.

The options object is honored by driver-processed printers like these (raw ZPL/ESC-POS printers ignore it). The ones you’ll actually use:

Option Example Notes
copies 2
duplex "long-edge" Also "short-edge", "one-sided". Check capabilities.sidesSupported.
colorMode "grayscale" "color" on color-capable printers — check capabilities.colorSupported.
paperSize "a4" Must be one of the printer’s capabilities.mediaSupported values.
pageRange "1-5" PDF only.
fitToPage true Scale the PDF to the page.

Unsupported options are silently ignored, so a job never fails because of an option the printer can’t do.

Each printer in GET /printers carries a capabilities object captured during discovery — check it before building print requests instead of hard-coding values:

"capabilities": {
"makeAndModel": "Canon MF731C/733C",
"colorSupported": true,
"documentFormatsSupported": ["application/pdf", "image/jpeg"],
"mediaSupported": ["na_letter_8.5x11in", "iso_a4_210x297mm", "na_legal_8.5x14in"],
"sidesSupported": ["one-sided", "two-sided-long-edge", "two-sided-short-edge"],
"copiesSupported": [1, 99]
}
  • mediaSupported holds the valid paperSize values.
  • sidesSupported tells you whether duplex is available.
  • copiesSupported is the [min, max] copies range.
  • Model names vary by discovery source. Some printers report internal product codes over IPP; ProxyBox prefers the human-readable mDNS name when available, but don’t be surprised by a cryptic model string on an otherwise working printer.
  • Test prints send a standard PDF test page (or a JPEG, for the rare printer that doesn’t accept PDF).
  • Images: printers that advertise image/jpeg in supportedFormats can print images directly — otherwise convert to PDF first.

ProxyBox Zero Docs v1.0.29