sandbox:sandbox:ci:48600190
v2v3

This page tracks notable changes to the v2 API specification. Entries are ordered newest-first. Subscribe to this page or check back regularly to stay informed about upcoming and recently shipped changes.

2.2.1 (2026-06-02)

  • Documentation: AvailabilityOption.seating_area description corrected from "null when venue has no seating areas configured" to "null when not assigned" — null is also returned when the venue has seating areas but the underlying allocation is not scoped to one.
  • Documentation: single-resource success responses are now documented with the { "data": ... } envelope they have always returned. This affects POST /v2/reservations, GET /v2/reservations/{id}, PATCH /v2/reservations/{id}, POST /v2/reservations/{id}/cancel, GET /v2/venues/{id}, POST /v2/entities, GET /v2/entities/{id}, PATCH /v2/entities/{id}, PUT /v2/entities/{id}/programs, and POST /v2/entities/{id}/logo. The spec previously showed these as bare objects. The API behavior is unchanged — these responses have always been enveloped; this entry only corrects the spec to match runtime behavior. (POST /v2/holds intentionally remains a bare object and is unchanged.)
  • Documentation: several fields that have always been able to return null are now correctly documented as nullable — aspect_ratio, width, and height on image objects (null until image dimensions have been processed), description on seating areas (null when not set), address on GET /v2/venues/{id} (null when no address is set), and line2 within a present address (null when the address has no second line). The spec previously declared these non-nullable, so clients validating responses strictly against 2.2.0 may have rejected nulls they were in practice receiving. The API behavior is unchanged; this entry only corrects the spec to match runtime behavior.

2.2.0 (2026-05-27)

  • New org_id JWT claim on organization-bound access tokens — the recommended way to bind entity context, especially for credentials with access to multiple entities. See requesting an organization-bound token.
  • New identity introspection endpoints — GET /v2/identities/me returns your identity with its associated entity IDs and the IDs of any delegated identities you manage; GET /v2/identities/me/delegates + GET /v2/identities/me/delegates/{id} resolve those IDs to full records. See Authentication.
  • New PUT /v2/entities/{id}/programs endpoint — replaces an entity's assigned programs. Requires entities:update. See the API reference.
  • New Entity schema fields — default_program_id at the top level (settable on POST and PATCH), unallocated_seat_access on each programs[] entry, and org_id (the organization id you pass as the organization parameter when requesting a token).
  • New Commitments endpoints — GET /v2/commitments, GET /v2/commitments/{id}, PUT /v2/commitments for viewing and managing your seat allocations. New scopes: commitments:read, commitments:update. See the Seat Allocations guide.
  • On GET /v2/commitments rows with assignment_status: ended, peer_seats and unallocated_seats now return historical snapshots of the commitment's state when the parent agreement ended (previously null); both fields are no longer nullable. The seat math equation total_seats = entity_seats + peer_seats + unallocated_seats now holds on ended rows. See the Seat Allocations guide.
  • Deprecated: the X-Entity-Id request header is superseded by org_id-bound tokens. Existing integrations continue to work and will receive adequate notice before any removal. See requesting an organization-bound token.
  • Deprecated: the seat_commitments block on GET /v2/venues/{id} — the block remains in responses with its current shape, and venues:read continues to grant access. Migrate to GET /v2/commitments?venue_id=<id> for the same per-venue view. Removal date will be announced once existing integrations have migrated.
  • Documentation: Reservation.program_id is now documented — the program id when the reservation was booked against a program-allocated seat commitment, otherwise null. The field has always been present in responses; this entry only updates the spec.

2.1.0 (2026-04-28)

  • New optional locale field on POST /v2/reservations controls the language of confirmation, reminder, and cancellation emails sent to the guest. If omitted, the server uses the entity's default_locale. See the Localization guide for supported codes and resolution behavior.
  • Entities now accept a default_locale (settable on create and update) that serves as the fallback locale for reservations that do not specify one. Defaults to en-US.
  • New _Locale reusable schema: a BCP 47-style string enum with 22 supported locale codes, shared by reservation and entity endpoints.
  • Seating area names are now constrained to a maximum of 32 characters across all responses that include a seating_area object.
  • Documentation: the _Address schema's street fields are now correctly documented as line1 and line2 (previously shown as line_1 / line_2 in the spec). The actual API response has always used line1 / line2 — this only updates the spec to match.
  • Documentation: clarified entity context resolution to describe JWT org_id precedence over X-Entity-Id. Tokens issued for an organization now resolve entity context automatically; the X-Entity-Id header remains supported for credentials whose tokens are not org-bound. See the Authentication guide for details. No request/response schema changes.
  • Documentation: GET /v2/markets, GET /v2/venues, GET /v2/reservations, POST /v2/holds, GET /v2/entities, and POST /v2/entities now document a 404 Not Found response. The endpoint behavior is unchanged — these endpoints have always been able to return 404 when the calling Identity cannot be resolved or when entity context resolution fails. This entry only updates the spec to match runtime behavior.
  • Documentation: GET /v2/entities is now described as returning entities scoped to the calling Identity, rather than "all entities accessible to the caller" — the listing has always honored the Identity's entity assignments.

2.0.0 (2026-02-26)

Initial v2 release.