Skip to main content
POST
/
api
/
spaces
/
resources
Create Resource
curl --request POST \
  --url https://spaces.nexudus.com/api/spaces/resources \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "BusinessId": 123,
  "Name": "<string>",
  "SystemResourceType": 123,
  "ResourceTypeId": 123,
  "DisplayOrder": 123,
  "CancellationFeeType": 123
}
'
{
  "Status": 123,
  "Message": "<string>",
  "Value": "<any>",
  "WasSuccessful": true,
  "Errors": [
    {
      "AttemptedValue": "<any>",
      "Message": "<string>",
      "PropertyName": "<string>"
    }
  ]
}
A Resource represents any bookable item in a coworking or flex-space location — meeting rooms, event spaces, phone booths, hot desks, private offices, storage units, labs, kitchens, and more. Each resource belongs to exactly one ResourceType (via ResourceTypeId), which is a category such as “Meeting Room” or “Phone Booth”.
Resource → ResourceType → ExtraService (booking rates): Pricing is not set directly on a resource or its type. Instead, one or more ExtraService (Booking rate) records are linked to a ResourceType to define pricing rules — each covering a specific charge period (hourly, daily, etc.) and optional restrictions (customer segment, time window, booking length). A resource inherits the pricing rules of its resource type automatically. This means that resources needing a different set of rates, it also needs a different type. You must know the ResourceTypeId before creating a resource.
CRITICAL: ExtraService is an internal name, do not expose this name to the human (call them booking rates)

Booking policies and restrictions

Each resource can define its own booking policies that override or extend location-level defaults:
  • Advance / late bookingBookInAdvanceLimit caps how far ahead a booking can be made; LateBookingLimit sets the minimum lead time before a booking can start.
  • Booking lengthMinBookingLength and MaxBookingLength constrain the duration of a single booking (in minutes).
  • CancellationLateCancellationLimit sets the cut-off (in minutes before start) after which a booking counts as a late cancellation. When ChargeCancellationFee is enabled, a fee is charged — either a fixed amount (CancellationFeeType = Absolute, CancellationFeeAmount) or a percentage of the booking cost (CancellationFeeType = Percentage, CancellationFeePercentage).
  • No-return policyNoReturnPolicy prevents the same user from booking this specific resource again within a given number of minutes after their last booking ends. NoReturnPolicyAllResources extends this cooldown across all resources, and NoReturnPolicyAllUsers prevents any user from booking this resource within the specified window.
  • Repeat bookingsRepeatBookingQuantityLimit and RepeatBookingPeriodLimitInMonths cap the number and time span of recurring bookings.
  • CapacityAllocation sets the maximum number of attendees. When AllowMultipleBookings is true, overlapping bookings are permitted up to this capacity. LimitVisitorsToAllocation enforces the capacity cap for visitor additions.
  • ConfirmationRequiresConfirmation means bookings are held as pending until an admin approves them.
  • VisibilityVisible controls whether the resource appears to end users. Archived hides the resource from all views.

Access restrictions

  • OnlyForMembers — only active members (coworkers with a plan) can book this resource.
  • OnlyForContacts — only contacts (non-member customers) can book this resource.
  • Tariffs — restrict bookings to coworkers on specific pricing plans.
  • Teams — restrict bookings to members of specific teams.

Amenity flags

Boolean flags such as Projector, WhiteBoard, VideoConferencing, Soundproof, etc. describe the physical amenities available in the resource. These are used for filtering and display purposes.

Authentication

This endpoint requires OAuth2 authentication. Include a valid bearer token in the Authorization header. The authenticated user must be a full unrestricted administrator or have the Resource-Create role.

Enums

ValueName
0None
1MeetingRoom
2HotDesk
3PrivateOffice
4EventSpace
5Lab
6Kitchen
7TreatmentRoom
9StorageUnit
10Machine
11DayPass
12PhoneBooth
99Other
ValueName
0None
1Absolute
2Percentage

Request Body

Required Fields

