v1 · REST API

DingPack API Reference

The DingPack API lets you queue packing slip print jobs from any platform — WooCommerce, custom storefronts, ERPs, or your own scripts. The API is REST-based, returns JSON, and authenticates via API key.

Base URL: https://dingpack.com

Authentication

Authenticate by passing your API key as a Bearer token in the Authorization header. Find your API key in your dashboard under the Security tab.

curl https://dingpack.com/api/v1/account \
  -H "Authorization: Bearer dp_your_api_key_here"
Keep your key secret. If it's exposed, rotate it immediately from your dashboard. Rotating invalidates the old key within seconds.

Rate Limits

Each print job queued via the API counts against your plan's monthly print limit — the same pool used by your Shopify webhook. When the limit is reached, the API returns 429 Too Many Requests.

PlanMonthly printsAPI access
Free25✗ Not included
Starter100✗ Not included
Pro500✓ Included

Limits reset on your monthly billing cycle date. Check your remaining prints via GET /api/v1/account.

Errors

All errors return a JSON body with an error field and an optional hint.

StatusMeaning
200 / 201Success
400Bad request — missing or invalid field
401Invalid or missing API key
403Plan does not include API access
404Resource not found
429Monthly print limit reached
500Server error
{
  "error": "Monthly print limit reached",
  "limit": 500,
  "hint": "Upgrade your plan or wait for your billing cycle to reset"
}

Endpoints

GET /api/v1/account

Returns account info including your current plan, print usage, and remaining limit for this billing cycle.

Example request

curl https://dingpack.com/api/v1/account \
  -H "Authorization: Bearer dp_your_api_key_here"

Response

{
  "store": "NJF Golf",
  "plan": "Pro",
  "prints_used": 142,
  "prints_limit": 500,
  "prints_remaining": 358
}
POST /api/v1/jobs

Queue a packing slip print job. The DingPack agent on your printer PC will pick it up within 5 seconds and send it to the configured printer. Works with any platform — Shopify, WooCommerce, custom storefronts, or manual orders.

Request body

FieldTypeDescription
order_number required string Your order number or identifier
line_items required array Array of Line Item objects
customer_name string Customer's full name
shipping_address object Shipping address — see Order Object
billing_address object Billing address (optional, falls back to shipping)
email string Customer email
phone string Customer phone
note string Order note printed on the slip
curl -X POST https://dingpack.com/api/v1/jobs \
  -H "Authorization: Bearer dp_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "order_number": "1042",
    "customer_name": "Jamie Reynolds",
    "email": "jamie@example.com",
    "line_items": [
      {
        "title": "Blue T-Shirt",
        "variant_title": "Large / Blue",
        "quantity": 2,
        "sku": "TS-BLU-L",
        "price": "24.99"
      }
    ],
    "shipping_address": {
      "name": "Jamie Reynolds",
      "address1": "123 Main St",
      "city": "Austin",
      "province": "TX",
      "zip": "78701",
      "country": "US"
    },
    "note": "Please gift wrap"
  }'

Response 201 Created

{
  "id": 42,
  "status": "pending",
  "order_number": "1042",
  "created_at": "2026-06-04T14:32:01.000Z",
  "message": "Print job queued. Your agent will pick it up within 5 seconds."
}
GET /api/v1/jobs

Returns your most recent print jobs, newest first.

Query parameters

ParamTypeDescription
limit integer Number of jobs to return (default 20, max 100)
status string Filter by status: pending · printed · failed
curl "https://dingpack.com/api/v1/jobs?limit=5&status=printed" \
  -H "Authorization: Bearer dp_your_api_key_here"

Response

{
  "jobs": [
    {
      "id": 42,
      "order_number": "1042",
      "status": "printed",
      "attempts": 1,
      "created_at": "2026-06-04T14:32:01.000Z",
      "printed_at": "2026-06-04T14:32:06.000Z"
    }
  ],
  "count": 1
}
GET /api/v1/jobs/:id

Retrieve a single job by its ID. Useful for polling status after queuing.

curl https://dingpack.com/api/v1/jobs/42 \
  -H "Authorization: Bearer dp_your_api_key_here"

Response

{
  "id": 42,
  "order_number": "1042",
  "status": "printed",
  "attempts": 1,
  "created_at": "2026-06-04T14:32:01.000Z",
  "printed_at": "2026-06-04T14:32:06.000Z"
}
Polling tip: After calling POST /api/v1/jobs, poll GET /api/v1/jobs/:id every 2–3 seconds until status changes from pending to printed or failed. Jobs typically process within 5 seconds.

Objects

Job Object

FieldTypeDescription
idintegerUnique job ID
order_numberstringThe order number provided when creating the job
statusstringpending · printed · failed · duplicate
attemptsintegerNumber of print attempts made by the agent
created_atstring (ISO 8601)When the job was queued
printed_atstring (ISO 8601) · nullableWhen the agent confirmed printing

Address Object

Used for shipping_address and billing_address. All fields optional.

FieldTypeDescription
namestringRecipient name
address1stringStreet address line 1
address2stringApt, suite, unit, etc.
citystringCity
provincestringState or province code (e.g. TX)
zipstringPostal / ZIP code
countrystringCountry code (e.g. US)
phonestringPhone number

Line Item Object

FieldTypeDescription
title required string Product name
quantityintegerQuantity ordered (default 1)
variant_titlestringVariant label (e.g. Large / Blue)
skustringSKU or product code
pricestringUnit price (e.g. "24.99")
gramsintegerWeight in grams

Ready to start printing?

API access is included in the Pro plan — $29/store/month.

Get started with Pro

30-day money-back guarantee · Cancel anytime