Docs menu

Printer sharing

Printer sharing gives one printer an internet printer address. A computer adds that address in its own printer settings, the way it would add a network printer, and prints to it from any app with nothing from PrintSocket installed on it. It suits people rather than code: a remote employee printing to the office, a manager printing to a label printer in the back room. The agent is still what does the printing, on the machine the printer is attached to.

The address speaks IPP (the Internet Printing Protocol that operating systems use for driverless printing) over HTTPS, and looks like this:

ipps://api.printsocket.com:443/ipp/p/ipp_...

The :443 matters. IPP's registered port is 631, so an address without the port sends clients somewhere nothing answers.

Creating a share

Shares are created in the dashboard: open the printer's Details, then Share as a printer, then New share, and give it a name. There is no API endpoint for shares yet.

The dialog shows the address once, in two forms (the ipps:// address, and an https:// form for Windows), along with setup steps for each operating system, an Apple configuration profile to download, and a QR code an iPhone or iPad can scan to install that profile. None of it can be shown again, because PrintSocket keeps only a hash of the secret in the address. If it is lost, create a new share and revoke the old one.

Anyone who has the address can print to the printer until the share is revoked, so treat it like a password. A printer can have any number of shares. One per group of computers means a leaked address can be cut off without re-adding the printer everywhere else. Revoking is immediate and cannot be undone: computers using that address get "not valid" on their next request, and other shares of the same printer keep working.

Test-mode printers can be shared too, including the virtual test printer. Adding a share of the virtual printer to a computer and printing from any app walks a job through its whole lifecycle with no hardware, and costs nothing.

Adding the printer to a computer

Linux, Windows 11, macOS, and iPhone have been tested end to end against production. Steps for the others are given, but marked untested: they speak the same protocol, but nobody has confirmed them yet.

Linux (tested). Add it as a driverless (IPP Everywhere) printer, from the desktop's printer settings or with CUPS:

lpadmin -p PrintSocket -E -v 'ipps://api.printsocket.com:443/ipp/p/ipp_...' -m everywhere
lp -d PrintSocket document.pdf

Windows 11 (tested). Settings › Bluetooth & devices › Printers & scanners › Add device › Add manually › Add a printer using an IP address or hostname. Set the device type to IPP Device and paste the https:// address as the hostname. Do not use Select a shared printer by name: that route connects but then asks for a local driver, and the output it sends cannot be printed.

Mac (tested on macOS 26). The share dialog's Download profile button saves a configuration profile that makes the printer available to add. Installing it takes a few steps, because macOS deliberately makes profiles a two-stage install:

  1. Open the downloaded .mobileconfig file. macOS says the profile has to be reviewed in System Settings; click OK.
  2. Open System Settings › General › Device Management, double-click the downloaded profile, click Install, and confirm with your password. (Before macOS 15 this pane was Privacy & Security › Profiles.) The profile is unsigned, so macOS marks it as unverified.
  3. Open System Settings › Printers & Scanners, click Add Printer, Scanner or Fax…, select the printer, which is now listed, and click Add. Installing the profile does not add the printer by itself; this step does.

Or skip the profile and run the Linux command above in Terminal: macOS prints through CUPS too, so lpadmin should add the printer in one step, though that route has not yet been tested on a Mac.

iPhone (tested on iOS 26) and iPad (not yet tested). The share dialog's QR code opens a link that serves the same profile, so nothing has to be copied across:

  1. Scan the QR code with the Camera and open the link.
  2. Safari asks whether to allow downloading a configuration profile; tap Allow.
  3. In Settings, tap Profile Downloaded (or General › VPN & Device Management), then Install, and enter the passcode.
  4. Print from any app. On iPhone and iPad the profile adds the printer itself.

The link works for as long as the share does, and it carries the secret like the address does, so share the QR code only with the people the address is meant for. AirDropping the downloaded profile from a Mac works too.

ChromeOS (not yet tested). Settings › Printers › Add printer manually, with protocol IPPS, address api.printsocket.com:443, and the queue /ipp/p/ipp_... from the address.

The address cannot be discovered automatically. Network printer discovery (Bonjour and its relatives) does not reach across the internet, so every computer adds the printer by its address or, on Apple devices, by the profile.

What gets printed

Clients send PDF, which goes to the printer as it is. JPEG photos are placed on a page of the printer's paper size, and Apple raster (what iPhones and iPads send) is converted to a PDF. Documents are limited to 50 MB, the same as POST /jobs.

A receipt printer with its page language set to escpos (see Page language under Printers) can be shared too. The share offers a single paper the width of the printer's roll, so a phone lays out a page that fits the receipt, and the agent converts it like any other PDF job: a photo prints across the full width of the roll in dotted grays. Tested so far with an iPhone printing a photo to an Epson TM-T88V.

A job sent to a share is an ordinary job: it appears in the job list, fires the same webhooks, and counts toward the plan's monthly jobs like any other (jobs to the virtual test printer stay free). Its metadata tells it apart:

KeyValue
sourceipp
ipp_shareThe share's id, psh_...
ipp_userThe user name the computer sent. Clients report this themselves and nothing verifies it.

So GET /jobs?metadata[source]=ipp lists every job that came in through a share.

Paper size, copies, two-sided printing, color or grayscale, resolution, and page ranges chosen in the computer's print dialog carry over as the job's options, limited to what the printer reports it supports. An option the printer cannot honor is ignored rather than failing the job, the same rule as everywhere else in the API.

When printing through a share fails

  • "Not valid" or "may have been revoked". The share was revoked, or the address was mistyped. Create a new share.
  • Jobs wait and nothing prints. The printer or its device is offline. A share accepts jobs for an offline printer and they print when it reconnects, just as queue_if_offline does for API jobs. The computer shows the printer as stopped meanwhile.
  • The computer says the printer is not accepting jobs. The printer is disabled in PrintSocket. Enable it from its Details.
  • Windows says it cannot connect, or asks you to choose a driver. The printer was added with Select a shared printer by name. Remove it and add it again as an IPP Device.
  • A print fails with a document format error. The computer sent something other than PDF, JPEG or Apple raster, usually because a driver was chosen for it. Add the printer as a driverless printer instead.