Skip to main content

Providers

Clinicians and other staff the organization schedules. Scopes: Read providers for GET, Manage providers for everything else.

MethodPathPurpose
GET/providersList providers
POST/providersCreate a provider
PUT/providers/{id}Update a provider
DELETE/providers/{id}Deactivate a provider
GET/providers/{id}/facilitiesFacilities the provider is assigned to
POST/providers/{id}/facilitiesAssign facilities
PUT/providers/{id}/facilitiesSet clearance on an assignment
DELETE/providers/{id}/facilitiesRemove assignments
GET/providers/{id}/specialtiesThe provider's specialties
POST/providers/{id}/specialtiesReplace 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.