> For the complete documentation index, see [llms.txt](https://docs.shortcutco.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.shortcutco.com/developers/api-reference/reference/objects/service.md).

# The service object

The service object in the Shortcut API - every field, an example, and the endpoints that return it.

A service in the workspace's catalog.

## Fields

| Field                      | Type                                           | Description                                                                                                                                                        |
| -------------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `id`                       | id                                             | The service's id.                                                                                                                                                  |
| `object`                   | `"service"`                                    | Always `service`.                                                                                                                                                  |
| `name`                     | string                                         | The service's name, unique in the workspace regardless of case.                                                                                                    |
| `description`              | string or null                                 | Description shown on estimates and invoices.                                                                                                                       |
| `serviceType`              | `standard`, `snow`, `chemical`                 | `standard`, `snow`, or `chemical`. Chemical services are read-only through the API.                                                                                |
| `status`                   | `active`, `deactivated`                        | Deactivated services stay on existing jobs but are no longer offered for new work.                                                                                 |
| `priceStructure`           | `per_hour`, `per_sqft`, `flat`, `per_man_hour` | How the price is computed: `flat` per visit, `per_sqft` by lawn area, `per_hour` per crew hour, or `per_man_hour` per person-hour on site.                         |
| `rate`                     | number or null                                 | The price in US dollars for the price structure; null when `pricingTiers` sets the price.                                                                          |
| `pricingTiers`             | array of objects or null                       | Square-footage brackets, or null.                                                                                                                                  |
| `pricingTiers[].upTo`      | integer or null                                | The top of this bracket in square feet (inclusive); null on the last, open-ended bracket.                                                                          |
| `pricingTiers[].rate`      | number                                         | The per-square-foot rate in this bracket, in US dollars.                                                                                                           |
| `completionMessage`        | string or null                                 | The message customers get when a visit of this service is completed; null uses the default message.                                                                |
| `availableForWorkerAddOns` | boolean                                        | Whether crew members can add this service to a visit in the field.                                                                                                 |
| `snow`                     | object or null                                 | Snow terms; present only on snow services.                                                                                                                         |
| `snow.triggerKind`         | `depth`, `any`, `manual`, `on_call`            | When the service is due: `depth` at `triggerInches` of snow, `any` accumulation, `manual` (never auto-selected), or `on_call` (offered to the customer each time). |
| `snow.triggerInches`       | number or null                                 | Inches of snow that make a `depth` service due; null for other kinds.                                                                                              |
| `snow.offerWindowHours`    | integer or null                                | Hours an `on_call` offer stays open; null for other kinds.                                                                                                         |
| `snow.depthLadder`         | array of objects or null                       | Optional price per push by accumulation, only with a `flat` price; null when not used.                                                                             |
| `snow.depthLadder[].upTo`  | integer or null                                | The top of this accumulation bracket in whole inches; null on the last, open-ended bracket.                                                                        |
| `snow.depthLadder[].rate`  | number                                         | The price per push in this bracket, in US dollars.                                                                                                                 |
| `createdAt`                | timestamp                                      | When the service was created, ISO 8601 in UTC.                                                                                                                     |
| `updatedAt`                | timestamp                                      | When the service last changed, ISO 8601 in UTC.                                                                                                                    |

## Example

```json
{
  "id": "d088c866-ccd3-43ad-891d-3ef4c5677a3b",
  "object": "service",
  "name": "Weekly mowing",
  "description": null,
  "serviceType": "standard",
  "status": "active",
  "priceStructure": "per_hour",
  "rate": 45,
  "pricingTiers": [
    {
      "upTo": 1,
      "rate": 45
    }
  ],
  "completionMessage": "Thanks! Your lawn is done for the week.",
  "availableForWorkerAddOns": true,
  "snow": {
    "triggerKind": "depth",
    "triggerInches": 45,
    "offerWindowHours": 1,
    "depthLadder": [
      {
        "upTo": 1,
        "rate": 45
      }
    ]
  },
  "createdAt": "2026-10-16T17:04:12.381Z",
  "updatedAt": "2026-10-16T17:04:12.381Z"
}
```

## Endpoints

| Endpoint                            | What it does         |
| ----------------------------------- | -------------------- |
| `GET /v1/services`                  | List services        |
| `POST /v1/services`                 | Create a service     |
| `GET /v1/services/{id}`             | Get a service        |
| `PATCH /v1/services/{id}`           | Update a service     |
| `POST /v1/services/{id}/deactivate` | Deactivate a service |
| `POST /v1/services/{id}/reactivate` | Reactivate a service |
