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

# Get an event

`GET /events/{id}`

## Request

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

The event with its booked rooms (`spaces`), its slots, the company, venue and contact both nested (`companies`, `locations`, `people`) and flat (`company_name`, `venue_name`, `contact_*`), and the public BEO link. Amounts are `null` without `reports.view` or `quotes.manage`. **Role permission:** none (any member).

## Response `200`

The event.

- EventDetail: The stored event, as returned by `POST /events`, `PATCH /events/{id}` and the conversion of a lead. Every column of the event is returned except the internal search fields, the embedding and the public tokens; the main ones are listed. Amounts are `null` without `reports.view` or `quotes.manage`.
  - `id` string, uuid
  - `account_id` string, uuid
  - `event_number` integer, nullable
  - `internal_reference` string, nullable
  - `title` string
  - `description` string, nullable
  - `type` string, nullable
  - `category` string, nullable
  - `status` 'option' | 'confirmed' | 'lost' | 'cancelled': `option` = pending / tentative, `confirmed` = booked, `lost` = did not convert, `cancelled` = cancelled after booking.
  - `status_changed_at` string, date-time, nullable
  - `stage_id` string, uuid, nullable
  - `stage_changed_at` string, date-time, nullable
  - `pax` integer, nullable
  - `start_date` string, date-time
  - `end_date` string, date-time, nullable
  - `selected_dates` string[], nullable
  - `day_hours` DayHoursEntry[], nullable: Per-day hours of a multi-day event, by date: one entry per day when the days have different hours, `null` when every day has the same hours (the time of `start_date` to the time of `end_date`) or for a one-day event.
    - `date` string, date, required
    - `start` string, required
    - `end` string, required
  - `timezone` string, nullable
  - `is_virtual` boolean, nullable
  - `flexible` boolean, nullable
  - `language` string, nullable
  - `venue_id` string, uuid, nullable: The venue (internally `location_id`).
  - `location` string, nullable: Free-text place (legacy), not the venue.
  - `address` string, nullable
  - `city` string, nullable
  - `postal_code` string, nullable
  - `country` string, nullable
  - `source` string, nullable
  - `source_lead_id` string, uuid, nullable: Primary request (lead) of the event.
  - `budget` number, nullable
  - `expected_revenue` number, nullable
  - `currency` string, nullable
  - `confirmed_amount` number, nullable
  - `confirmed_amount_excl_tax` number, nullable
  - `cancellation_fee_excl_tax` number, nullable
  - `confirmed_at` string, date-time, nullable
  - `loss_reason` string, nullable
  - `loss_reason_detail` string, nullable
  - `cancellation_reason` string, nullable
  - `cancellation_reason_detail` string, nullable
  - `tags` string[], nullable
  - `notes` string, nullable
  - `company_id` string, uuid, nullable
  - `contact_person_id` string, uuid, nullable
  - `assigned_to_account_id` string, uuid, nullable
  - `created_by` string, uuid, nullable
  - `billing_company_id` string, uuid, nullable: Third-party company the quotes are billed to (instead of the client).
  - `quote_to_platform` boolean, nullable: The quotes are billed to the booking platform of `source`.
  - `event_group_id` string, uuid, nullable
  - `external_link` 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
  - `schedule` object[], nullable: BEO program lines (see `BeoUpdate.schedule`).
  - `beo_public_url` string, uri, nullable: Shareable, no-login URL of the public BEO page.
  - `archived_at` string, date-time, nullable
  - `archived_by` string, uuid, nullable
  - `created_at` string, date-time, nullable
  - `updated_at` string, date-time, nullable
  - `company_name` string, nullable
  - `venue_name` string, nullable
  - `contact_first_name` string, nullable
  - `contact_last_name` string, nullable
  - `contact_email` string, nullable
  - `contact_phone` string, nullable
  - `companies` object, nullable
    - `id` string, uuid
    - `name` string
    - `website` string, nullable
    - `phone` string, nullable
    - `registration_number` string, nullable
    - `vat_number` string, nullable
  - `people` object, nullable: The booking contact.
    - `id` string, uuid
    - `first_name` string, nullable
    - `last_name` string, nullable
    - `email` string, nullable
    - `phone` string, nullable
  - `locations` object, nullable: The venue.
    - `id` string, uuid
    - `name` string
    - `address` string, nullable
    - `timezone` string, nullable
    - `color` string, nullable
  - `spaces` object[]: Spaces of the venue the event books; empty = the whole venue.
    - `id` string, uuid
    - `name` string
    - `capacity` integer, nullable
  - `slots` SpaceSlot[]: When the event uses its spaces, day by day. A space without slot is booked every day of the event, all day.
    - `id` string, uuid
    - `space_id` string, uuid
    - `space_name` string
    - `day_date` string, date
    - `start_time` string, nullable
    - `end_time` string, nullable
    - `label` string, nullable
    - `quote_item_id` string, uuid, nullable: Quote line the slot was booked from, if any.

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