> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nexudus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get one Booking

> Retrieve a single Booking record by its Id.

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 bookings** — `RepeatBooking` 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 overrides** — `OverridePrice` lets an admin set a fixed price for the booking, regardless of what extra service (rate) is associated with it.

## Authentication

<Note>
  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-Read`** role.
</Note>

## Path Parameters

<ParamField path="id" type="integer" required>
  The Id of the Booking record to retrieve.
</ParamField>

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/spaces/bookings/87654321" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/spaces/bookings/87654321',
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const record = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/spaces/bookings/87654321',
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  record = response.json()
  ```
</CodeGroup>

## Response

### 200

<ResponseField name="ResourceId" type="integer">
  Resource Id.
</ResponseField>

<ResponseField name="ResourceName" type="string">
  Resource name.
</ResponseField>

<ResponseField name="ResourceAllocation" type="integer">
  Resource allocation.
</ResponseField>

<ResponseField name="ResourceHideInCalendar" type="boolean">
  Resource hidden in calendar.
</ResponseField>

<ResponseField name="ResourceNoReturnPolicy" type="integer">
  Resource No Return Policy.
</ResponseField>

<ResponseField name="ResourceNoReturnPolicyAllResources" type="integer">
  Resource No Return Policy All Resources.
</ResponseField>

<ResponseField name="ResourceNoReturnPolicyAllUsers" type="integer">
  Resource No Return Policy All Users.
</ResponseField>

<ResponseField name="ResourceResourceTypeId" type="integer">
  Resource type ID.
</ResponseField>

<ResponseField name="ResourceResourceTypeName" type="string">
  Resource type name.
</ResponseField>

<ResponseField name="FloorPlanDeskId" type="integer">
  Floor Plan Desk Id.
</ResponseField>

<ResponseField name="FloorPlanDeskName" type="string">
  Floor plan desk name.
</ResponseField>

<ResponseField name="CoworkerId" type="integer">
  Coworker Id.
</ResponseField>

<ResponseField name="CoworkerCoworkerType" type="string">
  Coworker Coworker Type.
</ResponseField>

<ResponseField name="CoworkerFullName" type="string">
  Coworker full name.
</ResponseField>

<ResponseField name="CoworkerMobilePhone" type="string">
  Coworker Mobile Phone.
</ResponseField>

<ResponseField name="CoworkerLandLine" type="string">
  Coworker Land Line.
</ResponseField>

<ResponseField name="CoworkerBillingName" type="string">
  Coworker billing name.
</ResponseField>

<ResponseField name="CoworkerCompanyName" type="string">
  Coworker company name.
</ResponseField>

<ResponseField name="CoworkerTeamNames" type="string">
  Coworker team names.
</ResponseField>

<ResponseField name="ExtraServiceId" type="integer">
  Extra Service Id.
</ResponseField>

<ResponseField name="ExtraServiceName" type="string">
  Extra service name.
</ResponseField>

<ResponseField name="FromTime" type="string">
  Booking start time.
</ResponseField>

<ResponseField name="ToTime" type="string">
  Booking end time.
</ResponseField>

<ResponseField name="Notes" type="string">
  Notes.
</ResponseField>

<ResponseField name="InternalNotes" type="string">
  Internal notes.
</ResponseField>

<ResponseField name="ChargeNow" type="boolean">
  Charge immediately.
</ResponseField>

<ResponseField name="InvoiceNow" type="boolean">
  Invoice immediately.
</ResponseField>

<ResponseField name="InvoiceThisCoworker" type="boolean">
  Charge the booking to the customer making it rather than their paying member (if any).
</ResponseField>

<ResponseField name="DoNotUseBookingCredit" type="boolean">
  Do not use booking credit.
</ResponseField>

<ResponseField name="PurchaseOrder" type="string">
  Purchase order.
</ResponseField>

<ResponseField name="DiscountCode" type="string">
  Discount code.
</ResponseField>

<ResponseField name="LastNotificationTime" type="string">
  Last Notification Time.
