List Staff
Retrieve a paginated list of staff members.
Endpointโ
GET /v1/staff
Authenticationโ
Requires an API key with the staff:read scope.
Query Parametersโ
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
per_page | integer | 15 | Items per page (max 100) |
status | string | - | Filter by status: active, inactive |
search | string | - | Search by name or email |
Responseโ
Success (200 OK)โ
{
"data": [
{
"id": 1,
"first_name": "Jane",
"last_name": "Smith",
"full_name": "Jane Smith",
"email": "jane@company.com",
"phone": "0412345678",
"phone_country_code": "+61",
"status": "active",
"employment_type": "full_time",
"gender": "female",
"dob": "1988-03-20T00:00:00+00:00",
"job_title": "Tour Guide",
"position": "Senior Guide",
"hire_date": "2023-01-15T00:00:00+00:00",
"termination_date": null,
"address": {
"line_1": "789 Staff Road",
"line_2": null,
"city": "Sydney",
"state": "NSW",
"postcode": "2000",
"country": "AU"
},
"emergency_contact": {
"name": "John Smith",
"phone": "0498765432",
"country_code": "+61"
},
"add_in_roster": true,
"profile_photo_url": "https://example.com/photos/jane.jpg",
"roles": [
{ "id": 1, "name": "Guide" },
{ "id": 2, "name": "Instructor" }
],
"main_location": {
"id": 1,
"name": "Main Office"
},
"locations": [
{ "id": 1, "name": "Main Office", "is_main": true },
{ "id": 2, "name": "Beach Location", "is_main": false }
],
"has_portal_access": true,
"custom_fields": [
{
"field_id": 5,
"label": "Certification Level",
"field_type": "text",
"value": "Advanced",
"formatted_value": "Advanced"
}
],
"created_at": "2023-01-15T00:00:00+00:00",
"updated_at": "2026-01-15T10:30:00+00:00"
}
],
"meta": {
"current_page": 1,
"per_page": 15,
"total": 12,
"total_pages": 1,
"request_id": "req_abc123",
"timestamp": "2026-01-15T12:00:00+00:00"
}
}
Response Fieldsโ
Staff Memberโ
| Field | Type | Description |
|---|---|---|
id | integer | Unique staff identifier |
first_name | string | First name |
last_name | string | Last name |
full_name | string | Combined first and last name |
email | string | Email address |
phone | string | Phone number |
phone_country_code | string | Phone country code |
status | string | active or inactive |
employment_type | string | full_time, part_time, contractor |
gender | string|null | male, female, or other |
dob | string|null | Date of birth (ISO 8601) |
job_title | string|null | Job title |
position | string|null | Position/role |
hire_date | string|null | Hire date (ISO 8601) |
termination_date | string|null | Termination date if applicable |
address | object | Address details |
emergency_contact | object | Emergency contact information |
add_in_roster | boolean | Include in staff roster |
profile_photo_url | string|null | Profile photo URL |
roles | array | Assigned staff roles |
main_location | object|null | Primary work location |
locations | array | All assigned locations |
has_portal_access | boolean | Has access to staff portal |
custom_fields | array | Custom field values for this staff member |
created_at | string | ISO 8601 datetime |
updated_at | string | ISO 8601 datetime |
Custom Fieldsโ
| Field | Type | Description |
|---|---|---|
field_id | integer | Custom field definition ID |
label | string | Field display label |
field_type | string | Field type: text, textarea, number, date, datetime |
value | string|null | Raw value |
formatted_value | string|null | Formatted value for display |
Errorsโ
| Status | Code | Description |
|---|---|---|
| 401 | authentication_required | No API key provided |
| 401 | invalid_api_key | Invalid API key |
| 403 | insufficient_scope | API key lacks staff:read scope |
Example Requestโ
curl -X GET "https://app.equipdash.com/api/v1/staff?status=active" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."