Login / Register

Print from any app, any language.

The Auto Print API lets your software send documents to any printer connected to a The Auto Print account — a simple REST API over HTTPS with JSON responses.

# Base URL
https://theautoprint.com/wp-json/theautoprint/v1

Quickstart

  1. 1
    Create an account & get an API key — sign up at theautoprint.com, then Dashboard → API Keys.
  2. 2
    Install the desktop app on the computer connected to your printer (download), sign in and select your printer(s). Keep it running — it receives the jobs.
  3. 3
    Send your first job:
    curl -u YOUR_API_KEY: -X POST \
      https://theautoprint.com/wp-json/theautoprint/v1/printjobs \
      -H "Content-Type: application/json" \
      -d '{"title":"Hello","content_type":"html","content":"<h1>Hello printer!</h1>"}'

Authentication

Every request needs your API key. Three interchangeable ways:

HTTP Basic RECOMMENDED

API key as username, empty password.

curl -u YOUR_API_KEY: ...

Bearer token

Standard Authorization header.

Authorization: Bearer YOUR_API_KEY

Query param

Quick tests only — avoid in production.

?api_key=YOUR_API_KEY

Endpoints

GET/whoami

Your account, plan and this month’s usage.

{
  "id": "shop_abc",
  "email": "[email protected]",
  "plan": "pro",
  "plan_label": "Pro",
  "prints_used": 152,
  "prints_limit": 10000,
  "max_computers": 3,
  "can_choose_printer": true
}

GET/computers

Computers running the desktop app on this account.

[ { "id": "POS-COUNTER", "name": "POS-COUNTER", "state": "connected" } ]

GET/printers

All printers on the account with live state. Use id as printer_id when printing, or "default" for the computer’s selected printers.

[
  {
    "id": "shop_abc::POS-COUNTER::EPSON TM-T82",
    "name": "EPSON TM-T82",
    "computer": "POS-COUNTER",
    "state": "online"
  }
]

POST/printjobs

Create a print job.

FieldRequiredDescription
printer_idnoPrinter id from /printers, or "default" (default)
titlenoShown in print history
content_typeyespdf_base64 · pdf_uri · image_base64 · image_uri · doc_base64 · docx_base64 · html · txt
contentyesBase64 string, URL, or HTML/plain text

Response 201state is sent (device online) or queued (offline, Pro+ — prints when it reconnects). HTML and DOC are converted to PDF server-side.

{ "id": "8b1f6c1e-...", "state": "sent" }

GET/printjobs?limit=50

Recent jobs, newest first (max 100). state: pendingsuccess | error.

GET/printjobs/{id}

One job’s live state — poll this to confirm delivery.

{
  "id": "8b1f6c1e-...",
  "title": "Invoice 1042",
  "printer": "default",
  "state": "success",
  "message": "Job 'Invoice 1042' printed successfully",
  "created_at": "2026-07-12 09:14:03"
}

Language guides

A complete integration — list printers, print a PDF, poll until done.

# 1. List printers
curl -u YOUR_API_KEY: \
  https://theautoprint.com/wp-json/theautoprint/v1/printers

# 2. Print a PDF (base64)
curl -u YOUR_API_KEY: -X POST \
  https://theautoprint.com/wp-json/theautoprint/v1/printjobs \
  -H "Content-Type: application/json" \
  -d "{
    \"printer_id\": \"default\",
    \"title\": \"Invoice 1042\",
    \"content_type\": \"pdf_base64\",
    \"content\": \"$(base64 -i invoice.pdf)\"
  }"

# 3. Check the job (use the id from step 2)
curl -u YOUR_API_KEY: \
  https://theautoprint.com/wp-json/theautoprint/v1/printjobs/JOB_ID

Errors & plan limits

HTTPMeaning
401Missing or invalid API key
400Bad request (missing content, unsupported content_type)
409No printer connected / printer offline
429Monthly print limit reached — upgrade your plan
404Print job not found
PlanComputersPick printerOffline queue
Free1default only
Promore
Ultraunlimited

Errors are JSON: {"error": "message"}. All error messages are human-readable — safe to show to your users.