BusinessId
integer
required
ID of the business linked to this record.
Name
string
required
Display name of the resource (e.g., ‘Board Room A’, ‘Phone Booth 3’)..
SystemResourceType
integer
required
Built-in resource category used for system behaviour (e.g., MeetingRoom, HotDesk, PhoneBooth). Distinct from the custom ResourceType..
ResourceTypeId
integer
required
ID of the resource type linked to this record.
DisplayOrder
integer
required
Sort position when listing resources. Lower values appear first..
CancellationFeeType
integer
required
How the cancellation fee is calculated: Absolute (fixed amount) or Percentage (of booking cost)..

Optional Fields

Description
string
Free-text description shown to users when viewing the resource details..
NewPictureUrl
string
URL of a new file to upload as the picture.
ClearPictureFile
boolean
Set to true to remove the current picture file.
EmailConfirmationContent
string
Custom HTML or text included in booking confirmation emails for this resource..
Visible
boolean
Whether the resource is visible and bookable by end users. Hidden resources can still be booked by admins..
RequiresConfirmation
boolean
When true, bookings for this resource are held as pending until an admin approves them..
GroupName
string
Optional grouping label used to cluster related resources together in the UI (e.g., ‘Floor 2’)..
Projector
boolean
Amenity flag: resource has a projector..
Internet
boolean
Amenity flag: resource has internet access..
ConferencePhone
boolean
Amenity flag: resource has a conference phone..
StandardPhone
boolean
Amenity flag: resource has a standard phone..
WhiteBoard
boolean
Amenity flag: resource has a whiteboard..
LargeDisplay
boolean
Amenity flag: resource has a large display..
Catering
boolean
Amenity flag: catering is available for this resource..
TeaAndCoffee
boolean
Amenity flag: tea and coffee are available..
Drinks
boolean
Amenity flag: drinks are available..
SecurityLock
boolean
Amenity flag: resource has a security lock..
CCTV
boolean
Amenity flag: resource has CCTV coverage..
VoiceRecorder
boolean
Amenity flag: resource has a voice recorder..
AirConditioning
boolean
Amenity flag: resource has air conditioning..
Heating
boolean
Amenity flag: resource has heating..
NaturalLight
boolean
Amenity flag: resource has natural light..
StandingDesk
boolean
Amenity flag: resource has a standing desk..
QuietZone
boolean
Amenity flag: resource is located in a quiet zone..
WirelessCharger
boolean
Amenity flag: resource has a wireless charger..
PrivacyScreen
boolean
Amenity flag: resource has a privacy screen..
Soundproof
boolean
Amenity flag: resource is soundproof..
VideoConferencing
boolean
Amenity flag: resource has video conferencing equipment..
DualDisplayScreen
boolean
Amenity flag: resource has a dual display screen..
DisplayScreen
boolean
Amenity flag: resource has a display screen..
WirelessPresentation
boolean
Amenity flag: resource has wireless presentation capabilities..
PaSystem
boolean
Amenity flag: resource has a PA system..
DesktopMonitor
boolean
Amenity flag: resource has a desktop monitor..
FlipChart
boolean
Amenity flag: resource has a flip chart..
SecureStorage
boolean
Amenity flag: resource has secure storage..
AllowMultipleBookings
boolean
When true, overlapping bookings are permitted up to the Allocation capacity..
Allocation
integer
Maximum number of attendees or concurrent bookings allowed. Used with AllowMultipleBookings to control capacity..
LimitVisitorsToAllocation
boolean
When true, the total number of visitors added to a booking cannot exceed the Allocation capacity..
BookInAdvanceLimit
number
Maximum number of days in advance a booking can be made for this resource. Null means no limit..
LateBookingLimit
number
Minimum lead time (in minutes) required before a booking can start. Prevents last-minute bookings..
LateCancellationLimit
integer
Cut-off in minutes before the booking start time. Cancellations after this point are considered late and may incur a fee..
IntervalLimit
integer
Minimum interval (in minutes) between consecutive bookings on this resource, used as a buffer for setup or cleaning..
NoReturnPolicy
integer
Cooldown in minutes: prevents the same user from booking this specific resource again within this window after their last booking ends..
NoReturnPolicyAllResources
integer
Cooldown in minutes: prevents the same user from booking any resource after booking this one, for the specified window..
NoReturnPolicyAllUsers
integer
Cooldown in minutes: prevents any user from booking this resource within the specified window after the previous booking ends..
MaxBookingLength
integer
Maximum allowed duration for a single booking on this resource, in minutes..
MinBookingLength
integer
Minimum allowed duration for a single booking on this resource, in minutes..
Tariffs
integer[]
List of tariffs linked to this record.
Teams
integer[]
List of teams linked to this record.
Shifts
string
JSON-encoded shifts configuration defining the resource’s availability schedule..
LinkedResources
integer[]
List of linked resources linked to this record.
GoogleCalendarId
string
ID of the google calendar associated with this record.
KisiGroupId
string
ID of the kisi group associated with this record.
AccessControlGroupId
string
ID of the access control group associated with this record.
Longitude
number
GPS longitude coordinate of the resource’s physical location..
Latitude
number
GPS latitude coordinate of the resource’s physical location..
HideInCalendar
boolean
When true, this resource does not appear on the booking calendar view..
Archived
boolean
When true, the resource is archived and hidden from all views. It cannot be booked..
UseSharedZoomAccount
boolean
When true, bookings for this resource use the location’s shared Zoom account to create virtual meetings..
ZoomAccessToken
string
The zoom access token value for this resource.
ZoomRefreshToken
string
The zoom refresh token value for this resource.
ZoomUserId
string
Zoom user ID used to host virtual meetings when UseSharedZoomAccount is false..
LastCleanedAt
string
Timestamp of the last cleaning event for this resource..
Office365CalendarId
string
ID of the office365 calendar associated with this record.
LinkedResourceIds
string
Comma-separated string of linked resource IDs (read-only alternative view of LinkedResources)..
OnlyForContacts
boolean
When true, only contacts (non-member customers) can book this resource..
OnlyForMembers
boolean
When true, only active members (coworkers with a plan) can book this resource..
OnlyForInvoicingBusiness
boolean
When true, only coworkers invoiced by this specific location can book this resource..
BookingAvailabilityExceptions
integer[]
List of booking availability exceptions linked to this record.
CancellationFeeProductId
integer
ID of the cancellation fee product linked to this record.
ChargeCancellationFee
boolean
When true, a fee is charged for late cancellations (past the LateCancellationLimit)..
CancellationFeeAmount
number
Fixed cancellation fee amount. Used when CancellationFeeType is Absolute..
CancellationFeePercentage
number
Cancellation fee as a percentage of the booking cost. Used when CancellationFeeType is Percentage..
RepeatBookingQuantityLimit
integer
Maximum number of occurrences allowed when creating a recurring booking for this resource..
RepeatBookingPeriodLimitInMonths
integer
Maximum time span (in months) over which a recurring booking series can extend..

