Modules/REST API for your SME software

REST API for your SME software

Over 600 open REST endpoints based on the OpenAPI 3 standard, searchable via Swagger, plus webhooks for real-time updates. Build your own integrations, connect Zapier or n8n, or show live key figures on your company website. Included in every plan.

What Do You Need API and Webhooks For?

Your company website should show up-to-date key figures. A business partner's tool wants to import the data automatically. Or you want to build your own WordPress plugin. As soon as data needs to flow between Printerless and another system, you need an interface.

That's exactly what the API is for. Over 600 open endpoints give you access to your own business data, from accounting and invoices to postal mailing. You decide per key what is shared.

And if your system should not have to ask for updates itself but react immediately, webhooks are the counterpart. As soon as something happens in your account, Printerless reports it to your system automatically. This means you fetch data with the API whenever you want, and webhooks notify you as soon as something happens.

All endpoints documented and searchable

Each of the over 600 endpoints is described in the Swagger interface and can be tried directly. You choose the right service, see all fields and examples, and test the call in the browser.

All endpoints documented and searchable

Webhooks: changes to your systems in real time

Instead of polling regularly, Printerless reports changes automatically. For every event, we send a signed message to your URL, optionally additionally secured with OAuth2. In the delivery log, you can see every delivery with status and response, and resend individual messages or trigger a test event.

Webhooks: changes to your systems in real time

What an API call looks like

With your API key, you get a token and then call any endpoint using a normal HTTP request. Here using letters as an example, once with curl and once in Python.

curl
# 1. Token holen (client_id + Schlüssel aus den Einstellungen, API-Schlüssel)
TOKEN=$(curl -s -X POST \
  https://auth.printerless.ch/realms/members/protocol/openid-connect/token \
  -d grant_type=client_credentials \
  -d client_id=$CLIENT_ID \
  -d client_secret=$CLIENT_SECRET | jq -r .access_token)

# 2. API-Call mit Bearer-Token (Beispiel: Briefe abrufen)
curl -s https://api.printerless.ch/v2/letters/letter/ \
  -H "Authorization: Bearer $TOKEN"
Python
import requests

# 1. Token holen
token = requests.post(
    "https://auth.printerless.ch/realms/members/protocol/openid-connect/token",
    data={
        "grant_type": "client_credentials",
        "client_id": CLIENT_ID,
        "client_secret": CLIENT_SECRET,
    },
).json()["access_token"]

# 2. Briefe abrufen
letters = requests.get(
    "https://api.printerless.ch/v2/letters/letter/",
    headers={"Authorization": f"Bearer {token}"},
).json()
print(letters["items"])

Export OpenAPI specification

The OpenAPI specification is available at api.printerless.ch/openapi/ and is the machine-readable basis of the Swagger interface. Access requires authentication. If you do not attach a valid token, the interface responds with 401.

JavaScript
// OpenAPI-Spezifikation exportieren (Authentifizierung erforderlich)
const token = await fetch(
  "https://auth.printerless.ch/realms/members/protocol/openid-connect/token",
  {
    method: "POST",
    headers: { "Content-Type": "application/x-www-form-urlencoded" },
    body: new URLSearchParams({
      grant_type: "client_credentials",
      client_id: CLIENT_ID,
      client_secret: CLIENT_SECRET,
    }),
  },
).then(r => r.json()).then(d => d.access_token)

const openapi = await fetch("https://api.printerless.ch/openapi/", {
  headers: { Authorization: `Bearer ${token}` },
}).then(r => r.json())

console.log(openapi) // vollständige OpenAPI-3-Spezifikation

Generate TypeScript client

From the OpenAPI specification, you generate a ready-made TypeScript client using the public openapi-generator-cli. The tool runs independently via npx, without installation and without any dependency on Printerless. The same approach is also available for Python and many other languages. You only swap the generator name, for example python instead of typescript-axios.

Bash
# 1. OpenAPI-Spezifikation mit Token herunterladen
curl -s https://api.printerless.ch/openapi/ \
  -H "Authorization: Bearer $TOKEN" > openapi.json

# 2. TypeScript-Client generieren (öffentliches Tool, keine Abhängigkeit zu Printerless)
npx @openapitools/openapi-generator-cli generate \
  -i openapi.json \
  -g typescript-axios \
  -o ./printerless-client

Over 600 endpoints, clearly separated

Accounting, invoices, postal mail, contacts, and documents: each area has its own clearly documented interface. More than 600 endpoints in total.

One login for everything

All services share a central login based on the OAuth2 and OpenID Connect standard. You get a token, then it works for every service.

Fine-grained permissions per key

Each API key gets only the permissions you give it. Permissions are finely granular, from read-only to full management, per area.

Ready-made SDKs for developers

Ready-made SDKs are available for Python, TypeScript, and Swift, so developers can get started in hours instead of weeks. Each service is clearly described according to the OpenAPI 3 standard.

Zapier, n8n & more

Connect Printerless with Zapier or n8n without any programming, or build live dashboards. Accounting, invoices, and postal mail flow automatically to wherever you need them.

Complete API documentation

You can find all endpoints with fields, examples, and the option to try them directly in the browser in the searchable Swagger interface.

Go to Swagger documentation

Frequently Asked Questions

Is the API included in my plan?
Do I need programming skills?
What data can I access?
Where can I find the documentation?

Connect your company to everything

Try Printerless free for 14 days and create your first API key in just a few minutes.

Try for free