DataShift
Direct Print

Direct Print API Reference

Full API reference for the DataShift Direct Print API: list your registered print devices and submit PDF print jobs to them with a Bearer token.

List print devices

GET
/devices

Returns active (non-revoked) print devices registered for the tenant, each with its full list of reported printers.

Use the id of the desired device as deviceId when calling POST /print-jobs. Optionally use one of that device's printers[].id as printerId to override which physical printer on the device receives the job — omit it to use the device's preferred printer (the one with isPreferred: true).

Devices are registered from the Datashift portal (Settings → print devices). Each device runs the Datashift print-client software and listens for print jobs. Revoked devices are excluded from this list. A device that hasn't reported its printer list yet (older print-client versions) has an empty printers array.

Requires the devices:read scope.

Authorization

DirectPrintApiKey
headerAuthorizationBearer <dsdp_<64-hex-chars>>

API key issued from Settings → Direct Print → API Keys. The raw key is shown once at creation.

Response Body

Active print devices for this tenant

application/json
  1. response
devices*array<>
Example Request
curl -X GET 'https://datashift.com.au/api/direct-print/devices'
Example Response
{  "devices": [    {      "id": "dev_abc123",      "label": "Warehouse A",      "printerName": "Zebra ZT411",      "lastUsedAt": "2026-06-25T06:00:00.000Z",      "createdAt": "2026-01-10T00:00:00.000Z",      "printers": [        {          "id": "prn_abc123",          "name": "Zebra ZT411",          "isPreferred": true,          "isOnline": true,          "lastSeenAt": "2026-09-08T00:00:00.000Z"        },        {          "id": "prn_def456",          "name": "HP LaserJet Office",          "isPreferred": false,          "isOnline": true,          "lastSeenAt": "2026-09-08T00:00:00.000Z"        }      ]    },    {      "id": "dev_def456",      "label": "Dispatch Desk",      "printerName": null,      "lastUsedAt": null,      "createdAt": "2026-03-01T00:00:00.000Z",      "printers": []    }  ]}

Submit a print job

POST
/print-jobs

Queues a PDF print job for delivery to a registered device.

Typical flow: Call GET /devices once during setup, store each device's id in your system keyed by workstation, then pass the relevant deviceId in this request.

Handling DEVICE_NOT_FOUND: If the response is 404 with code: DEVICE_NOT_FOUND, the stored device ID is stale (device was revoked or replaced). Re-fetch GET /devices and prompt the user to select a device before retrying.

Requires the print-jobs:write scope.

Authorization

DirectPrintApiKey
headerAuthorizationBearer <dsdp_<64-hex-chars>>

API key issued from Settings → Direct Print → API Keys. The raw key is shown once at creation.

Request Body

application/json
  1. body
deviceId*string

ID of the print device to send the job to (from GET /devices)

pdfBase64*string

Base64-encoded PDF document to print. Maximum 9,000,000 base64 characters (~6.75 MB of raw PDF).

Lengthlength <= 9000000
printerId?string

Optional id of a specific printer on the target device; defaults to the device's preferred printer when omitted.

Response Body

Print job queued successfully

application/json
  1. response
jobId*string

Direct Print job ID

status*"DELIVERED"

Always DELIVERED on a 201 — means handed to the delivery queue, not confirmed printed

Value in"DELIVERED"
Example Request
curl -X POST 'https://datashift.com.au/api/direct-print/print-jobs' \  -H 'Content-Type: application/json' \  -d '{  "deviceId": "dev_abc123",  "pdfBase64": "JVBERi0xLjQK..."}'
Example Response
{  "jobId": "pj_xyz789",  "status": "DELIVERED"}