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

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

`GET /api/v1/vendors`

## Request

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

Requires `ViewPurchaseOrders`. Deactivated vendors are excluded unless
`includeInactive=true`. Cursor-paginated: pass `nextCursor` as `after`.
Example: `GET /api/v1/vendors?search=acme`.
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 vendors and the cursor for the next page (null on the last page).

- PagedResponseOfVendorDto: One page of a cursor-paginated /api/v1 collection (API_AND_MCP.md: `?after=<syncId>&limit=`).
  - `items` VendorDto[]: Items of this page in ascending creation order.
    - `id` integer: Numeric id, usable in `/api/v1/vendors/{id}` and as a purchase order's `vendorId`. Example: `7`.
    - `syncId` string, uuid: Stable cross-device id; also the pagination cursor.
    - `name` string: Vendor name, unique in the organization. Example: `Acme Supply`.
    - `description` string, nullable: Free-text notes about the vendor; null when not recorded.
    - `contactName` string, nullable: Main contact's name; null when not recorded. Example: `Dana Ruiz`.
    - `contactEmail` string, nullable: Main contact's email; null when not recorded. Example: `orders@acme.example`.
    - `contactPhone` string, nullable: Main contact's phone, as typed; null when not recorded. Example: `555-0100`.
    - `website` string, nullable: Vendor website; null when not recorded. Example: `https://acme.example`.
    - `defaultShippingCompany` string, nullable: Carrier the vendor usually ships with; null when not recorded. Example: `UPS`.
    - `isActive` boolean: False for a deactivated vendor: kept for history, not offered on new orders and refused as a new order's `vendorId`.
    - `createdAt` string, date-time: UTC creation time (ISO-8601).
    - `updatedAt` string, date-time: UTC last modification time (ISO-8601).
  - `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)