</ResponseField>

<ResponseField name="GoogleCalendarId" type="string">
  Google Calendar Id.
</ResponseField>

<ResponseField name="GoogleEventId" type="string">
  Google Event Id.
</ResponseField>

<ResponseField name="Office365EventId" type="string">
  Office365Event Id.
</ResponseField>

<ResponseField name="PublicGoogleEventId" type="string">
  Public Google Event Id.
</ResponseField>

<ResponseField name="Tentative" type="boolean">
  Tentative booking. Must be approved by an administrator before confirmed or charged. Tentative bookings still block the calendar.
</ResponseField>

<ResponseField name="Online" type="boolean">
  Whether the booking was made in the portal or the app.
</ResponseField>

<ResponseField name="TeamsAtTheTimeOfBooking" type="string">
  Teams at the time of booking.
</ResponseField>

<ResponseField name="TariffAtTheTimeOfBooking" type="string">
  Tariff at the time of booking.
</ResponseField>

<ResponseField name="RepeatSeriesUniqueId" type="string">
  Repeat Series Unique Id.
</ResponseField>

<ResponseField name="RepeatBooking" type="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.
</ResponseField>

<ResponseField name="Repeats" type="integer">
  Repeat cycle. Create-only. See `eBookingRepeatCycle` enum values: `1` = Daily, `2` = Weekly, `3` = Monthly, `4` = Yearly, `5` = FirstOfMonth, `6` = SecondOfMonth, `7` = ThirdOfMonth, `8` = LastOfMonth, `9` = FourthOfMonth.
</ResponseField>

<ResponseField name="WhichBookingsToUpdate" type="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. See `eRepeatedBookingUpdateAction` enum values: `1` = UpdateThisBookingOnly, `2` = UpdateFutureBookingsOnly, `3` = UpdateAllBookings, `4` = UpdateNotChargedBookings, `5` = DeleteAllBookings, `6` = DeleteBookingsAfterThis, `7` = DeleteNotChargedBookings, `8` = RevertAllCharges.
</ResponseField>

<ResponseField name="RepeatEvery" type="integer">
  Repeat every N periods. Create-only.
</ResponseField>

<ResponseField name="RepeatUntil" type="string">
  Repeat until date. Create-only.
</ResponseField>

<ResponseField name="RepeatOnMondays" type="boolean">
  Repeat on Mondays. Create-only.
</ResponseField>

<ResponseField name="RepeatOnTuesdays" type="boolean">
  Repeat on Tuesdays. Create-only.
</ResponseField>

<ResponseField name="RepeatOnWednesdays" type="boolean">
  Repeat on Wednesdays. Create-only.
</ResponseField>

<ResponseField name="RepeatOnThursdays" type="boolean">
  Repeat on Thursdays. Create-only.
</ResponseField>

<ResponseField name="RepeatOnFridays" type="boolean">
  Repeat on Fridays. Create-only.
</ResponseField>

<ResponseField name="RepeatOnSaturdays" type="boolean">
  Repeat on Saturdays. Create-only.
</ResponseField>

<ResponseField name="RepeatOnSundays" type="boolean">
  Repeat on Sundays. Create-only.
</ResponseField>

<ResponseField name="Reminded" type="boolean">
  Reminded.
</ResponseField>

<ResponseField name="MrmReminded" type="boolean">
  Mrm Reminded.
</ResponseField>

<ResponseField name="OverridePrice" type="number">
  Admin-set fixed price for the booking, regardless of what extra service (rate) is associated with it.
</ResponseField>

<ResponseField name="Invoiced" type="boolean">
  Whether the booking has been charged. When true, a charge (CoworkerExtraService) has been posted to the customer account. Note: the booking is actually invoiced when the associated CoworkerExtraService is invoiced.
</ResponseField>

<ResponseField name="InvoiceDate" type="string">
  Invoice date.
</ResponseField>

<ResponseField name="BookingNumber" type="integer">
  Booking number.
</ResponseField>

