---
title: "Get the BEO of an event"
method: GET
path: "/events/{id}/beo"
tags: ["Events"]
---

# Get the BEO of an event

`GET /events/{id}/beo`

## Request

- Base URL: `https://joinways.app/api/v1`
- URL: `https://joinways.app/api/v1/events/{id}/beo`
- 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`)

Full BEO (Banquet Event Order) snapshot: event-level fields, version state and releases, the venue's BEO settings, staff, day-of contacts and per-day overrides. **Role permission:** none (any member).

## Response `200`

BEO snapshot.

- Beo
  - `beo` object
    - `id` string, uuid
    - `title` string
    - `start_date` string, date-time
    - `end_date` string, date-time, nullable
    - `timezone` string, nullable
    - `pax` integer, nullable
    - `schedule` BeoScheduleItem[], nullable: While the event's program is empty, the venue's default program (line ids starting `venue-program-`). Writing a program replaces it.
      - `id` string
      - `time` string, required
      - `endTime` string, nullable
      - `label` string, required
      - `notes` string, nullable
      - `category` 'welcome' | 'food' | 'session' | 'break' | 'technical' | 'entertainment' | 'other' | 'null', nullable
      - `day` string, nullable
      - `dayId` string, uuid, nullable: A day of this event; a stale id falls back to all days.
      - `setup` 'theatre' | 'classroom' | 'banquet' | 'cabaret' | 'cocktail' | 'u_shape' | 'boardroom' | 'u-shape' | 'theater' | 'custom' | 'null', nullable: Room layout of this moment, read on the room's seats for that layout. `u-shape` and `theater` are stored as `u_shape` and `theatre`; `custom` has no layout and is stored as null.
      - `setupNotes` string, nullable
      - `description` string, nullable
      - `quantity` number, nullable
      - `unitPrice` number, nullable
      - `quoteItemId` string, nullable
      - `slotId` string, uuid, nullable
      - `spaceId` string, uuid, nullable
      - `vendor` string, nullable
    - `setup_type` string, nullable
    - `setup_notes` string, nullable
    - `catering_notes` string, nullable
    - `dietary_notes` string, nullable: Diets and allergies (« Contraintes alimentaires »), for the whole event.
    - `technical_notes` string, nullable
    - `service_notes` string, nullable
    - `beo_context` string, nullable
    - `beo_remarks` string, nullable
    - `beo_vendors` BeoVendor[], nullable
      - `id` string, required
      - `name` string, required
      - `role` string, required
      - `contactName` string, nullable
      - `phone` string, nullable
      - `email` string, nullable
      - `notes` string, nullable
    - `onsite_contact_person_id` string, uuid, nullable
    - `beo_version` integer: Incremented by every BEO change.
    - `beo_frozen_version` integer, nullable: Version frozen by the last release.
    - `public_url` string, uri, nullable: Shareable, no-login URL of the public BEO page.
    - `release_number` integer, nullable: Last version sent to the team or client (« v2 »); null before any.
    - `venue_settings` object: The venue's BEO settings.
      - `section_order` string[]
      - `section_titles` object: The venue's own name for a section, by block key (e.g. `catering` → « Traiteur »). A block left out keeps its usual name.
      - `hidden_sections` string[]
      - `detail` string
      - `show_quantities` boolean
      - `standing_instructions` string, nullable
      - `included_equipment` unknown[]
        - unknown
  - `releases` object[]
    - `number` integer
    - `beo_version` integer
    - `released_at` string, date-time
  - `staff` EventStaffMember[]
    - `id` string, uuid
    - `personId` string, uuid, nullable
    - `isPending` boolean: The slot is needed but nobody is assigned yet (`displayName` may then be empty).
    - `displayName` string
    - `role` string, nullable
    - `callTime` string, nullable: Arrival time (HH:MM).
    - `leaveTime` string, nullable: Departure time (HH:MM).
    - `phone` string, nullable
    - `email` string, email, nullable
    - `notes` string, nullable
    - `sortOrder` integer
    - `dayId` string, uuid, nullable: Pins the assignment to a specific event day. null = all days.
  - `contacts` EventContact[]
    - `id` string, uuid
    - `personId` string, uuid, nullable: Linked address-book person, if any.
    - `displayName` string
    - `role` string, nullable
    - `phone` string, nullable
    - `email` string, email, nullable
    - `isOnsite` boolean: Physically present at the venue (vs. reachable remotely).
    - `isPrimary` boolean: The main day-of contact; mirrored to the event's on-site contact.
    - `arrivalTime` string, nullable: Arrival on site (HH:MM).
    - `notes` string, nullable
    - `sortOrder` integer
    - `dayId` string, uuid, nullable: Pins the contact to a specific event day. null = all days.
  - `days` EventDay[]
    - `id` string, uuid, nullable
    - `dayIndex` integer: 0-based position within the event.
    - `dayDate` string, date
    - `setupType` string, nullable: One of: theatre, classroom, u-shape, boardroom, banquet, cocktail, custom.
    - `setupNotes` string, nullable
    - `cateringNotes` string, nullable
    - `technicalNotes` string, nullable
    - `serviceNotes` string, nullable
    - `startTime` string, nullable: The day's own start (`HH:MM`, event time zone). `null` when the event has the same hours every day (the time of `start_date` applies). Read-only here: set with `day_hours` on `PATCH /events/{id}`.
    - `endTime` string, nullable: The day's own end (`HH:MM`); at or before `startTime` = the next morning. `null` like `startTime`.

## Other responses

- `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)
