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

> ## Agent Instructions
> Base URL: https://api.eventory.ai. Send your API key in the apikey header. Market Data and Live Availability calls cost credits, pings included; GET /usage is free, so use it to test a key. Costs per endpoint: https://eventory.ai/docs/credits-and-access.md

# Notification message format

> The notification envelope, the changes map, and the section shapes.

Every message is one JSON text frame with this envelope:

```json theme={null}
{
  "timestamp": "2026-04-27T10:00:00Z",
  "website": "ticketmaster",
  "version": "1.0",
  "event_id": "0200642CF18CAA24",
  "region": "US",
  "changes": { "stock_increase": ["Floor GA", "Section 101"] },
  "sections_type": "SeatMapSections",
  "sections": { "…": "…" },
  "stock": 42,
  "event_infos": { "…": "…" }
}
```

**timestamp** `string` *required*

When the notification was generated. RFC 3339.

**website** `string` *required*

Source platform identifier, usually the `website` of the watchlist item; some
platforms send a more specific value. Match messages to items on `event_id`, not
`website`.

**version** `string` *required*

Notification schema version.

**event\_id** `string` *required*

Event identifier on the platform.

**region** `string` *required*

Region code, for example `US` or `UK`.

**changes** `object` *required*

Map of change type to the list of section names affected. See below.

**sections\_type** `string` *required*

`OfferSections`, `SeatMapSections`, or `EventDiscovery` for discovery monitors.
Determines the shape of `sections`.

**sections** `object` *required*

Current section data. See [Section types](/docs/guides/section-types.md).

**stock** `number`

Total available stock across all sections. When the platform does not report counts
this is usually `0` rather than omitted, so `0` does not always mean sold out.

**event\_infos** `object`

Event metadata. Omitted entirely when the platform does not expose it. Check for
presence before reading any sub-field.

Messages can carry fields not listed on this page, in the envelope and in `sections`.
Ignore fields you do not recognise.

## `changes`

`changes` is an object, not an array. Keys are change types; values are the section
names that changed in that way.

```json theme={null}
"changes": {
  "stock_increase": ["Floor GA", "Section 101"],
  "price_decrease": ["Section 207"]
}
```

| Change type | Meaning |
| - | - |
| `stock_increase` | Tickets became available in the listed sections. The default `change_type` of a watchlist item. |
| `stock_decrease` | Stock in the listed sections went down, or the sections sold out. |
| `price_decrease` | The price in the listed sections went down. |
| `price_increase` | The price in the listed sections went up. |

A message is only delivered if `changes` contains the `change_type` of at least one
active watchlist item for the event. The watchlist accepts only the values in this
table for `change_type`, or `null`; anything else is rejected with `400`.

## `event_infos`

```json theme={null}
"event_infos": {
  "event_name": "Artist World Tour",
  "event_date": "2026-06-15T20:00:00Z",
  "event_time": "20:00",
  "event_venue": "Madison Square Garden",
  "event_venue_url": "https://…",
  "event_artist_name": "Artist",
  "event_location": "New York, NY",
  "event_url": "https://…",
  "event_image": "https://…"
}
```

| Field | Description |
| - | - |
| `event_name` | Event title. |
| `event_date` | Start date and time, RFC 3339. When the platform publishes only a date, the time is `00:00:00Z`. When no date is known, the value is `0001-01-01T00:00:00Z`. |
| `event_time` | Human-readable time string. |
| `event_venue` | Venue name. |
| `event_venue_url` | Link to the venue page. |
| `event_artist_name` | Performer or artist. |
| `event_location` | City, region, or full address. |
| `event_url` | Direct link to the event on the platform. |
| `event_image` | Cover image URL. |
| `event_url_short` | Optional. Short link to `event_url`, when one is available. |
| `event_venue_url_short` | Optional. Short link to `event_venue_url`, when one is available. |

Any sub-field except `event_date` may be an empty string depending on the platform.

## `sections`

The shape depends on `sections_type` and is shared with the Live Availability API, so
one parser serves both. The full field reference is in
[Section types](/docs/guides/section-types.md).

**`OfferSections`** is a flat map keyed by offer id, used by platforms that sell
simple tiers:

```json theme={null}
"sections": {
  "floor-ga": {
    "offer_name": "Floor GA",
    "available": true,
    "price": 129.5,
    "price_label": "$129.50",
    "stock": 12,
    "atc": "https://…"
  }
}
```

**`SeatMapSections`** is a nested map, used by platforms with a full venue map such as
Ticketmaster and AXS. Each top-level key is a group; inside it, `stock` is the group
total and every other key is an entry. The grouping depends on the platform:
Ticketmaster groups sections by offer, SeatGeek groups rows by section. The names in
`changes` are the inner keys, so read `section` and `offer_name` from the entry:

```json theme={null}
"sections": {
  "Standard": {
    "stock": 5,
    "101": {
      "offer_name": "Standard",
      "price": 95.0,
      "price_without_fees": 79.0,
      "price_label": "$95.00",
      "section": "101",
      "inventory_type": "primary",
      "is_active": true,
      "stock": 5,
      "stock_not_available": 2,
      "atc": "https://…",
      "longest_adjacent_seats": 3,
      "general_admission": false
    }
  }
}
```

On the stream, an entry with an `atc` link can also carry `atc_short`, a short link to
the same URL.

**`EventDiscovery`** is sent by
[discovery monitors](/docs/guides/watchlist-platforms.md#discovery-monitors). `event_id` is the
artist or venue URL on your watchlist, and `sections` is keyed by the id of each newly
announced event, with that event's details (`event_name`, `date`, `venue_name`, `city`,
`url`, `image_url`). `changes.stock_increase` lists the same ids.

Dispatch on `sections_type` with a `switch` so each handler receives the shape it
expects.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.