Workplace API

get

Retrieve a list of team settings or a specific team setting by ID, with optional filter for external ID.

Authorizations
x-api-keystringRequired
Query parameters
location_idstringOptional

Optional ID of the location to retrieve relative settings.

team_idstringOptional

Optional ID of the team to retrieve settings for.

external_idstringOptional

Optional external ID to filter team settings (matches team's external_id).

skipintegerOptional

Number of items to skip for pagination.

Default: 0
limitintegerOptional

Maximum number of items to return.

Default: 25
sortstringOptional

Field to sort by.

orderstring · enumOptional

Sort order, 'asc' or 'desc'.

Default: ascPossible values:
Responses
200

OK

application/json
get
/team/settings
put

Update multiple existing team settings.

Authorizations
x-api-keystringRequired
Body
Responses
200

OK

application/json
put
/team/settings
post

Create one or more occupancy records. Idempotent on (people_id, location_id, seen_at).

Authorizations
x-api-keystringRequired
Body
location_idstringRequired

ID of the associated location.

Responses
200

Created

application/json
post
/occupancy
get

Retrieve occupancy records with optional filters by ID, location, person, and time range.

Authorizations
x-api-keystringRequired
Query parameters
occupancy_idstringOptional

Filter by a specific occupancy document ID.

location_idstringOptional

Filter by Location ID.

people_idstringOptional

Filter by People ID.

starts_atstring · date-timeOptional

Start (inclusive) of UTC range filter. ISO 8601 with Z.

ends_atstring · date-timeOptional

End (inclusive) of UTC range filter. ISO 8601 with Z.

skipintegerOptional

Number of items to skip.

Default: 0
limitintegerOptional

Max items to return.

Default: 25
sortstringOptional

Field to sort by (e.g., created_at, seen_at, people_id).

Default: created_at
orderstring · enumOptional

Sort order.

Default: ascPossible values:
Responses
200

OK

application/json
get
/occupancy
delete

Soft-delete occupancy records that match the filters. Only location_id is required.

Authorizations
x-api-keystringRequired
Body
location_idstringRequired

Location to scope the deletion.

people_idstringOptional

Optional person filter.

starts_atstring · date-timeOptional

Start (inclusive) of UTC range filter. ISO 8601 with Z.

ends_atstring · date-timeOptional

End (inclusive) of UTC range filter. ISO 8601 with Z.

Responses
200

OK

application/json
delete
/occupancy
post

Trigger forecasting for a location over an optional date range.

Authorizations
x-api-keystringRequired
Body
location_idstringRequired

Unique identifier of the location to forecast.

Example: 68824ca5369c856b7c670510
starts_atstring · dateOptional

(Optional) Inclusive start date (YYYY-MM-DD).

Example: 2025-06-20
ends_atstring · dateOptional

(Optional) Inclusive end date (YYYY-MM-DD).

Example: 2025-07-31
force_rebuildbooleanOptional

Force a rebuild even if recent results exist.

Default: false
Responses
200

Forecast job created/queued

application/json
post
/forecast/start
200

Forecast job created/queued

get

Get forecasting job status (supports filtering and pagination).

Authorizations
x-api-keystringRequired
Query parameters
job_idstringOptional

Filter by a specific forecast job ID returned by /forecast/start.

Example: 689a01bde5c540bb57b0730b
location_idstringOptional

Filter by location ID.

Example: 68824ca5369c856b7c670510
date_fromstring · dateOptional

Filter jobs created on/after this date (YYYY-MM-DD).

date_tostring · dateOptional

Filter jobs created on/before this date (YYYY-MM-DD).

skipintegerOptional

Number of items to skip (pagination).

Default: 0
limitintegerOptional

Maximum number of items to return.

Default: 25
sortstring · enumOptional

Sort field.

Default: created_atPossible values:
orderstring · enumOptional

Sort order.

Default: ascPossible values:
Responses
200

Forecast job status list

application/json
get
/forecast/status
200

Forecast job status list

get

Retrieve a list of location forecasts with optional location_id filter and pagination.

Authorizations
x-api-keystringRequired
Query parameters
location_idstring[]Optional

Filter by Location ID (can be multiple).

starts_atstring · date-timeOptional

Start date-time in UTC for filtering forecasts.

ends_atstring · date-timeOptional

End date-time in UTC for filtering forecasts.

timezonestringOptional

Timezone of the location. When provided, starts_at and ends_at are interpreted in this timezone. Must be a valid IANA Time Zone identifier.

Example: Europe/London
skipintegerOptional

Number of items to skip for pagination.

Default: 0
limitintegerOptional

Maximum number of items to return.

Default: 25
sortstringOptional

Field to sort by (e.g., starts_at).

orderstring · enumOptional

Sort order, 'asc' or 'desc'.

Default: ascPossible values:
Responses
200

OK

application/json
get
/forecast/locations
get

Retrieve a list of team forecasts with optional location_id and team_id filters and pagination.

Authorizations
x-api-keystringRequired
Query parameters
location_idstring[]Optional

Filter by Location ID (can be multiple).

team_idstring[]Optional

Filter by Team ID (can be multiple).

starts_atstring · date-timeOptional

Start date-time in UTC for filtering forecasts.

ends_atstring · date-timeOptional

End date-time in UTC for filtering forecasts.

timezonestringOptional

Timezone of the location. When provided, starts_at and ends_at are interpreted in this timezone. Must be a valid IANA Time Zone identifier.

Example: Europe/London
skipintegerOptional

Number of items to skip for pagination.

Default: 0
limitintegerOptional

Maximum number of items to return.

Default: 25
sortstringOptional

Field to sort by (e.g., starts_at).

orderstring · enumOptional

Sort order, 'asc' or 'desc'.

Default: ascPossible values:
Responses
200

OK

application/json
get
/forecast/teams
get

Retrieve a list of people forecasts with optional location_id, people_id, and team_id filters and pagination.

Authorizations
x-api-keystringRequired
Query parameters
location_idstring[]Optional

Filter by Location ID (can be multiple).

people_idstring[]Optional

Filter by People ID (can be multiple).

team_idstring[]Optional

Filter by Team ID (can be multiple).

starts_atstring · date-timeOptional

Start date-time in UTC for filtering forecasts.

ends_atstring · date-timeOptional

End date-time in UTC for filtering forecasts.

timezonestringOptional

Timezone of the location. When provided, starts_at and ends_at are interpreted in this timezone. Must be a valid IANA Time Zone identifier.

Example: Europe/London
skipintegerOptional

Number of items to skip for pagination.

Default: 0
limitintegerOptional

Maximum number of items to return.

Default: 25
sortstringOptional

Field to sort by (e.g., starts_at).

orderstring · enumOptional

Sort order, 'asc' or 'desc'.

Default: ascPossible values:
Responses
200

OK

application/json
get
/forecast/people
post

Trigger location AI evolution

Authorizations
x-api-keystringRequired
Body
location_idstringRequired

Unique identifier of the location.

Example: 68824ca5369c856b7c670510
datestring · dateRequired

Date for the evolution in YYYY-MM-DD format.

Example: 2025-08-08
Responses
200

Successful response

application/json
post
/evolve/start
200

Successful response

get

Get AI evolution status

Authorizations
x-api-keystringRequired
Query parameters
evolution_idstringRequired

Unique identifier of a triggered evolution.

Example: 94289524-04ac-44d3-8f05-45b8a937f663
Responses
200

Successful response

application/json
get
/evolve/status
200

Successful response

get

Retrieve a list of allocations or a specific allocation by ID, with optional filters for location, layer, room, zone, people, team, external ID, or date range.

Authorizations
x-api-keystringRequired
Query parameters
allocation_idstringOptional

Optional ID of the allocation to retrieve.

location_idstringOptional

Filter by Location ID.

layer_idstringOptional

Filter by Layer ID.

room_idstringOptional

Filter by Room ID.

zone_idstringOptional

Filter by Zone ID.

people_idstringOptional

Filter by People ID.

team_idstringOptional

Filter by Team ID.

external_idstringOptional

Optional external ID to filter allocations (matches external_id of PERSON or TEAM).

starts_atstring · date-timeOptional

Start date-time in UTC for filtering allocations.

ends_atstring · date-timeOptional

End date-time in UTC for filtering allocations.

timezonestringOptional

Timezone of the location. When provided, starts_at and ends_at are interpreted in this timezone. Must be a valid IANA Time Zone identifier.

Example: Europe/London
skipintegerOptional

Number of items to skip for pagination.

Default: 0
limitintegerOptional

Maximum number of items to return.

Default: 25
sortstringOptional

Field to sort by (e.g., starts_at, people_id).

orderstring · enumOptional

Sort order, 'asc' or 'desc'.

Default: ascPossible values:
Responses
200

OK

application/json
get
/allocations
post

Create multiple new allocations.

Authorizations
x-api-keystringRequired
Body
Responses
200

Created

application/json
post
/allocations
put

Update multiple existing allocations.

Authorizations
x-api-keystringRequired
Body
Responses
200

OK

application/json
put
/allocations
delete

Delete multiple allocations by their IDs.

Authorizations
x-api-keystringRequired
Body
Responses
200

OK

application/json
delete
/allocations
get

Retrieve intentions with optional filters. starts_at and ends_at are dates (YYYY-MM-DD) interpreted in the given timezone.

Authorizations
x-api-keystringRequired
Query parameters
limitinteger · min: 1Optional

the number of records you would like to return in a single request (default 25)

Default: 25Example: 25
skipintegerOptional

the number of records you skip within this request (default 0)

Default: 0Example: 0
sortstringOptional

Field to sort by.

Default: name
orderstring · enumOptional

Sort order.

Default: ascPossible values:
location_idstringOptional
layer_idstringOptional
room_idstringOptional
zone_idstringOptional
people_idstringOptional
team_idstringOptional
external_location_idstringOptional
external_typestring · enumOptional

External intention type.

Possible values:
starts_atstring · dateOptional

Inclusive date (YYYY-MM-DD); interpreted in the provided timezone.

ends_atstring · dateOptional

Inclusive date (YYYY-MM-DD); interpreted in the provided timezone.

location_timezonestringOptional

IANA timezone for interpreting date filters with internal IDs.

Example: Europe/London
external_location_timezonestringOptional

IANA timezone for interpreting date filters with external IDs.

Example: Europe/London
typestring · enumOptional

Internal intention type.

Possible values:
Header parameters
x-configuration-idstringRequired

Configuration context identifier.

Responses
200

OK

application/json
get
/intentions
post

Create a single intention (normal allocation flow).

Authorizations
x-api-keystringRequired
Query parameters
forcebooleanOptional

If true, bypasses certain safety checks and forces creation according to server rules.

Body
statusstring · enumRequiredPossible values:
typestring · enumRequiredPossible values:
location_idstringRequired
people_idstring | nullableOptional
people_first_namestring | nullableOptional
people_last_namestring | nullableOptional
people_emailstring · email | nullableOptional
team_idstring | nullableOptional
team_namestring | nullableOptional
skip_auto_acceptbooleanOptionalDefault: false
Responses
200

Created

application/json
post
/intentions
post

Create one or more intentions using external identifiers/metadata. One of people_id or people_email is required per item.

Authorizations
x-api-keystringRequired
Body
Responses
200

Created

application/json
post
/intentions/external
put

Accept a pending intention. If force is 'false', acceptance will fail when there is a conflicting intention. Set force to 'true' to override conflict checks (where permitted).

Authorizations
x-api-keystringRequired
Path parameters
intention_idstringRequired
Query parameters
forcestring · enumOptional

String flag controlling conflict override.

Default: falseExample: falsePossible values:
Responses
200

OK

application/json
put
/intentions/{intention_id}/accept
put

Decline an invitation for an intention you were invited to. Optionally include a reason.

Authorizations
x-api-keystringRequired
Path parameters
intention_idstringRequired
Body
reasonstringOptional

Optional reason for declining (audit/notifications).

Responses
200

OK

application/json
put
/intentions/{intention_id}/decline
put

Cancel an intention. If cancel_for_all is true, the cancellation applies to all invited attendees as well.

Authorizations
x-api-keystringRequired
Path parameters
intention_idstringRequired
Body

Partial intention update allowed by validator.

reasonstringOptional

Optional cancel reason for audit.

cancel_for_allbooleanOptional

When true, cancel this intention for all invited people as well.

Default: false
Other propertiesanyOptional
Responses
200

OK

application/json
put
/intentions/{intention_id}/cancel
delete

Permanently delete a single intention by its ID. This is irreversible and, unlike cancel, the intention cannot be rejoined by any participant once deleted.

Authorizations
x-api-keystringRequired
Path parameters
intention_idstringRequired
Responses
200

OK

application/json
delete
/intentions/{intention_id}

Last updated

Was this helpful?