Skip to main content

Needs

A need is an open staffing request: a facility needs n people with a title (and optionally a specialty) on a date and time window. Filling a need creates one order per provider. Scopes: Read needs, orders and shift events for GET, Manage needs, orders and shift events for everything else.

MethodPathPurpose
GET/needsList needs
POST/needsCreate a need
GET/needs/{id}Get a need
PUT/needs/{id}Update a need
DELETE/needs/{id}Cancel a need
POST/needs/{id}/assignAssign a provider, creating the linked order

The need object​

{
"id": "9a21…",
"organizationId": "680e…",
"facilityId": "0b7c…",
"title": "RN",
"specialty": "ICU",
"shiftDate": "2026-11-03",
"startTime": "07:00:00",
"endTime": "19:00:00",
"certifications": ["BLS", "ACLS"],
"notes": "Night differential applies",
"quantity": 2,
"filledCount": 1,
"status": "partially_filled",
"createdBy": "6f3b…",
"createdAt": "2026-10-20T15:02:11.000Z",
"updatedAt": "2026-10-21T09:15:40.000Z",
"facility": { "id": "0b7c…", "name": "Cedar Ridge Medical Center", "type": "Hospital" }
}

status is maintained by Atla from the linked orders: open (none filled), partially_filled, filled (filledCount >= quantity), or canceled. Cancelling a linked order lowers filledCount again.

List needs​

curl -H "Authorization: Bearer $KEY" \
"https://app.atlahq.com/api/v1/needs?status=open&from=2026-11-01&to=2026-11-30&page=1&pageSize=100"
QueryMeaning
statusopen, partially_filled, filled, canceled
facilityIdOne facility
title, specialtyExact match, for example RN, ICU
from, toshiftDate range, inclusive
searchTitle, specialty, notes, facility name
sortshift_date, title, status, created_at
sortDirectionasc or desc
page, pageSizePagination (see Conventions)

Create a need​

curl -X POST https://app.atlahq.com/api/v1/needs \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{
"facilityId": "0b7c…",
"title": "RN",
"specialty": "ICU",
"shiftDate": "2026-11-03",
"startTime": "07:00",
"endTime": "19:00",
"quantity": 2,
"certifications": ["BLS", "ACLS"],
"notes": "Night differential applies"
}'
{ "success": true, "id": "9a21…" }

Required: facilityId, title, shiftDate, startTime, endTime. quantity defaults to 1. Titles and specialties are matched by name against the organization's lists in Atla.

Update and cancel​

curl -X PUT https://app.atlahq.com/api/v1/needs/9a21… \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{ "quantity": 3, "notes": "Third slot added" }'

curl -X DELETE https://app.atlahq.com/api/v1/needs/9a21… -H "Authorization: Bearer $KEY"

Delete is a soft cancel (status: canceled). Orders already created from the need are not cancelled automatically; cancel them through Orders if required.

Assign a provider​

curl -X POST https://app.atlahq.com/api/v1/needs/9a21…/assign \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{ "providerId": "4c1d…" }'
{ "success": true, "orderId": "b3e7…" }

Creates an order that inherits the need's facility, date, times, title, specialty and certifications, books the provider on it and notifies them, exactly as the Atla web app does. Refused with 422 when the provider is disabled, missing a required document for the facility, not cleared there, or marked unavailable that day. filledCount and status on the need update automatically.