Providers
Clinicians and other staff the organization schedules. Scopes: Read providers for GET,
Manage providers for everything else.
| Method | Path | Purpose |
|---|---|---|
GET | /providers | List providers |
POST | /providers | Create a provider |
PUT | /providers/{id} | Update a provider |
DELETE | /providers/{id} | Deactivate a provider |
GET | /providers/{id}/facilities | Facilities the provider is assigned to |
POST | /providers/{id}/facilities | Assign facilities |
PUT | /providers/{id}/facilities | Set clearance on an assignment |
DELETE | /providers/{id}/facilities | Remove assignments |
GET | /providers/{id}/specialties | The provider's specialties |
POST | /providers/{id}/specialties | Replace the provider's specialties |
The provider object
{
"id": "4c1d…",
"userId": "8e2a…",
"email": "jane.smith@example.com",
"firstName": "Jane",
"lastName": "Smith",
"displayName": "Jane Smith",
"title": "RN",
"specialty": "ICU",
"bio": null,
"department": "Float pool",
"employeeId": "EMP-0142",
"hireDate": "2024-01-15",
"hourlyRate": 85,
"status": "active",
"phone": "+16025550123",
"workPhone": null,
"emergencyContactName": "John Smith",
"emergencyContactPhone": "+16025550199",
"rating": 4.5,
"departmentId": null,
"departmentName": null,
"managerId": null,
"managerName": null,
"isActive": true,
"createdAt": "2024-01-15T18:22:10.000Z"
}
status is one of incomplete, active, inactive, on_leave, terminated, or an applicant status
for people still in the hiring pipeline. isActive: false means the provider is disabled and cannot be
booked. Provider label rules apply: a key sees the providers an unlabelled administrator of the organization
would see.
List providers
curl -H "Authorization: Bearer $KEY" https://app.atlahq.com/api/v1/providers
Returns Provider[]. There is no pagination on this route.
Create a provider
Creates the provider record and their sign-in account for the Atla mobile app.
curl -X POST https://app.atlahq.com/api/v1/providers \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{
"email": "jane.smith@example.com",
"password": "a-temporary-password-they-will-change",
"firstName": "Jane",
"lastName": "Smith",
"title": "RN",
"specialty": "ICU",
"employeeId": "EMP-0142",
"hireDate": "2026-11-01",
"hourlyRate": 85
}'
{ "success": true, "userId": "8e2a…", "providerId": "4c1d…" }
Required: email, password, firstName, lastName. 400 if the email is already in use.
Update a provider
Partial. Only keys present are written; null clears.
curl -X PUT https://app.atlahq.com/api/v1/providers/4c1d… \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{ "title": "Charge RN", "hourlyRate": 92, "phone": "+16025550123" }'
Set { "isActive": false } to disable a provider (blocks sign-in and new bookings, keeps existing
shifts) and { "isActive": true } to re-enable. Changing phone is checked for uniqueness within the
organization.
Deactivate a provider
curl -X DELETE https://app.atlahq.com/api/v1/providers/4c1d… -H "Authorization: Bearer $KEY"
Soft: sets isActive false and status to terminated. The sign-in account is kept.
Facility assignments
A provider can be booked at a facility only once they are assigned to it and cleared.
# Current assignments
curl -H "Authorization: Bearer $KEY" https://app.atlahq.com/api/v1/providers/4c1d…/facilities
[
{ "id": "0b7c…", "name": "Cedar Ridge Medical Center", "type": "Hospital", "city": "Phoenix", "state": "AZ", "cleared": true }
]
# Assign
curl -X POST https://app.atlahq.com/api/v1/providers/4c1d…/facilities \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{ "facilityIds": ["0b7c…", "1a9e…"] }'
# Clear (or un-clear) one assignment
curl -X PUT https://app.atlahq.com/api/v1/providers/4c1d…/facilities \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{ "facilityId": "0b7c…", "cleared": true }'
# Remove
curl -X DELETE https://app.atlahq.com/api/v1/providers/4c1d…/facilities \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{ "facilityIds": ["1a9e…"] }'
Specialties
curl -H "Authorization: Bearer $KEY" https://app.atlahq.com/api/v1/providers/4c1d…/specialties
[ { "id": "7d3f…", "name": "Intensive Care", "abbreviation": "ICU" } ]
POST the same route with { "specialtyIds": [...] } to replace the set. Specialty ids come from the
organization's specialty list in Atla; the specialty text on the provider object is the legacy single
value and is kept in step.