For developers

Print from code in one call.

A REST API, a command line, signed webhooks and an MCP server. Start with a test key: nothing to print, nothing to install.

Get started

REST API

One call sends a document to a named printer. Add an idempotency key, and a retry never prints twice.

curl, from the quickstart
KEY="quickstart-$(date +%s)"
printf '{"printerId":"%s","fileName":"report.pdf","contentBase64":"%s","externalReference":"quickstart-1"}' \
  "$PRINTER_ID" "$(base64 < report.pdf | tr -d '\n')" > job.json
JOB=$(curl -fsS "$SPOOLSTREAM_URL/v1/print-jobs" -H "Authorization: Bearer $SPOOLSTREAM_API_KEY" \
  -H "Idempotency-Key: $KEY" -H "Content-Type: application/json" -d @job.json)

Command line

Made for scripts: JSON output, documented exit codes, never a prompt. Wait for the result with one flag.

spoolstream, from the command line reference
export SPOOLSTREAM_URL="https://app.spoolstream.ca"
export SPOOLSTREAM_API_KEY="..."        # from your secret store; never on the command line
spoolstream login
spoolstream printers list --search lab3
spoolstream jobs submit report.pdf --printer Lab3 --copies 2 --wait

Signed webhooks

Know when a job ends. Signed notices come with retries, redelivery and a delivery log.

MCP for AI agents

An agent can list printers and follow jobs. It only reads unless you start it with write access.

Claude Code, from the MCP guide
claude mcp add spoolstream \
  --env SPOOLSTREAM_URL=https://app.spoolstream.ca \
  --env SPOOLSTREAM_API_KEY="$SPOOLSTREAM_API_KEY" \
  -- spoolstream mcp

Test first

A test key prints on a virtual printer. Put test-error or test-uncertain in a reference to try your error handling.

.NET client

A client library sends a job and waits for its final state in a few lines.