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

Shifts

Read shifts and their assignments.

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/shifts

List shifts

Returns a paginated list of shifts in your organization, newest first. Filter by status, customer, site, or date range.

Scope: shifts:readModule: shift_placement

Query parameters

limitinteger

Page size, 1-100 (default 25).

cursorstring

Opaque cursor from a previous response’s next_cursor.

statusenum

draftopenfilledin_progresscompletedcancelled

customer_idstring (uuid)
site_idstring (uuid)

Filter by site (customer location).

date_fromstring (date)

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

date_tostring (date)

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

Request

Response · 200

GET/v1/shifts/{id}

Get a shift

Returns a single shift by id with its assignments embedded. Responds 404 if no such shift exists in your organization.

Scope: shifts:readModule: shift_placement

Path parameters

idrequiredstring (uuid)

Shift id.

Request

curl -X GET "https://keepworkersfirst.org/api/v1/shifts/d4e5f6a7-4444-4d5e-9f6a-b7c8d9e0f1a2" \
  -H "Authorization: Bearer $API_KEY"

Response · 200

{
  "id": "d4e5f6a7-4444-4d5e-9f6a-b7c8d9e0f1a2",
  "status": "open",
  "shift_date": "2026-07-14",
  "start_time": "09:00:00",
  "end_time": "17:00:00",
  "description": "Day coverage — North Campus front desk",
  "customer_id": "b2c3d4e5-2222-4b3c-9d4e-f5a6b7c8d9e0",
  "site_id": "c3d4e5f6-3333-4c4d-8e5f-a6b7c8d9e0f1",
  "positions_needed": 2,
  "positions_filled": 1,
  "pay_rate": 24,
  "pay_type": "hourly",
  "offer_type": "open_call",
  "confirmation_required": true,
  "created_at": "2026-07-01T12:00:00+00:00",
  "updated_at": "2026-07-03T08:15:00+00:00",
  "assignments": [
    {
      "id": "e5f6a7b8-5555-4e6f-8a7b-c8d9e0f1a2b3",
      "shift_id": "d4e5f6a7-4444-4d5e-9f6a-b7c8d9e0f1a2",
      "member_id": "a1b2c3d4-1111-4a2b-8c3d-e4f5a6b7c8d9",
      "status": "accepted",
      "clock_in": null,
      "clock_out": null,
      "responded_at": "2026-07-02T15:30:00+00:00",
      "confirmed_at": "2026-07-02T15:30:00+00:00",
      "is_open_call": true,
      "created_at": "2026-07-01T12:05:00+00:00",
      "updated_at": "2026-07-02T15:30:00+00:00"
    }
  ]
}
GET/v1/shifts/{id}/assignments

List a shift’s assignments

Returns the assignments for a shift. Responds 404 if no such shift exists in your organization.

Scope: shifts:readModule: shift_placement

Path parameters

idrequiredstring (uuid)

Shift id.

Request

curl -X GET "https://keepworkersfirst.org/api/v1/shifts/d4e5f6a7-4444-4d5e-9f6a-b7c8d9e0f1a2/assignments" \
  -H "Authorization: Bearer $API_KEY"

Response · 200

{
  "data": [
    {
      "id": "e5f6a7b8-5555-4e6f-8a7b-c8d9e0f1a2b3",
      "shift_id": "d4e5f6a7-4444-4d5e-9f6a-b7c8d9e0f1a2",
      "member_id": "a1b2c3d4-1111-4a2b-8c3d-e4f5a6b7c8d9",
      "status": "accepted",
      "clock_in": null,
      "clock_out": null,
      "responded_at": "2026-07-02T15:30:00+00:00",
      "confirmed_at": "2026-07-02T15:30:00+00:00",
      "is_open_call": true,
      "created_at": "2026-07-01T12:05:00+00:00",
      "updated_at": "2026-07-02T15:30:00+00:00"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
{
  "data": [
    {
      "id": "d4e5f6a7-4444-4d5e-9f6a-b7c8d9e0f1a2",
      "status": "open",
      "shift_date": "2026-07-14",
      "start_time": "09:00:00",
      "end_time": "17:00:00",
      "description": "Day coverage — North Campus front desk",
      "customer_id": "b2c3d4e5-2222-4b3c-9d4e-f5a6b7c8d9e0",
      "site_id": "c3d4e5f6-3333-4c4d-8e5f-a6b7c8d9e0f1",
      "positions_needed": 2,
      "positions_filled": 1,
      "pay_rate": 24,
      "pay_type": "hourly",
      "offer_type": "open_call",
      "confirmation_required": true,
      "created_at": "2026-07-01T12:00:00+00:00",
      "updated_at": "2026-07-03T08:15:00+00:00"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
curl -X GET "https://keepworkersfirst.org/api/v1/shifts" \
  -H "Authorization: Bearer $API_KEY"