> ## Documentation Index
> Fetch the complete documentation index at: https://developers.getbreezyapp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Page equipment

> Installed items at owned locations, with recorded condition, lifecycle dates, warranty terms, and optional same-location HVAC grouping. All operational statuses are included by default. No inferred age, warranty eligibility, or item service history. Orders by id ascending. List and detail return the same complete representation. updated_since covers parent-row saves only.



## OpenAPI

````yaml /openapi.json get /equipment
openapi: 3.0.3
info:
  title: Breezy Public Reporting API
  version: 1.0.0
  description: >-
    Read customers, team members, jobs, visits, assignments, installed
    equipment, captured form responses, time entries, configured-period
    timesheets, business reference catalogs, job leads, estimates, invoices,
    payments, refunds, recorded job financials, saved sold/earned credits, and
    financial summaries for your company. Existing API keys grant company-wide
    read access. Amounts are integer USD cents. Reads return current corrected
    records, with cursor pagination for collecting results.


    Read the [Breezy FSM guides](https://developers.getbreezyapp.com) for
    authentication, pagination, refresh limits, and business measures. All reads
    use latest corrected company records; cursors do not create a snapshot or a
    complete change feed.
servers:
  - url: https://api.getbreezyapp.com/v1
    description: Breezy FSM production API
security:
  - apiKey: []
tags:
  - name: Company
  - name: Invoices
  - name: Payments
  - name: Refunds
  - name: Reports
  - name: TeamMembers
  - name: Accounts
  - name: Contacts
  - name: Locations
  - name: Jobs
  - name: JobAppointments
  - name: JobAssignments
  - name: BusinessUnits
  - name: JobTypes
  - name: JobClasses
  - name: JobLifecycles
  - name: LeadSources
  - name: Tags
  - name: Estimates
  - name: JobLeads
  - name: Equipment
  - name: FormResponses
  - name: TimeEntries
  - name: Timesheets
  - name: JobFinancials
  - name: RevenueAttributions
externalDocs:
  description: Breezy FSM reporting guides and API reference
  url: https://developers.getbreezyapp.com
paths:
  /equipment:
    get:
      tags:
        - Equipment
      summary: Page equipment
      description: >-
        Installed items at owned locations, with recorded condition, lifecycle
        dates, warranty terms, and optional same-location HVAC grouping. All
        operational statuses are included by default. No inferred age, warranty
        eligibility, or item service history. Orders by id ascending. List and
        detail return the same complete representation. updated_since covers
        parent-row saves only.
      operationId: listEquipment
      parameters:
        - schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
            description: >-
              Maximum parent records or report rows. Complete children are
              always included.
          required: false
          description: >-
            Maximum parent records or report rows. Complete children are always
            included.
          name: limit
          in: query
        - schema:
            type: string
            nullable: true
            minLength: 1
            default: null
            description: >-
              Repeat the original filters; any valid page size may continue.
              Foreign-company, tampered or mismatched cursors return
              INVALID_CURSOR.
          required: false
          description: >-
            Repeat the original filters; any valid page size may continue.
            Foreign-company, tampered or mismatched cursors return
            INVALID_CURSOR.
          name: cursor
          in: query
        - schema:
            type: array
            nullable: true
            items:
              type: string
              format: uuid
            minItems: 1
            maxItems: 100
            default: null
            description: >-
              Repeat ids for a bounded ID set. Valid foreign or missing IDs
              contribute no list rows.
          required: false
          style: form
          explode: true
          name: ids
          in: query
        - schema:
            type: string
            nullable: true
            format: date-time
            default: null
            description: Inclusive creation instant.
          required: false
          description: Inclusive creation instant.
          name: created_from
          in: query
        - schema:
            type: string
            nullable: true
            format: date-time
            default: null
            description: Exclusive creation instant.
          required: false
          description: Exclusive creation instant.
          name: created_before
          in: query
        - schema:
            type: string
            nullable: true
            format: date-time
            default: null
            description: >-
              Inclusive parent-record updated_at filter only; not a complete
              change feed.
          required: false
          description: >-
            Inclusive parent-record updated_at filter only; not a complete
            change feed.
          name: updated_since
          in: query
        - schema:
            type: string
            nullable: true
            format: uuid
            default: null
            description: >-
              Any owned account association at the equipment location, including
              archived associations.
          required: false
          description: >-
            Any owned account association at the equipment location, including
            archived associations.
          name: account_id
          in: query
        - schema:
            type: string
            nullable: true
            format: uuid
            default: null
          required: false
          name: location_id
          in: query
        - schema:
            type: string
            nullable: true
            format: uuid
            default: null
          required: false
          name: hvac_system_id
          in: query
        - schema:
            type: string
            nullable: true
            minLength: 1
            default: null
          required: false
          name: equipment_type
          in: query
        - schema:
            type: array
            nullable: true
            items:
              type: string
              minLength: 1
            minItems: 1
            default: null
          required: false
          style: form
          explode: true
          name: status
          in: query
        - schema:
            type: string
            nullable: true
            minLength: 1
            default: null
          required: false
          name: condition
          in: query
        - schema:
            type: string
            nullable: true
            minLength: 1
            default: null
          required: false
          name: manufacturer
          in: query
      responses:
        '200':
          description: Successful read. Clients ignore unrecognized response fields.
          headers:
            Cache-Control:
              schema:
                type: string
              example: private, no-store
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EquipmentPage'
              example:
                data:
                  - id: 11111111-1111-4111-8111-000000004101
                    location_id: 11111111-1111-4111-8111-000000001107
                    hvac_system:
                      id: 11111111-1111-4111-8111-000000004102
                      name: Downstairs
                    equipment_type: AIR_CONDITIONER
                    status: IN_SERVICE
                    condition: FAIR
                    manufacturer: Example Equipment
                    model_number: AC-36
                    serial_number: EXAMPLE-001
                    description: Outdoor condenser
                    dimensions: 36 × 36 × 40 inches
                    manufacturing_date: '2014-01-01'
                    installation:
                      date: '2014-06-15'
                      party: EXTERNAL
                    estimated_end_of_life_date: '2029-06-15'
                    average_life_expectancy_years: 15
                    manufacturer_warranty:
                      start_date: '2014-06-15'
                      end_date: '2024-06-15'
                      terms: Recorded ten-year limited parts warranty
                    labor_warranty:
                      start_date: null
                      end_date: null
                      terms: null
                    created_at: null
                    updated_at: '2026-09-08T19:00:00Z'
                pagination:
                  next_cursor: null
                meta:
                  request_id: 11111111-1111-4111-8111-000000009999
                  generated_at: '2026-09-08T19:00:00Z'
                  timezone: America/Los_Angeles
        '400':
          description: >-
            Malformed input, unknown query parameter, unsupported combination or
            invalid cursor.
          headers:
            Cache-Control:
              schema:
                type: string
              example: private, no-store
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: INVALID_REQUEST
                  message: end_date must be later than start_date
                  request_id: example-request
                  details: []
        '401':
          description: Missing, invalid or expired key, or invalid linked identity.
          headers:
            Cache-Control:
              schema:
                type: string
              example: private, no-store
            WWW-Authenticate:
              schema:
                type: string
              example: Bearer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: UNAUTHENTICATED
                  message: A valid API key is required
                  request_id: example-request
                  details: []
        '404':
          description: >-
            Missing resource or resource outside the authenticated company. Same
            response for both.
          headers:
            Cache-Control:
              schema:
                type: string
              example: private, no-store
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: NOT_FOUND
                  message: Resource not found
                  request_id: example-request
                  details: []
        '405':
          description: Write methods do not mutate business data and return 405.
          headers:
            Cache-Control:
              schema:
                type: string
              example: private, no-store
            Allow:
              schema:
                type: string
              example: GET, HEAD, OPTIONS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: METHOD_NOT_ALLOWED
                  message: This resource supports GET
                  request_id: example-request
                  details: []
        '429':
          description: Company request budget exhausted; retry after the indicated delay.
          headers:
            Cache-Control:
              schema:
                type: string
              example: private, no-store
            Retry-After:
              schema:
                type: integer
                minimum: 1
              description: Seconds before retrying.
              example: 30
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: RATE_LIMITED
                  message: Request limit exceeded
                  request_id: example-request
                  details: []
        '500':
          description: >-
            Unexpected failure. Share request_id with support; no stack or
            provider secrets in response.
          headers:
            Cache-Control:
              schema:
                type: string
              example: private, no-store
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: INTERNAL_ERROR
                  message: Unable to complete request
                  request_id: example-request
                  details: []
      security:
        - apiKey: []
components:
  schemas:
    EquipmentPage:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Equipment'
        pagination:
          $ref: '#/components/schemas/Pagination'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
      required:
        - data
        - pagination
        - meta
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - INVALID_REQUEST
                - INVALID_CURSOR
                - UNAUTHENTICATED
                - NOT_FOUND
                - METHOD_NOT_ALLOWED
                - RATE_LIMITED
                - INTERNAL_ERROR
            message:
              type: string
            request_id:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  field:
                    type: string
                  message:
                    type: string
                required:
                  - field
                  - message
          required:
            - code
            - message
            - request_id
            - details
      required:
        - error
    Equipment:
      type: object
      properties:
        id:
          type: string
          format: uuid
        location_id:
          type: string
          format: uuid
        hvac_system:
          type: object
          nullable: true
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
              nullable: true
          required:
            - id
            - name
          description: Current HVAC grouping at this same location.
        equipment_type:
          type: string
          description: Recorded type code, including legacy or custom values.
        status:
          type: string
          description: >-
            Recorded operational status; usual values are IN_SERVICE,
            DEACTIVATED, and UNKNOWN.
        condition:
          type: string
          nullable: true
          description: Recorded condition; not an inferred replacement probability.
        manufacturer:
          type: string
          nullable: true
        model_number:
          type: string
          nullable: true
        serial_number:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        dimensions:
          type: string
          nullable: true
        manufacturing_date:
          type: string
          nullable: true
          format: date
        installation:
          type: object
          properties:
            date:
              type: string
              nullable: true
              format: date
            party:
              type: string
              nullable: true
              description: >-
                Recorded INTERNAL or EXTERNAL installation, including legacy
                values.
          required:
            - date
            - party
        estimated_end_of_life_date:
          type: string
          nullable: true
          format: date
        average_life_expectancy_years:
          type: number
          nullable: true
        manufacturer_warranty:
          type: object
          properties:
            start_date:
              type: string
              nullable: true
              format: date
            end_date:
              type: string
              nullable: true
              format: date
            terms:
              type: string
              nullable: true
          required:
            - start_date
            - end_date
            - terms
        labor_warranty:
          type: object
          properties:
            start_date:
              type: string
              nullable: true
              format: date
            end_date:
              type: string
              nullable: true
              format: date
            terms:
              type: string
              nullable: true
          required:
            - start_date
            - end_date
            - terms
        created_at:
          type: string
          nullable: true
          format: date-time
          description: Recorded creation time; unavailable on some legacy equipment.
        updated_at:
          type: string
          nullable: true
          format: date-time
          description: >-
            Equipment-row change only; related system and location changes may
            not advance it.
      required:
        - id
        - location_id
        - hvac_system
        - equipment_type
        - status
        - condition
        - manufacturer
        - model_number
        - serial_number
        - description
        - dimensions
        - manufacturing_date
        - installation
        - estimated_end_of_life_date
        - average_life_expectancy_years
        - manufacturer_warranty
        - labor_warranty
        - created_at
        - updated_at
      description: >-
        One installed item at a service location. Dates and warranty terms are
        recorded inputs, not calculated age, warranty eligibility, or service
        history.
    Pagination:
      type: object
      properties:
        next_cursor:
          type: string
          nullable: true
          description: >-
            Opaque continuation. Null ends traversal. Keep the same filters;
            page size may change.
      required:
        - next_cursor
    ResponseMeta:
      type: object
      properties:
        request_id:
          type: string
        generated_at:
          type: string
          format: date-time
        timezone:
          type: string
      required:
        - request_id
        - generated_at
        - timezone
      description: >-
        Generation time and company timezone. generated_at is not a snapshot or
        synchronization token.
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        Existing Breezy API key. Grants all published reads in its associated
        company. No app permission scopes.

````