---
title: "Send Work Order"
method: POST
path: "/service_orders/{purchase_order_uid}/send"
---

# Send Work Order

`POST /service_orders/{purchase_order_uid}/send`

## Request

- Base URL: `https://dc-region.zuperpro.com/api`
- URL: `https://dc-region.zuperpro.com/api/service_orders/{purchase_order_uid}/send`
- Auth: API key in header `x-api-key`

Operates on Service Orders, shown in the Zuper client app as "Work Order" (in every industry). Work Orders share the exact same underlying schema and endpoints as Purchase Orders / Material Orders; they're distinguished only by the `purchase_order_type` field (`SERVICE_ORDER` here) and the `/service_orders` route prefix. If `email` is provided, sends the order by email and returns a JSON success message. If `email` is omitted, the response is instead a raw PDF (or Excel, if `send_excel` is true) binary stream, not JSON.

## Path parameters

- `purchase_order_uid` string, required

## Request body

- object
  - `email` string
  - `subject` string
  - `email_body` string
  - `email_cc` string[]
  - `email_bcc` string[]
  - `email_config_uid` string
  - `template_uid` string
  - `attachments` object[]
  - `send_pdf` boolean: If true, sends/returns a PDF.
  - `send_excel` boolean: If true, sends/returns an Excel file instead of a PDF.
  - `include_measurements` boolean
  - `include_job_attachments` boolean
  - `include_products` boolean
  - `from_status_update` boolean

## Response `200`

200

- object
  - `type` 'success'
  - `title` string
  - `message` string

## Changes

- **2026-11-03** `3c21bc232e16`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/zuper/apis/zuper-pro-api/changes/service_orders/:purchase_order_uid/send/post.md)

---

[API](https://skmtc.dev/zuper/apis/zuper-pro-api.md) - [All operations](https://skmtc.dev/zuper/apis/zuper-pro-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zuper/apis/zuper-pro-api/revisions/3c21bc232e16?raw)
