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

# Get booking profile

> Whether a granted location accepts partner bookings right now, which provider serves it, the capability set its provider declares (hold release, venue verbs, time-window listing, live floor), and the hold TTL.

GET`https://api.maple.inc/v1/locations/{locationId}/booking_profile`API key

Whether a granted location accepts partner bookings right now, which provider serves it, the capability set its provider declares (hold release, venue verbs, time-window listing, live floor), and the hold TTL. Read this before calling any other bookings endpoint: `enabled: false` means the location is not bookable through the Developer API yet, and a `false` capability is what the matching verb answers with `capability_unsupported`. Requires `bookings:read`.

## Authorization

Send your API key as `Authorization: Bearer <key>`: `mpk_test_…` against the sandbox (`https://api.staging.maple.inc/v1`), `mpk_live_…` against production. See [Authentication](https://docs.maple.inc/developer-api/concepts/authentication.md). The samples read the key from `MAPLE_KEY` and the base URL from `MAPLE_BASE`, as set up in the [Quickstart](https://docs.maple.inc/developer-api/quickstart.md).

## Parameters

- `locationId` string path required

## Responses

### 200 OK

- `object` string required

  Always `booking_profile`.

- `location_id` string required

- `livemode` boolean required

  True when read with a live credential; test credentials only ever see test-mode data.

- `enabled` boolean required

  True when this location accepts partner bookings through the Developer API right now. When false, every other bookings endpoint for the location returns `bookings_not_enabled`.

- `provider` string or null required

  The provider behind the location’s booking connection, or null when none is configured.

- `capabilities` object required

- `capabilities.hold_release` boolean required

  Whether `DELETE /booking_holds/{holdId}` releases capacity early (provider locks only expire).

- `capabilities.confirm_decline` boolean required

  Whether the venue verbs `confirm` and `decline` are accepted for this location.

- `capabilities.seat` boolean required

  Whether the venue verb `seat` is accepted for this location.

- `capabilities.no_show` boolean required

  Whether the venue verb `no_show` is accepted for this location.

- `capabilities.window_lookup` boolean required

  Whether bookings can be listed by time window (provider-managed stores only expose lookups by guest).

- `capabilities.floor_status` boolean required

  Whether the live floor (`GET /locations/{locationId}/booking_floor`) is available — Maple-native stores only.

- `capabilities.experiences` boolean required

  Whether availability lists experiences (prix fixe, ticketed seatings) and `experience_id` narrows a search to one. Offered where the provider lists them (OpenTable); Maple-native locations do not offer experiences yet.

- `blackout_dates` object\[] required

  Windows when the location takes no reservations, in start order (walk-ins and waitlist seating are unaffected). Availability omits slots inside them. A quote taken before a window was added is refused when held, booked, or used for a change: 409 `slot_unavailable` at Maple-native locations, whose engine also withholds seatings that would run into a window, and 422 `date_blocked` at provider-managed ones.

- `blackout_dates[].start_date` string required

  First blocked day, venue-local `YYYY-MM-DD`.

- `blackout_dates[].end_date` string required

  Last blocked day, inclusive, venue-local `YYYY-MM-DD`.

- `blackout_dates[].start_time` string or null required

  Venue-local `HH:MM` the block starts on `start_date`; null blocks from the start of that day.

- `blackout_dates[].end_time` string or null required

  Venue-local `HH:MM` the block ends on `end_date`, inclusive; null blocks through the end of that day.

- `blackout_dates[].reason` string or null required

  The venue’s note, e.g. “Private event”.

- `blackout_dates_revision` string required

  The revision of `blackout_dates`. Send it as `expected_revision` to `PUT /booking_blackouts` so the write is refused (409 `stale_blackout_dates`) if the venue changed the list since you read it.

- `hold_ttl_seconds` number or null required

  How long a hold taken through `POST /booking_holds` claims capacity before it expires, when Maple enforces the hold lifetime. Null when the location’s provider owns hold expiry (read `expires_at` on each hold) or no provider is configured.

### Errors

- `400` Bad request DeveloperApiBadRequest

- `401` Unauthorized DeveloperApiUnauthorized

- `403` Forbidden DeveloperApiForbidden

- `404` Not found DeveloperApiNotFound

- `429` Too many requests DeveloperApiRateLimited

Every error body names the error in `_tag`, explains it in `message`, and says where to report it in `feedback`. See [Errors](https://docs.maple.inc/developer-api/concepts/errors.md).

A `429` also sends `Retry-After`: Seconds to wait before retrying; also returned as retry\_after in the body.

Get booking profile

```sh
curl "$MAPLE_BASE/locations/str_123/booking_profile" \
  -H "Authorization: Bearer $MAPLE_KEY"
```

```python
import os
import requests


r = requests.get(
    f"{os.environ['MAPLE_BASE']}/locations/str_123/booking_profile",
    headers={"Authorization": f"Bearer {os.environ['MAPLE_KEY']}"},
    timeout=30,
)
r.raise_for_status()
print(r.json())
```

```js
const res = await fetch(`${process.env.MAPLE_BASE}/locations/str_123/booking_profile`, {
  headers: {
    Authorization: `Bearer ${process.env.MAPLE_KEY}`,
  },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log(await res.json());
```

```json
{
  "object": "booking_profile",
  "location_id": "str_123",
  "livemode": true,
  "enabled": true,
  "provider": "maple",
  "capabilities": {
    "hold_release": true,
    "confirm_decline": true,
    "seat": true,
    "no_show": true,
    "window_lookup": true,
    "floor_status": true,
    "experiences": true
  },
  "blackout_dates": [
    {
      "start_date": "string",
      "end_date": "string",
      "start_time": "string",
      "end_time": "string",
      "reason": "string"
    }
  ],
  "blackout_dates_revision": "string",
  "hold_ttl_seconds": 1.5
}
```

```json
{
  "_tag": "DeveloperApiBadRequest",
  "code": "string",
  "message": "string",
  "feedback": "string"
}
```
