Skip to main content
POST
/
api
/
spaces
/
bookings
{
  "Status": 123,
  "Message": "<string>",
  "Value": "<any>",
  "WasSuccessful": true,
  "Errors": [
    {
      "AttemptedValue": "<any>",
      "Message": "<string>",
      "PropertyName": "<string>"
    }
  ]
}
A Booking is a reservation for a specific Resource and, optionally, for a customer (CoworkerId) and a desk or unit in the floor plan (FloorPlanDeskId). Charging vs Invoicing — When a booking is charged (confusingly labelled Invoiced in the booking entity), a charge is posted to the customer account as a CoworkerExtraService with the calculated price. If the booking has no fixed rate (ExtraServiceId = null), Nexudus calculates the rate automatically based on the resource type, booking parameters and customer. A booking is actually invoiced when the CoworkerExtraService associated with it is invoiced.
  • InvoiceThisCoworker = true means the booking is charged to the customer making it rather than their paying member (if any).
  • Tentative bookings must be approved by an administrator before being confirmed or charged. They still block the calendar.
  • Online bookings are those made via the portal or the app.
Repeating bookingsRepeatBooking and all repeat-configuration fields (Repeats, RepeatEvery, RepeatUntil, RepeatOn*) are create-only. Once a booking series is created, only WhichBookingsToUpdate can be used to update or delete bookings in the series. No new bookings can be added to an existing series. Pricing overridesOverridePrice lets an admin set a fixed price for the booking, regardless of what extra service (rate) is associated with it.

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 Booking-Create role.

Enums

ValueName
1Daily
2Weekly
3Monthly
4Yearly
5FirstOfMonth
6SecondOfMonth
7ThirdOfMonth
8LastOfMonth
9FourthOfMonth
ValueName
1UpdateThisBookingOnly
2UpdateFutureBookingsOnly
3UpdateAllBookings
4UpdateNotChargedBookings
5DeleteAllBookings
6DeleteBookingsAfterThis
7DeleteNotChargedBookings
8RevertAllCharges

Request Body

Required Fields

ResourceId
integer
required
Resource Id.
FromTime
string
required
Booking start time.
ToTime
string
required
Booking end time.

Optional Fields

FloorPlanDeskId
integer
Floor Plan Desk Id.
CoworkerId
integer
Coworker Id.
ExtraServiceId
integer
Extra Service Id.
Notes
string
Notes.
InternalNotes
string
Internal notes.
ChargeNow
boolean
Charge immediately.
InvoiceNow
boolean
Invoice immediately.
InvoiceThisCoworker
boolean
Charge the booking to the customer making it rather than their paying member (if any).
DoNotUseBookingCredit
boolean
Do not use booking credit.
PurchaseOrder
string
Purchase order.
DiscountCode
string
Discount code.
LastNotificationTime
string
Last Notification Time.
GoogleCalendarId
string
Google Calendar Id.
GoogleEventId
string
Google Event Id.
Office365EventId
string
Office365Event Id.
PublicGoogleEventId
string
Public Google Event Id.
Tentative
boolean
Tentative booking. Must be approved by an administrator before confirmed or charged. Tentative bookings still block the calendar.
TeamsAtTheTimeOfBooking
string
Teams at the time of booking.
TariffAtTheTimeOfBooking
string
Tariff at the time of booking.
RepeatSeriesUniqueId
string
Repeat Series Unique Id.
RepeatBooking
boolean
Create a repeating booking series. Create-only: once created, only WhichBookingsToUpdate can be used to update the series. No new bookings can be added to the series.
Repeats
integer
Repeat cycle. Create-only. Defaults to eBookingRepeatCycle.Weekly. See eBookingRepeatCycle enum above.
WhichBookingsToUpdate
integer
Action to apply when updating or deleting bookings in a repeated series. This is the only field that can modify a series after creation. Defaults to eRepeatedBookingUpdateAction.UpdateThisBookingOnly. See eRepeatedBookingUpdateAction enum above.
RepeatEvery
integer
Repeat every N periods. Create-only.
RepeatUntil
string
Repeat until date. Create-only.
RepeatOnMondays
boolean
Repeat on Mondays. Create-only.
RepeatOnTuesdays
boolean
Repeat on Tuesdays. Create-only.
RepeatOnWednesdays
boolean
Repeat on Wednesdays. Create-only.
RepeatOnThursdays
boolean
Repeat on Thursdays. Create-only.
RepeatOnFridays
boolean
Repeat on Fridays. Create-only.
RepeatOnSaturdays
boolean
Repeat on Saturdays. Create-only.
RepeatOnSundays
boolean
Repeat on Sundays. Create-only.
Reminded
boolean
Reminded.
MrmReminded
boolean
Mrm Reminded.
OverridePrice
number
Admin-set fixed price for the booking, regardless of what extra service (rate) is associated with it.
KisiKeyId
integer
Kisi Key Id.
StartScheduledJobId
string
Start Scheduled Job Id.
EndScheduledJobId
string
End Scheduled Job Id.
Billed
boolean
Billed.
FromTimeLocal
string
From Time Local.
ToTimeLocal
string
To Time Local.
InvoiceDateLocal
string
Invoice Date Local.
CoworkerExtraServicePrice
number
Coworker Extra Service Price.
IncludeZoomInvite
boolean
Include Zoom invite.
ZoomEventData
string
Zoom Event Data.
Office365AdminEventId
string
Office365Admin Event Id.

Children

BookingProducts
object[]
Products to include with this booking
BookingVisitors
object[]
Visitors to add to this booking

Code Examples

curl -X POST \
  "https://spaces.nexudus.com/api/spaces/bookings" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ResourceId": 0,
    "FromTime": "2025-01-15T10:30:00Z",
    "ToTime": "2025-01-15T10:30:00Z",
    "BookingProducts": [
        {
            "ProductId": 0,
            "Quantity": 0,
            "InvoiceInMinutes": false
        }
    ],
    "BookingVisitors": [
        {
            "VisitorFullName": null,
            "VisitorEmail": null
        }
    ]
}'

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 booking was created successfully.
Errors
array
null on success.
Example Response
{
  "Status": 200,
  "Message": "Booking 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": "FromTime: is a required field",
  "Value": null,
  "Errors": [
    {
      "AttemptedValue": null,
      "Message": "is a required field",
      "PropertyName": "FromTime"
    }
  ],
  "WasSuccessful": false
}