<ResponseField name="KisiKeyId" type="integer">
  Kisi Key Id.
</ResponseField>

<ResponseField name="StartScheduledJobId" type="string">
  Start Scheduled Job Id.
</ResponseField>

<ResponseField name="EndScheduledJobId" type="string">
  End Scheduled Job Id.
</ResponseField>

<ResponseField name="Billed" type="boolean">
  Billed.
</ResponseField>

<ResponseField name="FromTimeLocal" type="string">
  From Time Local.
</ResponseField>

<ResponseField name="ToTimeLocal" type="string">
  To Time Local.
</ResponseField>

<ResponseField name="InvoiceDateLocal" type="string">
  Invoice Date Local.
</ResponseField>

<ResponseField name="CoworkerInvoiceId" type="integer">
  Coworker invoice ID.
</ResponseField>

<ResponseField name="CoworkerInvoiceNumber" type="string">
  Coworker invoice number.
</ResponseField>

<ResponseField name="CoworkerInvoicePaid" type="boolean">
  Coworker invoice paid.
</ResponseField>

<ResponseField name="CoworkerInvoiceDraft" type="boolean">
  Coworker Invoice Draft.
</ResponseField>

<ResponseField name="CoworkerInvoiceVoid" type="boolean">
  Coworker Invoice Void.
</ResponseField>

<ResponseField name="CoworkerInvoiceCreditNote" type="boolean">
  Coworker Invoice Credit Note.
</ResponseField>

<ResponseField name="CoworkerExtraServiceIds" type="string">
  Coworker Extra Service Ids.
</ResponseField>

<ResponseField name="CoworkerExtraServicePrice" type="number">
  Coworker Extra Service Price.
</ResponseField>

<ResponseField name="CoworkerExtraServiceCurrencyCode" type="string">
  Coworker Extra Service Currency Code.
</ResponseField>

<ResponseField name="CoworkerExtraServiceChargePeriod" type="integer">
  Coworker Extra Service Charge Period.
</ResponseField>

<ResponseField name="CoworkerExtraServiceTotalUses" type="integer">
  Coworker Extra Service Total Uses.
</ResponseField>

<ResponseField name="IncludeZoomInvite" type="boolean">
  Include Zoom invite.
</ResponseField>

<ResponseField name="ZoomEventData" type="string">
  Zoom Event Data.
</ResponseField>

<ResponseField name="CheckedInAt" type="string">
  Checked in at time.
</ResponseField>

<ResponseField name="CancelIfNotPaid" type="boolean">
  Cancel if not paid.
</ResponseField>

<ResponseField name="CancelIfNotCheckedIn" type="boolean">
  Cancel if not checked in.
</ResponseField>

<ResponseField name="MaxOccupancy" type="integer">
  Maximum occupancy.
</ResponseField>

<ResponseField name="LastMinutePriceAdjustment" type="number">
  Last Minute Price Adjustment.
</ResponseField>

<ResponseField name="DynamicPriceAdjustment" type="number">
  Dynamic Price Adjustment.
</ResponseField>

<ResponseField name="PriceFactorLastMinute" type="number">
  Price Factor Last Minute.
</ResponseField>

<ResponseField name="PriceFactorDemand" type="number">
  Price Factor Demand.
</ResponseField>

<ResponseField name="Office365AdminEventId" type="string">
  Office365Admin Event Id.
</ResponseField>

<ResponseField name="Id" type="integer">
  Unique record identifier.
</ResponseField>

<ResponseField name="UniqueId" type="string">
  UUID of the record.
</ResponseField>

<ResponseField name="CreatedOn" type="string">
  Date and time the record was created (ISO 8601).
</ResponseField>

<ResponseField name="UpdatedOn" type="string">
  Date and time the record was last updated (ISO 8601).
</ResponseField>

<ResponseField name="UpdatedBy" type="string">
  Email of the user who last updated this record.
</ResponseField>

<ResponseField name="IsNew" type="boolean">
  Whether the record was recently created.
</ResponseField>

