Staff
Check staff availability
Returns, for each staff member (the whole team, or the ones selected by staffIds, tags, collectionId or search), whether they have commitments overlapping the queried window and which ones, typed: order lines, internal services, declared absences and blocking incidents.
Request examples
curl https://app.filmo.io/api/v1/staff/availability \
--request POST \
--header "Authorization: Bearer $FILMO_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"startDate": "2026-09-01T08:00:00Z",
"endDate": "2026-09-03T20:00:00Z",
"staffIds": [
"stf_ana",
"stf_luis"
]
}'Generated from the schema
Unlike /api, the response is NOT stock arithmetic: a person has no pool, they are either free or on a specific job. A requested identifier that does not exist comes back as a per-item error. Idempotent query (POST because of the structured body). Shares the availability quota of 30 req/min.
Authorizations
Bearer API key with the scope below. staff:read
Body
Body schema: StaffAvailabilityBody
Start of the window to check (ISO 8601 with offset).
End of the window to check (ISO 8601 with offset); must be later than startDate.
Only resources in this collection.
Limits: min length 1, max length 100
Free-text search on the name.
Limits: min length 1, max length 200
Restrict the answer to these staff members (1-100). An identifier that does not exist comes back as a per-item error.
Limits: min 1 items, max 100 items, each min length 1, each max length 100
Response
Successful response.
Response schema: ResourceAvailabilityEntryDto
Envelope: ResourceAvailabilityEntryItems. meta. is present only when the operation is deprecated.
Headers: X-Request-Id · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset
One of 1/2: ResourceAvailability
Identifier of the queried resource.
Name of the resource.
true if there are no commitments, absences or blocking incidents in the window.
Everything that occupies the resource within the window, typed. Empty when the resource is free.
Show child attributesHide child attributes
order (a line of an order), internal_service (an internal service, not tied to an order), unavailability (a declared absence) or incident (a blocking incident).
Available options: order, internal_service, unavailability, incident
Order that occupies the resource; null unless kind is order.
Number of that order; null unless kind is order.
What occupies the resource: the service name for orders; a generic label for internal services, absences and incidents (their title or private reason is never exposed).
Start of the commitment in ISO 8601 UTC.
End of the commitment in ISO 8601 UTC.
One of 2/2: ResourceAvailabilityErrorEntry
Identifier the request asked for.
Show child attributesHide child attributes
The resource does not exist in the account.
Available options: not_found
Human-readable explanation.
Additional information about the response.
Show child attributesHide child attributes
Lifecycle warnings; present only when the operation is deprecated.
Show child attributesHide child attributes
Stable warning code.
Available options: deprecated
For people: what is deprecated, until when, and what to use.
Day (YYYY-MM-DD) the operation stops being served.
operationId of the operation to use instead, or null if there is none.
Where the deprecation is documented (the changelog).
Invalid request (validation_error): malformed query or body. errors[] lists every offending field with its stable code.
Headers: X-Request-Id · Content-Language · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset
Authentication failed (unauthorized, api_key_invalid, api_key_revoked, api_key_expired, api_key_owner_inactive, api_key_owner_not_admin).
Headers: X-Request-Id · Content-Language
Not allowed (insufficient_scope: the API key does not have the required scope, named in requiredScope; forbidden: the owner of the key lacks the permission the operation requires). insufficient_scope is answered before the request counts against the rate limit, so it carries no RateLimit-* headers; forbidden does.
Headers: X-Request-Id · Content-Language
Resource not found (not_found): it does not exist or is outside the scope of the API key.
Headers: X-Request-Id · Content-Language · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset
Conflict (conflict): the current state of the resource prevents the operation, a request with that Idempotency-Key is already in progress, or another conditional write (If-Match) held the resource for more than five seconds. errors[0]. says which: in_progress and lock_timeout are solved by retrying; invalid_state is not, because the state of the resource forbids the operation.
Headers: X-Request-Id · Content-Language · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset
Rate limit exceeded (rate_limited): retry after Retry-After seconds; RateLimit-* says which quota ran out.
Headers: X-Request-Id · Content-Language · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset · Retry-After
Internal error (internal_error).
Headers: X-Request-Id · Content-Language · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset
Errors
| Status | Codes | Meaning |
|---|---|---|
| 400 | validation_error | Malformed query or body. errors[] lists every offending field with its stable code. |
| 404 | not_found | It does not exist or is outside the scope of the API key. |
| 409 | conflict | The current state of the resource prevents the operation, a request with that Idempotency-Key is already in progress, or another conditional write (If-Match) held the resource for more than five seconds. errors[0]. says which: in_progress and lock_timeout are solved by retrying; invalid_state is not, because the state of the resource forbids the operation. |
401, 403, 429, 500 can be returned by any operation. Errors
Deprecation
This operation is not deprecated. Deprecations are announced with a Deprecation header and a sunset date. Versioning policy
Related
Was this page helpful?