> ## 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 members in a configured timesheet period

> Required period_date selects a current configured company-local period. All current company members, including inactive and zero-entry members, ordered by member ID. Effective-start-in-period entries contribute; open, deleted, nonpayable and unknown-activity entries do not contribute payable minutes. Existing server timesheet rules use wall-clock minutes, cap days at 1439, and stop overnight spans at the end of their starting day. No payroll or costing calculation. Current configuration applies to historical dates. Cursor scope includes resolved boundaries.



## OpenAPI

````yaml /openapi.json get /timesheets
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:
  /timesheets:
    get:
      tags:
        - Timesheets
      summary: Page members in a configured timesheet period
      description: >-
        Required period_date selects a current configured company-local period.
        All current company members, including inactive and zero-entry members,
        ordered by member ID. Effective-start-in-period entries contribute;
        open, deleted, nonpayable and unknown-activity entries do not contribute
        payable minutes. Existing server timesheet rules use wall-clock minutes,
        cap days at 1439, and stop overnight spans at the end of their starting
        day. No payroll or costing calculation. Current configuration applies to
        historical dates. Cursor scope includes resolved boundaries.
      operationId: listTimesheets
      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: string
            format: date
            description: >-
              Required company-local date within the desired configured period.
              Uses current company settings, even when time tracking is
              disabled. Returns 400 if no usable period configuration exists.
          required: true
          description: >-
            Required company-local date within the desired configured period.
            Uses current company settings, even when time tracking is disabled.
            Returns 400 if no usable period configuration exists.
          name: period_date
          in: query
        - schema:
            type: string
            nullable: true
            format: uuid
            default: null
          required: false
          name: team_member_id
          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/TimesheetPage'
              example:
                data:
                  - team_member:
                      id: 11111111-1111-4111-8111-000000000401
                      name: Alex Example
                    period:
                      start_date: '2026-09-07'
                      end_date_exclusive: '2026-09-14'
                    entry_count: 1
                    open_entry_count: 0
                    unknown_activity_entry_count: 0
                    payable_minutes: 60
                    days:
                      - date: '2026-09-07'
                        payable_minutes: 0
                      - date: '2026-09-08'
                        payable_minutes: 60
                      - date: '2026-09-09'
                        payable_minutes: 0
                      - date: '2026-09-10'
                        payable_minutes: 0
                      - date: '2026-09-11'
                        payable_minutes: 0
                      - date: '2026-09-12'
                        payable_minutes: 0
                      - date: '2026-09-13'
                        payable_minutes: 0
                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:
    TimesheetPage:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Timesheet'
        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
    Timesheet:
      type: object
      properties:
        team_member:
          $ref: '#/components/schemas/Reference'
        period:
          $ref: '#/components/schemas/TimesheetPeriod'
        entry_count:
          type: integer
          minimum: 0
          description: >-
            Nondeleted entries whose effective start falls in this period,
            including open and nonpayable entries.
        open_entry_count:
          type: integer
          minimum: 0
        unknown_activity_entry_count:
          type: integer
          minimum: 0
          description: >-
            Entries without one unambiguous owned activity; excluded from
            payable totals.
        payable_minutes:
          type: integer
          minimum: 0
          description: >-
            Sum of daily payable minutes using existing timesheet rules; not
            payroll, overtime, or raw elapsed time.
        days:
          type: array
          items:
            type: object
            properties:
              date:
                type: string
                format: date
              payable_minutes:
                type: integer
                minimum: 0
                maximum: 1439
            required:
              - date
              - payable_minutes
          description: >-
            Every local date in the period, including zero-minute days. Closed,
            payable, nondeleted entries only; whole wall-clock minutes using the
            existing server timesheet calculation (including its daylight-saving
            behavior), capped at 1439 per day. Overnight entries stop at the end
            of their start day.
      required:
        - team_member
        - period
        - entry_count
        - open_entry_count
        - unknown_activity_entry_count
        - payable_minutes
        - days
      description: >-
        A derived member-period representation, identified by member ID and
        resolved period dates. No persisted ID or modification timestamp.
        Includes inactive and zero-entry current company members of every role.
    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.
    Reference:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
      required:
        - id
        - name
    TimesheetPeriod:
      type: object
      properties:
        start_date:
          type: string
          format: date
          description: >-
            Inclusive company-local date under the current configured pay
            period.
        end_date_exclusive:
          type: string
          format: date
          description: >-
            Exclusive company-local date. Select this date as period_date to
            retrieve the next period.
      required:
        - start_date
        - end_date_exclusive
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        Existing Breezy API key. Grants all published reads in its associated
        company. No app permission scopes.

````