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

Members

Create, read, update, verify, and deactivate members (service providers).

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

List members

Returns a paginated list of members (service providers) in your organization, newest first. Filter by status, verification, or active state.

Scope: members:readModule: members

Query parameters

limitinteger

Page size, 1-100 (default 25).

cursorstring

Opaque cursor from a previous response’s next_cursor.

statusenum

Filter by lifecycle status.

invitedactiveinactivedraft

is_verifiedenum

Filter by verification state.

truefalse

is_activeenum

Filter by active state.

truefalse

Request

Response · 200

GET/v1/members/{id}

Get a member

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

Scope: members:readModule: members

Path parameters

idrequiredstring (uuid)

Member id.

Request

curl -X GET "https://keepworkersfirst.org/api/v1/members/a1b2c3d4-1111-4a2b-8c3d-e4f5a6b7c8d9" \
  -H "Authorization: Bearer $API_KEY"

Response · 200

{
  "id": "a1b2c3d4-1111-4a2b-8c3d-e4f5a6b7c8d9",
  "business_name": "Example Care Services",
  "display_name": null,
  "description": "Experienced overnight-availability team member.",
  "status": "active",
  "is_active": true,
  "is_verified": true,
  "capacity": 6,
  "age_groups": [
    "infant",
    "toddler"
  ],
  "employment_relationship": "contractor",
  "contract_type": "casual",
  "contract_start_date": "2026-02-01",
  "contract_end_date": null,
  "contact": {
    "email": "member@example.com",
    "phone": null
  },
  "address": {
    "line1": null,
    "line2": null,
    "city": "Portland",
    "state": "OR",
    "postal_code": null,
    "country": "US"
  },
  "created_at": "2026-02-01T17:20:00+00:00",
  "updated_at": "2026-06-28T09:12:00+00:00"
}
POST/v1/members

Create a member

Creates a new member in draft status. Use PATCH and the verify endpoint to complete onboarding. Emits member.created with source "api".

Scope: members:writeModule: membersEmits: member.created

Body parameters

business_namerequiredstring

Business or working name (required).

display_namestring

Personal display name.

descriptionstring
capacityinteger
contactobject
contact.emailstring
contact.phonestring

Request

Response · 201

PATCH/v1/members/{id}

Update a member

Updates a member’s profile fields. Only supplied fields change. Emits member.updated.

Scope: members:writeModule: membersEmits: member.updated

Path parameters

idrequiredstring (uuid)

Member id.

Body parameters

business_namestring
display_namestring | null
descriptionstring | null
capacityinteger
contactobject
contact.emailstring | null
contact.phonestring | null

Request

Response · 200

POST/v1/members/{id}/verify

Verify a member

Marks a member as verified (is_verified = true) after your external checks pass. Emits member.verified.

Scope: members:writeModule: membersEmits: member.verified

Path parameters

idrequiredstring (uuid)

Member id.

Request

curl -X POST "https://keepworkersfirst.org/api/v1/members/a1b2c3d4-1111-4a2b-8c3d-e4f5a6b7c8d9/verify" \
  -H "Authorization: Bearer $API_KEY"

Response · 200

{
  "id": "a1b2c3d4-1111-4a2b-8c3d-e4f5a6b7c8d9",
  "business_name": "Example Care Services",
  "display_name": null,
  "description": "Experienced overnight-availability team member.",
  "status": "active",
  "is_active": true,
  "is_verified": true,
  "capacity": 6,
  "age_groups": [
    "infant",
    "toddler"
  ],
  "employment_relationship": "contractor",
  "contract_type": "casual",
  "contract_start_date": "2026-02-01",
  "contract_end_date": null,
  "contact": {
    "email": "member@example.com",
    "phone": null
  },
  "address": {
    "line1": null,
    "line2": null,
    "city": "Portland",
    "state": "OR",
    "postal_code": null,
    "country": "US"
  },
  "created_at": "2026-02-01T17:20:00+00:00",
  "updated_at": "2026-06-28T09:12:00+00:00"
}
POST/v1/members/{id}/deactivate

Deactivate a member

Deactivates a member (is_active = false, status = inactive). Emits member.deactivated.

Scope: members:writeModule: membersEmits: member.deactivated

Path parameters

idrequiredstring (uuid)

Member id.