Children

TimeSlots
object[]
The days and times this resource is available for booking. The year, month and day component of FromTime/ToTime is always 1976-01-01.

Code Examples

curl -X POST \
  "https://spaces.nexudus.com/api/spaces/resources" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "BusinessId": 0,
    "Name": "",
    "SystemResourceType": 0,
    "ResourceTypeId": 0,
    "DisplayOrder": 0,
    "CancellationFeeType": 0,
    "TimeSlots": [
        {
            "DayOfWeek": 0,
            "FromTime": "2025-01-15T10:30:00Z",
            "ToTime": "2025-01-15T10:30:00Z"
        }
    ]
}'

Response

200

Status
integer
HTTP status code. 200 on success.
Message
string
A human-readable message confirming the creation.
Value
object
Contains the Id of the newly created record.
WasSuccessful
boolean
true if the resource was created successfully.
Errors
array
null on success.
Example Response
{
  "Status": 200,
  "Message": "Resource was successfully created.",
  "Value": {
    "Id": 87654321
  },
  "OpenInDialog": false,
  "OpenInWindow": false,
  "RedirectURL": null,
  "JavaScript": null,
  "UpdatedOn": "2025-01-15T10:30:00Z",
  "UpdatedBy": "admin@example.com",
  "Errors": null,
  "WasSuccessful": true
}

400

Message
string
A summary of the validation error(s), in the format PropertyName: error message.
Value
any
null on validation failure.
Errors
object[]
Array of validation errors.
WasSuccessful
boolean
false when the request fails validation.
Example Response
{
  "Message": "Name: is a required field",
  "Value": null,
  "Errors": [
    {
      "AttemptedValue": null,
      "Message": "is a required field",
      "PropertyName": "Name"
    }
  ],
  "WasSuccessful": false
}