API Reference
Members
Create, read, update, verify, and deactivate members (service providers).
API Reference
Create, read, update, verify, and deactivate members (service providers).
/v1/membersReturns a paginated list of members (service providers) in your organization, newest first. Filter by status, verification, or active state.
members:readModule: membersQuery parameters
limit | integer Page size, 1-100 (default 25). |
cursor | string Opaque cursor from a previous response’s next_cursor. |
status | enum Filter by lifecycle status.
|
is_verified | enum Filter by verification state.
|
is_active | enum Filter by active state.
|
Request
Response · 200
/v1/members/{id}Returns a single member by id. Responds 404 if no such member exists in your organization.
members:readModule: membersPath parameters
idrequired | string (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"
}/v1/membersCreates a new member in draft status. Use PATCH and the verify endpoint to complete onboarding. Emits member.created with source "api".
members:writeModule: membersEmits: member.createdBody parameters
business_namerequired | string Business or working name (required). |
display_name | string Personal display name. |
description | string |
capacity | integer |
contact | object |
contact.email | string |
contact.phone | string |
Request
Response · 201
/v1/members/{id}Updates a member’s profile fields. Only supplied fields change. Emits member.updated.
members:writeModule: membersEmits: member.updatedPath parameters
idrequired | string (uuid) Member id. |
Body parameters
business_name | string |
display_name | string | null |
description | string | null |
capacity | integer |
contact | object |
contact.email | string | null |
contact.phone | string | null |
Request
Response · 200
/v1/members/{id}/verifyMarks a member as verified (is_verified = true) after your external checks pass. Emits member.verified.
members:writeModule: membersEmits: member.verifiedPath parameters
idrequired | string (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"
}/v1/members/{id}/deactivateDeactivates a member (is_active = false, status = inactive). Emits member.deactivated.
members:writeModule: membersEmits: member.deactivatedPath parameters
idrequired | string (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."}'