---
title: "Get venue availability"
method: GET
path: "/venues/{venueId}/availability"
tags: ["Venues"]
---

# Get venue availability

`GET /venues/{venueId}/availability`

## Request

- Base URL: `https://joinways.app/api/v1`
- URL: `https://joinways.app/api/v1/venues/{venueId}/availability`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://joinways.app/oauth/authorize`, token URL `https://joinways.app/api/oauth/token`, scopes: `mcp.read`)

Weekly opening hours, closures and enforcement mode of a venue (or of one of its spaces). A space inherits its venue's hours and closures unless it overrides them; the `effective*` fields are the resolved ones. `effectiveEnforcementMode: block` means events cannot be created or moved onto a closure or outside opening hours (the API answers 409 with `details.reason: venue_unavailable`). Pass `space_ids` to also get each space's own resolved availability in `spaces`. **Role permission:** none (any member).

## Query parameters

- `from` string, date
- `to` string, date
- `space_ids` string[]

## Response `200`

Business hours, closures and resolved availability.

- object
  - `locationId` string, uuid
  - `parentId` string, uuid, nullable
  - `inherits` object
    - `businessHours` boolean
    - `closures` boolean
  - `autoImportHolidays` boolean
  - `ownBusinessHours` BusinessHours[]
    - `id` string, uuid
    - `dayOfWeek` integer: 0 = Sunday.
    - `openTime` string
    - `closeTime` string
    - `sourceLocationId` string, uuid: Where the hours are stored (the parent venue for an inheriting space).
  - `ownClosures` Closure[]
    - `id` string, uuid
    - `startDate` string, date
    - `endDate` string, date
    - `startTime` string, nullable: HH:MM; null = whole days.
    - `endTime` string, nullable
    - `reason` string, nullable
    - `color` string, nullable
    - `closureType` 'manual' | 'holiday': `holiday` = imported public holiday.
    - `sourceLocationId` string, uuid: Where the closure is stored (the parent venue for an inherited one).
  - `effectiveBusinessHours` BusinessHours[]
    - `id` string, uuid
    - `dayOfWeek` integer: 0 = Sunday.
    - `openTime` string
    - `closeTime` string
    - `sourceLocationId` string, uuid: Where the hours are stored (the parent venue for an inheriting space).
  - `effectiveClosures` Closure[]
    - `id` string, uuid
    - `startDate` string, date
    - `endDate` string, date
    - `startTime` string, nullable: HH:MM; null = whole days.
    - `endTime` string, nullable
    - `reason` string, nullable
    - `color` string, nullable
    - `closureType` 'manual' | 'holiday': `holiday` = imported public holiday.
    - `sourceLocationId` string, uuid: Where the closure is stored (the parent venue for an inherited one).
  - `country` string, nullable
  - `enforcementMode` 'warn' | 'block'
  - `effectiveEnforcementMode` 'warn' | 'block'
  - `spaces` object[]: Only with `space_ids`: the same object for each space, plus its `space_id`.
    - `locationId` string, uuid
    - `parentId` string, uuid, nullable
    - `inherits` object
      - `businessHours` boolean
      - `closures` boolean
    - `autoImportHolidays` boolean
    - `ownBusinessHours` BusinessHours[]
      - `id` string, uuid
      - `dayOfWeek` integer: 0 = Sunday.
      - `openTime` string
      - `closeTime` string
      - `sourceLocationId` string, uuid: Where the hours are stored (the parent venue for an inheriting space).
    - `ownClosures` Closure[]
      - `id` string, uuid
      - `startDate` string, date
      - `endDate` string, date
      - `startTime` string, nullable: HH:MM; null = whole days.
      - `endTime` string, nullable
      - `reason` string, nullable
      - `color` string, nullable
      - `closureType` 'manual' | 'holiday': `holiday` = imported public holiday.
      - `sourceLocationId` string, uuid: Where the closure is stored (the parent venue for an inherited one).
    - `effectiveBusinessHours` BusinessHours[]
      - `id` string, uuid
      - `dayOfWeek` integer: 0 = Sunday.
      - `openTime` string
      - `closeTime` string
      - `sourceLocationId` string, uuid: Where the hours are stored (the parent venue for an inheriting space).
    - `effectiveClosures` Closure[]
      - `id` string, uuid
      - `startDate` string, date
      - `endDate` string, date
      - `startTime` string, nullable: HH:MM; null = whole days.
      - `endTime` string, nullable
      - `reason` string, nullable
      - `color` string, nullable
      - `closureType` 'manual' | 'holiday': `holiday` = imported public holiday.
      - `sourceLocationId` string, uuid: Where the closure is stored (the parent venue for an inherited one).
    - `country` string, nullable
    - `enforcementMode` 'warn' | 'block'
    - `effectiveEnforcementMode` 'warn' | 'block'
    - `space_id` string, uuid

## Other responses

- `400`: Validation failed (`invalid_request`). For a body that fails the schema, `details` holds `formErrors` and `fieldErrors`.
- `401`: Missing, invalid, expired or revoked bearer token (`unauthorized`).
- `404`: Not found in this workspace, or the id of the path is not a UUID (`not_found`).
- `429`: Too many requests (`rate_limited`). `details.reason`: `per-ip`, `per-account-minute`, `per-account-day`, or `email_rate_limited` (email budget). Always carries `Retry-After`: wait that many seconds.

---

[API](https://skmtc.dev/joinways/apis/joinways-public-api.md) · [All operations](https://skmtc.dev/joinways/apis/joinways-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/joinways/apis/joinways-public-api/revisions/39e84309953e?raw)
