Printago API

Webhooks

Receive HTTP POST callbacks when events occur in your Printago account. Webhooks let you react to printer status changes, print job updates, and order events in realtime.

Overview

When you configure a webhook, Printago sends an HTTP POST request to your URL each time a subscribed event occurs. Webhooks are configured via the Notification Settings API or the Printago dashboard under Settings → Notifications.

Tip: You can also receive notifications via Discord, Slack, Pushover, and Telegram. Webhooks give you the most control over how you process events.

Delivery Format

Every webhook is delivered as an HTTP POST request with a JSON body. Your endpoint must respond with a 2xx status code to acknowledge receipt.

Method
POST
Content-Type
application/json
X-API-Key
The API key you provided when configuring the webhook. Use this to verify that the request came from Printago.

Payload Schema

All webhook payloads share a common envelope format:

Webhook Payload
{
  "event": string,       // The event name (e.g. "onJobSucceeded")
  "timestamp": string,   // ISO 8601 timestamp of when the event occurred
  "data": {
    "printer": Printer | null,     // Included for printer and job events
    "printJob": PrintJob | null    // Included for job events
  }
}

The data object contains the full Printer and/or PrintJob resource depending on the event type. These are the same objects returned by the GET /v1/printers/{id} and GET /v1/print-jobs/{id} endpoints respectively.

Printer Events

These events fire when a printer's status changes. The data.printer field contains the full Printer object.

Event Description
onPrinterOnline A printer has come online and is connected.
onPrinterOffline A printer has gone offline and is no longer connected.
onPrinterHmsError A printer health monitoring system (HMS) error has been detected.
onPrinterHmsWarning A printer health monitoring system (HMS) warning has been detected.
onPrinterContinuousPrintDisabled Continuous print mode has been automatically disabled on a printer.
Example: Printer Online
{
  "event": "onPrinterOnline",
  "timestamp": "2026-03-13T14:30:00.000Z",
  "data": {
    "printer": {
      "id": "cm7abc123def456ghi",
      "name": "Bambu X1C #1",
      "model": "X1C",
      "status": "idle",
      "isOnline": true,
      ...
    },
    "printJob": null
  }
}

Print Job Events

These events fire when a print job changes status. The data.printJob field contains the full PrintJob object, and data.printer contains the printer the job is assigned to (if available).

Event Description
onJobStarted A print job has started printing.
onJobSucceeded A print job has completed successfully.
onJobFailed A print job has failed.
onJobCancelled A print job has been cancelled.
Example: Job Succeeded
{
  "event": "onJobSucceeded",
  "timestamp": "2026-03-13T16:45:00.000Z",
  "data": {
    "printer": {
      "id": "cm7abc123def456ghi",
      "name": "Bambu X1C #1",
      "model": "X1C",
      "status": "idle",
      "isOnline": true,
      ...
    },
    "printJob": {
      "id": "cm7xyz789ghi012jkl",
      "status": "Completed",
      "partName": "Benchy",
      "assignedPrinterId": "cm7abc123def456ghi",
      "startedAt": "2026-03-13T14:30:00.000Z",
      "completedAt": "2026-03-13T16:45:00.000Z",
      ...
    }
  }
}

Order Events

These events fire when orders are created, cancelled, or closed. Order events do not include printer or printJob data in the payload.

Event Description
onOrderCreatedManual A new order was created manually.
onOrderCreatedRetail A new order was created from a retail integration (Shopify, eBay, TikTok Shop).
onOrderCancelled An order has been cancelled.
onOrderClosed An order has been closed (all items fulfilled).
onOrdersAutoPrinted One or more orders were automatically sent to print via auto-print rules.
Example: Order Created (Retail)
{
  "event": "onOrderCreatedRetail",
  "timestamp": "2026-03-13T10:15:00.000Z",
  "data": {
    "printer": null,
    "printJob": null
  }
}

Configuration

Configure webhooks via the API or the Printago dashboard.

1. Enable the webhook channel

POST /v1/settings/notifications
{
  "channel": "webhook",
  "data": {
    "webhookUrl": "https://your-server.com/webhook",
    "apiKey": "your-secret-key-at-least-32-characters-long"
  }
}

2. Subscribe to events

PATCH /v1/settings/notifications/{id}/configure
{
  "onJobSucceeded": true,
  "onJobFailed": true,
  "onPrinterOffline": true,
  "onOrderCreatedRetail": true
}
URL Requirements
Must use https://. Localhost and private IP addresses are not allowed.
API Key
Minimum 32 characters. Sent in the X-API-Key header of every webhook request for you to verify.

Failure Handling

If your webhook endpoint returns a non-2xx status code or is unreachable, Printago logs the failure. If 10 or more failures occur within a 24-hour window, the webhook is automatically disabled to prevent further failed deliveries.

Warning: Once auto-disabled, you must manually re-enable the webhook from the dashboard or API. Check your endpoint health and re-enable when the issue is resolved.