---
title: "Get labor efficiency metrics by role"
method: GET
path: "/Metrics/labor"
tags: ["Metrics"]
---

# Get labor efficiency metrics by role

`GET /Metrics/labor`

## Request

- Base URL: `https://api.clinicos.vet/backend/business`
- URL: `https://api.clinicos.vet/backend/business/Metrics/labor`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/docs/Metrics/labor/get.ts> (a function with typed inputs; its response is checked against the schema)

## Query parameters

- `period` string

## Response `200`

OK

- BusinessMetricsResponseDtoOfLaborEfficiencyDto
  - `success` boolean
  - `data` LaborEfficiencyDto
    - `period` string
    - `revenuePerLaborHour` RevenuePerHourDto
      - `current` union
        - number, double
        - string, double
      - `target` union: Configured target, or null when no role has one — never a default.
        - number, double
        - string, double
      - `percentOfTarget` union
        - number, double
        - string, double
    - `laborBreakdown` LaborBreakdownDto[]
      - `role` string: The staff member's own role name, or "Unassigned".
      - `isProvider` boolean: True for roles flagged IsPrimaryProvider (veterinarians).
      - `hours` union
        - number, double
        - string, double
      - `hourlyRate` union: Configured rate for the role, or null when none is set.
        - number, double
        - string, double
      - `cost` union: Hours x rate, or null when the role has no configured rate.
        - number, double
        - string, double
    - `totalLaborHours` union: Clocked hours. Roles with RequiresTimeTracking = false contribute none.
      - number, double
      - string, double
    - `totalLaborCost` union: Null unless every role that worked has a configured hourly rate.
      - number, double
      - string, double
    - `laborCostPercentage` union
      - number, double
      - string, double
    - `ratesConfigured` boolean: Whether labor cost is a measurement at all for this period.
    - `trend` LaborTrendPointDto[]
      - `week` string
      - `revenuePerHour` union
        - number, double
        - string, double
  - `error` string, nullable
  - `message` string, nullable

## Other responses

- `500`: Internal Server Error

## Changes

- **2026-09-17** `d4ae30be0619`: 18 breaking, 6 warning, 12 info
  - the response property `data/oneOf[#/components/schemas/LaborEfficiencyDto]/laborBreakdown/items/cost` became nullable for the status `200` (media type: text/plain)
  - the response property `data/oneOf[#/components/schemas/LaborEfficiencyDto]/laborBreakdown/items/cost` became nullable for the status `200` (media type: application/json)
  - the response property `data/oneOf[#/components/schemas/LaborEfficiencyDto]/laborBreakdown/items/cost` became nullable for the status `200` (media type: text/json)
  - the response property `data/oneOf[#/components/schemas/LaborEfficiencyDto]/laborCostPercentage` became nullable for the status `200` (media type: text/plain)
  - …32 more

[Operation history](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/changes/Metrics/labor/get.md)

---

[API](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1.md) - [All operations](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/revisions/099cf36186e0?raw)