<ResponseField name="SystemId" type="string">
  External system identifier.
</ResponseField>

```json Example Response theme={null}
{
  "ResourceId": 0,
  "ResourceName": null,
  "ResourceAllocation": null,
  "ResourceHideInCalendar": null,
  "ResourceNoReturnPolicy": null,
  "ResourceNoReturnPolicyAllResources": null,
  "ResourceNoReturnPolicyAllUsers": null,
  "ResourceResourceTypeId": null,
  "ResourceResourceTypeName": null,
  "FloorPlanDeskId": null,
  "FloorPlanDeskName": null,
  "CoworkerId": null,
  "CoworkerCoworkerType": null,
  "CoworkerFullName": null,
  "CoworkerMobilePhone": null,
  "CoworkerLandLine": null,
  "CoworkerBillingName": null,
  "CoworkerCompanyName": null,
  "CoworkerTeamNames": null,
  "ExtraServiceId": null,
  "ExtraServiceName": null,
  "FromTime": "2025-01-15T10:30:00Z",
  "ToTime": "2025-01-15T10:30:00Z",
  "Notes": null,
  "InternalNotes": null,
  "ChargeNow": false,
  "InvoiceNow": false,
  "InvoiceThisCoworker": false,
  "DoNotUseBookingCredit": false,
  "PurchaseOrder": null,
  "DiscountCode": null,
  "LastNotificationTime": null,
  "GoogleCalendarId": null,
  "GoogleEventId": null,
  "Office365EventId": null,
  "PublicGoogleEventId": null,
  "Tentative": false,
  "Online": false,
  "TeamsAtTheTimeOfBooking": null,
  "TariffAtTheTimeOfBooking": null,
  "RepeatSeriesUniqueId": null,
  "RepeatBooking": false,
  "Repeats": 0,
  "WhichBookingsToUpdate": 0,
  "RepeatEvery": null,
  "RepeatUntil": null,
  "RepeatOnMondays": false,
  "RepeatOnTuesdays": false,
  "RepeatOnWednesdays": false,
  "RepeatOnThursdays": false,
  "RepeatOnFridays": false,
  "RepeatOnSaturdays": false,
  "RepeatOnSundays": false,
  "Reminded": false,
  "MrmReminded": false,
  "OverridePrice": null,
  "Invoiced": false,
  "InvoiceDate": null,
  "BookingNumber": null,
  "KisiKeyId": null,
  "StartScheduledJobId": null,
  "EndScheduledJobId": null,
  "Billed": false,
  "FromTimeLocal": null,
  "ToTimeLocal": null,
  "InvoiceDateLocal": null,
  "CoworkerInvoiceId": null,
  "CoworkerInvoiceNumber": null,
  "CoworkerInvoicePaid": false,
  "CoworkerInvoiceDraft": false,
  "CoworkerInvoiceVoid": false,
  "CoworkerInvoiceCreditNote": false,
  "CoworkerExtraServiceIds": null,
  "CoworkerExtraServicePrice": null,
  "CoworkerExtraServiceCurrencyCode": null,
  "CoworkerExtraServiceChargePeriod": null,
  "CoworkerExtraServiceTotalUses": null,
  "IncludeZoomInvite": false,
  "ZoomEventData": null,
  "CheckedInAt": null,
  "CancelIfNotPaid": false,
  "CancelIfNotCheckedIn": false,
  "MaxOccupancy": null,
  "LastMinutePriceAdjustment": null,
  "DynamicPriceAdjustment": null,
  "PriceFactorLastMinute": null,
  "PriceFactorDemand": null,
  "Office365AdminEventId": null,
  "Id": 87654321,
  "UpdatedOn": "2025-01-15T10:30:00Z",
  "CreatedOn": "2025-01-10T08:00:00Z",
  "UniqueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "UpdatedBy": "admin@example.com",
  "IsNew": false,
  "SystemId": null,
  "ToStringText": "Booking Example",
  "LocalizationDetails": null,
  "CustomFields": null
}
```
