---
title: "Lists the organization's jobs, oldest first, one page at a time."
method: GET
path: "/api/v1/jobs"
tags: ["Jobs"]
---

# Lists the organization's jobs, oldest first, one page at a time.

`GET /api/v1/jobs`

## Request

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

Pagination: pass the previous response's `nextCursor` as `after`; `limit`
defaults to 50 and is capped at 200. All filters combine with AND. Response carries a
weak `ETag`; resend it as `If-None-Match` to get 304 when nothing changed.
Also available as CSV (`Accept: text/csv` or `?format=csv`); paging cursor in `X-Next-Cursor`.

## Query parameters

- `status` string
- `customerId` integer
- `updatedSince` string, date-time
- `scheduledFrom` string, date-time
- `scheduledTo` string, date-time
- `after` string
- `limit` integer
- `format` 'csv'

## Response `200`

A page of jobs and the cursor for the next page (null on the last page).

- PagedResponseOfJobSummaryDto: One page of a cursor-paginated /api/v1 collection (API_AND_MCP.md: `?after=<syncId>&limit=`).
  - `items` JobSummaryDto[]: Items of this page in ascending creation order.
    - `id` integer: Numeric id used in `/api/v1/jobs/{id}`. Unique within this organization. Example: `1042`.
    - `syncId` string, uuid: Stable cross-device identifier (GUID) — also the pagination cursor value. Example: `3f2504e0-4f89-11d3-9a0c-0305e82c3301`.
    - `jobNumber` string: Human-readable job number shown to staff and customers. Example: `J-2026-0042`.
    - `jobType` string, nullable: Free-text job category configured by the organization. Example: `Installation`, `Repair`.
    - `status` string: Workflow status name. One of `Draft`, `InspectionInProgress`, `Estimated`, `AwaitingOptionSelection`, `Scheduled`, `InProgress`, `Completed`, `Invoiced`, `Paid`, `Cancelled`, `Outstanding`.
    - `statusName` string: Display label of the status as the organization has customised it (falls back to `status`). Example: `On Site`.
    - `paymentStatus` string, nullable: Payment state, independent of workflow status: `Unpaid`, `Partial`, `Paid`, `Overpaid` or `Refunded`.
    - `customerId` integer: Id of the customer the job is for (see `/api/v1/customers/{id}`).
    - `customerName` string: Customer display name at read time. Example: `Acme Property Management`.
    - `description` string, nullable: Short description of the work. May be null for drafts.
    - `createdAt` string, date-time: When the job was created, ISO-8601 UTC. Example: `2026-09-01T14:03:22Z`.
    - `updatedAt` string, date-time: Last modification time, ISO-8601 UTC (creation time when never modified). Use with the `updatedSince` filter to poll for changes.
    - `scheduledDate` string, date-time, nullable: Scheduled start as the organization's local wall-clock time with no UTC offset (the `date-time` format here is a local time, not RFC 3339 with zone), e.g. `2026-09-08T08:30:00`. Null when unscheduled.
    - `scheduledDurationMinutes` integer, nullable: Planned duration in minutes (default 120 when scheduled without an explicit duration). Null when unscheduled.
    - `startDate` string, date-time, nullable: When work actually started, ISO-8601 UTC. Null until the job is in progress.
    - `completedDate` string, date-time, nullable: When work was completed, ISO-8601 UTC. Null until completed.
    - `totalPrice` number, double: Customer price before tax, after the job-level discount, in the organization's currency (decimal, e.g. `1250.00`).
  - `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

- `304`: Unchanged since the `If-None-Match` ETag.
- `400`: Unknown `status` or unusable `after` cursor (field listed in `errors`).
- `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)
