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

Sites

Manage the physical locations (sites) belonging to your customers.

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

List sites

Returns a paginated list of sites (customer locations) in your organization, newest first. Filter by customer or active state.

Scope: customers:readModule: customers

Query parameters

limitinteger

Page size, 1-100 (default 25).

cursorstring

Opaque cursor from a previous response’s next_cursor.

customer_idstring (uuid)

Filter to a single customer’s sites.

is_activeenum

truefalse

Request

Response · 200

GET/v1/sites/{id}

Get a site

Returns a single site by id. Responds 404 if no such site exists in your organization.

Scope: customers:readModule: customers

Path parameters

idrequiredstring (uuid)

Site id.

Request

curl -X GET "https://keepworkersfirst.org/api/v1/sites/c3d4e5f6-3333-4c4d-8e5f-a6b7c8d9e0f1" \
  -H "Authorization: Bearer $API_KEY"

Response · 200

{
  "id": "c3d4e5f6-3333-4c4d-8e5f-a6b7c8d9e0f1",
  "customer_id": "b2c3d4e5-2222-4b3c-9d4e-f5a6b7c8d9e0",
  "name": "Example Group — North Campus",
  "address": {
    "line1": null,
    "line2": null,
    "city": "Seattle",
    "state": "WA",
    "postal_code": null,
    "country": "US"
  },
  "is_active": true,
  "contact_name": null,
  "contact_phone": null,
  "orientation_required": true,
  "staff_requirements": "Two members on-site minimum during operating hours.",
  "notes": null,
  "created_at": "2026-01-10T09:00:00+00:00",
  "updated_at": "2026-05-20T16:45:00+00:00"
}
POST/v1/sites

Create a site

Creates a site under a customer you own. Emits customer_location.created.

Scope: customers:writeModule: customersEmits: customer_location.created

Body parameters

customer_idrequiredstring (uuid)

Owning customer id (required).

namerequiredstring

Site name (required).

contact_namestring
contact_phonestring
orientation_requiredboolean
staff_requirementsstring
notesstring

Request

Response · 201

PATCH/v1/sites/{id}

Update a site

Updates a site’s fields. Only supplied fields change. Emits customer_location.updated.

Scope: customers:writeModule: customersEmits: customer_location.updated

Path parameters

idrequiredstring (uuid)

Site id.

Body parameters

namestring
is_activeboolean
contact_namestring | null
contact_phonestring | null
orientation_requiredboolean
staff_requirementsstring | null
notesstring | null

Request

Response · 200

{
  "id": "c3d4e5f6-3333-4c4d-8e5f-a6b7c8d9e0f1",
  "customer_id": "b2c3d4e5-2222-4b3c-9d4e-f5a6b7c8d9e0",
  "name": "Example Group — North Campus",
  "address": {
    "line1": null,
    "line2": null,
    "city": "Seattle",
    "state": "WA",
    "postal_code": null,
    "country": "US"
  },
  "is_active": true,
  "contact_name": null,
  "contact_phone": null,
  "orientation_required": true,
  "staff_requirements": "Two members on-site minimum during operating hours.",
  "notes": null,
  "created_at": "2026-01-10T09:00:00+00:00",
  "updated_at": "2026-05-20T16:45:00+00:00"
}
{
  "id": "c3d4e5f6-3333-4c4d-8e5f-a6b7c8d9e0f1",
  "customer_id": "b2c3d4e5-2222-4b3c-9d4e-f5a6b7c8d9e0",
  "name": "Example Group — North Campus",
  "address": {
    "line1": null,
    "line2": null,
    "city": "Seattle",
    "state": "WA",
    "postal_code": null,
    "country": "US"
  },
  "is_active": true,
  "contact_name": null,
  "contact_phone": null,
  "orientation_required": true,
  "staff_requirements": "Two members on-site minimum during operating hours.",
  "notes": null,
  "created_at": "2026-01-10T09:00:00+00:00",
  "updated_at": "2026-05-20T16:45:00+00:00"
}
{
  "data": [
    {
      "id": "c3d4e5f6-3333-4c4d-8e5f-a6b7c8d9e0f1",
      "customer_id": "b2c3d4e5-2222-4b3c-9d4e-f5a6b7c8d9e0",
      "name": "Example Group — North Campus",
      "address": {
        "line1": null,
        "line2": null,
        "city": "Seattle",
        "state": "WA",
        "postal_code": null,
        "country": "US"
      },
      "is_active": true,
      "contact_name": null,
      "contact_phone": null,
      "orientation_required": true,
      "staff_requirements": "Two members on-site minimum during operating hours.",
      "notes": null,
      "created_at": "2026-01-10T09:00:00+00:00",
      "updated_at": "2026-05-20T16:45:00+00:00"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
curl -X GET "https://keepworkersfirst.org/api/v1/sites" \
  -H "Authorization: Bearer $API_KEY"
curl -X POST "https://keepworkersfirst.org/api/v1/sites" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"customer_id":"b2c3d4e5-2222-4b3c-9d4e-f5a6b7c8d9e0","name":"Example Group — North Campus"}'
curl -X PATCH "https://keepworkersfirst.org/api/v1/sites/c3d4e5f6-3333-4c4d-8e5f-a6b7c8d9e0f1" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"is_active":false}'