workers first
IndustriesPricingSecurityFor ProvidersHow It Works
Sign InGet started freeBook a demo

Guides

  • Introduction
  • Authentication
  • Errors
  • Rate limits
  • Idempotency
  • Pagination
  • Scopes

API Reference

  • Organization
  • Members
  • Customers
  • Sites
  • Shifts
  • timesheets
  • invoices
  • Bookings
  • Webhooks

Webhooks

  • Events & signatures

API Reference

timesheets

Workers First

The all-in-one platform for organizations to manage their workforce, operations, and the people they serve.

support@keepworkersfirst.org

For Organizations

  • Book a Demo
  • Pricing
  • Security
  • Industries
  • Developers

For Providers

  • Join as Provider
  • Learn More

For Families

  • Create Account
  • Learn More

Company

  • About Us
  • Contact
© 2026 Workers First. All rights reserved.
Privacy PolicyTerms of ServiceAccessibility
GET/v1/timesheets

List timesheets

Returns a paginated list of timesheets in your organization, newest first. A timesheet records the worked, billable, and payable time for one shift assignment along with its approval state.

Scope: timesheets:readModule: shift_placement

Query parameters

limitinteger

Page size, 1-100 (default 25).

cursorstring

Opaque cursor from a previous response’s next_cursor.

statusenum

draftpending_approvalapproveddisputedvoided

shift_idstring (uuid)
member_idstring (uuid)

Filter by the member the timesheet belongs to.

customer_idstring (uuid)
date_fromstring (date)

Only timesheets created on or after this date (YYYY-MM-DD).

date_tostring (date)

Only timesheets created on or before this date (YYYY-MM-DD).

Request

Response · 200

GET/v1/timesheets/{id}

Get a timesheet

Returns a single timesheet by id, including scheduled vs worked windows, policy-applied billable/payable minutes, and its approval state. Responds 404 if no such timesheet exists in your organization.

Scope: timesheets:readModule: shift_placement

Path parameters

idrequiredstring (uuid)

Timesheet id.

Request

Response · 200

{
  "id": "c1a97d9e-4b1f-4f7e-9f57-2f9f4b6f1a01",
  "shift_id": "a3f6d0aa-9d3c-49e0-90ef-6d3c1b7a2b10",
  "assignment_id": "b5e8c2bb-1c4d-4a1f-8a2e-7e4d2c8b3c21",
  "member_id": "d7f0e4cc-3e6f-4c30-b4a0-9f6e3d0c4d32",
  "customer_id": "e9a2f6dd-508a-4e52-a6b2-1a8f5e2d6e43",
  "status": "approved",
  "scheduled_start": "2026-07-08T14:00:00Z",
  "scheduled_end": "2026-07-08T22:00:00Z",
  "clock_in_at": "2026-07-08T14:04:12Z",
  "clock_out_at": "2026-07-08T22:01:40Z",
  "effective_start": "2026-07-08T14:04:12Z",
  "effective_end": "2026-07-08T22:01:40Z",
  "scheduled_minutes": 480,
  "worked_minutes": 477,
  "billable_minutes": 480,
  "payable_minutes": 480,
  "late_minutes": 4,
  "is_late": false,
  "missing_clock_out": false,
  "generated_by": "clock_out",
  "auto_approve_at": "2026-07-11T22:02:00Z",
  "approved_at": "2026-07-09T09:15:00Z",
  "approval_method": "customer",
  "customer_note": null,
  "dispute_reason": null,
  "created_at": "2026-07-08T22:02:00Z",
  "updated_at": "2026-07-09T09:15:00Z"
}
{
  "data": [
    {
      "id": "c1a97d9e-4b1f-4f7e-9f57-2f9f4b6f1a01",
      "shift_id": "a3f6d0aa-9d3c-49e0-90ef-6d3c1b7a2b10",
      "assignment_id": "b5e8c2bb-1c4d-4a1f-8a2e-7e4d2c8b3c21",
      "member_id": "d7f0e4cc-3e6f-4c30-b4a0-9f6e3d0c4d32",
      "customer_id": "e9a2f6dd-508a-4e52-a6b2-1a8f5e2d6e43",
      "status": "approved",
      "scheduled_start": "2026-07-08T14:00:00Z",
      "scheduled_end": "2026-07-08T22:00:00Z",
      "clock_in_at": "2026-07-08T14:04:12Z",
      "clock_out_at": "2026-07-08T22:01:40Z",
      "effective_start": "2026-07-08T14:04:12Z",
      "effective_end": "2026-07-08T22:01:40Z",
      "scheduled_minutes": 480,
      "worked_minutes": 477,
      "billable_minutes": 480,
      "payable_minutes": 480,
      "late_minutes": 4,
      "is_late": false,
      "missing_clock_out": false,
      "generated_by": "clock_out",
      "auto_approve_at": "2026-07-11T22:02:00Z",
      "approved_at": "2026-07-09T09:15:00Z",
      "approval_method": "customer",
      "customer_note": null,
      "dispute_reason": null,
      "created_at": "2026-07-08T22:02:00Z",
      "updated_at": "2026-07-09T09:15:00Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
curl -X GET "https://keepworkersfirst.org/api/v1/timesheets/c1a97d9e-4b1f-4f7e-9f57-2f9f4b6f1a01" \
  -H "Authorization: Bearer $API_KEY"
curl -X GET "https://keepworkersfirst.org/api/v1/timesheets" \
  -H "Authorization: Bearer $API_KEY"