---
title: "Lists the organization's labor rates, one page at a time."
method: GET
path: "/api/v1/labor-rates"
tags: ["LaborRates"]
---

# Lists the organization's labor rates, one page at a time.

`GET /api/v1/labor-rates`

## Request

- Base URL: `https://app.flexonthejob.com`
- URL: `https://app.flexonthejob.com/api/v1/labor-rates`
- Auth: HTTP bearer

Requires `ViewJobs`. Retired rates are excluded unless `includeInactive=true`.
Cursor-paginated: pass the last rate's `syncId` as `after`. Example:
`GET /api/v1/labor-rates?search=electrician`.
Also available as CSV (`Accept: text/csv` or `?format=csv`); paging cursor in `X-Next-Cursor`.

## Query parameters

- `search` string
- `includeInactive` boolean
- `updatedSince` string, date-time
- `after` string
- `limit` integer
- `format` 'csv'

## Response `200`

One page of labor rates and the cursor for the next page (null on the last page).

- PagedResponseOfLaborRateDto: One page of a cursor-paginated /api/v1 collection (API_AND_MCP.md: `?after=<syncId>&limit=`).
  - `items` LaborRateDto[]: Items of this page in ascending creation order.
    - `id` integer: Numeric id, usable as a job labor line's `laborRateId`. Example: `4`.
    - `syncId` string, uuid: Stable cross-device id; also the pagination cursor.
    - `name` string: Rate name, unique within the organization. Example: `Standard Electrician`.
    - `description` string, nullable: Free-text notes about the rate; null when not recorded.
    - `hourlyRate` number, double: Hourly rate charged to the customer, in the organization's currency (decimal, e.g. `95.00`). `0` for variable-price charges priced per job.
    - `rateType` string: Kind of rate, as a string: one of `Standard`, `Emergency`, `Weekend`, `AfterHours`, `SkillLevel`, `Custom`, `Flat`.
    - `isActive` boolean: False for a retired rate: kept for history, not offered on new work.
    - `createdAt` string, date-time: UTC creation time (ISO-8601).
    - `updatedAt` string, date-time, nullable: UTC last modification time (ISO-8601); null when never edited after creation.
  - `nextCursor` string, nullable: SyncId of the last item; pass it back as `?after=` to fetch the next page. `null` when this is the last page.

## Other responses

- `400`: Unusable `after` cursor.
- `401`: Unauthorized
- `403`: Forbidden
- `429`: Too Many Requests

---

[API](https://skmtc.dev/flexonthejob/apis/flex-api.md) · [All operations](https://skmtc.dev/flexonthejob/apis/flex-api/llms.txt) · [OpenAPI document](https://skmtc.dev/flexonthejob/apis/flex-api/revisions/19c8f4d27acf?raw)