Request

curl -X POST "https://keepworkersfirst.org/api/v1/members/a1b2c3d4-1111-4a2b-8c3d-e4f5a6b7c8d9/deactivate" \
  -H "Authorization: Bearer $API_KEY"

Response · 200

{
  "id": "a1b2c3d4-1111-4a2b-8c3d-e4f5a6b7c8d9",
  "business_name": "Example Care Services",
  "display_name": null,
  "description": "Experienced overnight-availability team member.",
  "status": "inactive",
  "is_active": false,
  "is_verified": true,
  "capacity": 6,
  "age_groups": [
    "infant",
    "toddler"
  ],
  "employment_relationship": "contractor",
  "contract_type": "casual",
  "contract_start_date": "2026-02-01",
  "contract_end_date": null,
  "contact": {
    "email": "member@example.com",
    "phone": null
  },
  "address": {
    "line1": null,
    "line2": null,
    "city": "Portland",
    "state": "OR",
    "postal_code": null,
    "country": "US"
  },
  "created_at": "2026-02-01T17:20:00+00:00",
  "updated_at": "2026-06-28T09:12:00+00:00"
}
{
  "id": "a1b2c3d4-1111-4a2b-8c3d-e4f5a6b7c8d9",
  "business_name": "Example Care Services",
  "display_name": null,
  "description": "Experienced overnight-availability team member.",
  "status": "active",
  "is_active": true,
  "is_verified": true,
  "capacity": 6,
  "age_groups": [
    "infant",
    "toddler"
  ],
  "employment_relationship": "contractor",
  "contract_type": "casual",
  "contract_start_date": "2026-02-01",
  "contract_end_date": null,
  "contact": {
    "email": "member@example.com",
    "phone": null
  },
  "address": {
    "line1": null,
    "line2": null,
    "city": "Portland",
    "state": "OR",
    "postal_code": null,
    "country": "US"
  },
  "created_at": "2026-02-01T17:20:00+00:00",
  "updated_at": "2026-06-28T09:12:00+00:00"
}
{
  "data": [
    {
      "id": "a1b2c3d4-1111-4a2b-8c3d-e4f5a6b7c8d9",
      "business_name": "Example Care Services",
      "display_name": null,
      "description": "Experienced overnight-availability team member.",
      "status": "active",
      "is_active": true,
      "is_verified": true,
      "capacity": 6,
      "age_groups": [
        "infant",
        "toddler"
      ],
      "employment_relationship": "contractor",
      "contract_type": "casual",
      "contract_start_date": "2026-02-01",
      "contract_end_date": null,
      "contact": {
        "email": "member@example.com",
        "phone": null
      },
      "address": {
        "line1": null,
        "line2": null,
        "city": "Portland",
        "state": "OR",
        "postal_code": null,
        "country": "US"
      },
      "created_at": "2026-02-01T17:20:00+00:00",
      "updated_at": "2026-06-28T09:12:00+00:00"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
{
  "id": "a1b2c3d4-1111-4a2b-8c3d-e4f5a6b7c8d9",
  "business_name": "Example Care Services",
  "display_name": null,
  "description": "Experienced overnight-availability team member.",
  "status": "draft",
  "is_active": true,
  "is_verified": false,
  "capacity": 6,
  "age_groups": [
    "infant",
    "toddler"
  ],
  "employment_relationship": "contractor",
  "contract_type": "casual",
  "contract_start_date": "2026-02-01",
  "contract_end_date": null,
  "contact": {
    "email": "member@example.com",
    "phone": null
  },
  "address": {
    "line1": null,
    "line2": null,
    "city": "Portland",
    "state": "OR",
    "postal_code": null,
    "country": "US"
  },
  "created_at": "2026-02-01T17:20:00+00:00",
  "updated_at": "2026-06-28T09:12:00+00:00"
}
curl -X GET "https://keepworkersfirst.org/api/v1/members?limit=25" \
  -H "Authorization: Bearer $API_KEY"
curl -X POST "https://keepworkersfirst.org/api/v1/members" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"business_name":"Example Care Services","capacity":6}'
curl -X PATCH "https://keepworkersfirst.org/api/v1/members/a1b2c3d4-1111-4a2b-8c3d-e4f5a6b7c8d9" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"description":"Updated bio."}'