---
title: "GET /api/feed/v1/events/{eventId}/ga-history"
method: GET
path: "/api/feed/v1/events/{eventId}/ga-history"
tags: ["Feed"]
---

# GET /api/feed/v1/events/{eventId}/ga-history

`GET /api/feed/v1/events/{eventId}/ga-history`

## Request

- Base URL: `https://api.findticker.com`
- URL: `https://api.findticker.com/api/feed/v1/events/{eventId}/ga-history`
- Auth: HTTP bearer

## Path parameters

- `eventId` string, required

## Query parameters

- `section` string
- `occurrence` integer, nullable
- `cursor` string

## Response `200`

How many tickets each general admission section of one event had open over time. General admission sections have quantities, not seats, so GET /v1/events/{eventId}/seat-history never shows them. sections summarizes each one: the count after its newest change, its peak and when, the sums of its observed increases and decreases, its first observation, its newest change and when it left the section list. Name one with section to add its exact points, oldest first, 1000 a page. The sums are observed changes: a return or a re-release of the same ticket adds again, so they are not a count of distinct tickets and do not say how many were bought, and a section's capacity is not a number put on sale. Nothing before coverage_start is known. Runs 15 to 20 minutes behind GET /v1/events/{eventId}/sections/live, which is the read for what is open now. Costs ONE UNIT a call or a page.

- FeedEventGaHistory
  - `event_id` string, nullable, required
  - `coverage_start` string, nullable, required: When observation of this event's general admission sections began, UTC. Nothing before it is in any figure. Null when none is held.
  - `sections` FeedGaSection[], required: Every general admission section with history. Empty on a page after the first, which carries its points alone.
    - `section` string, required: The general admission section's code.
    - `occurrence` integer, required: 0 unless the event lists the code more than once as general admission. section and occurrence together are the section's key; a renamed section starts a new key.
    - `open_count` integer, required: Tickets open after the section's newest change here. This history runs 15 to 20 minutes behind GET /v1/events/{eventId}/sections/live, which is the read for what is open now.
    - `peak_open_count` integer, required: The most tickets seen open at one time.
    - `peak_at` string, required: The first time the peak was seen, UTC.
    - `observed_additions` integer, required: Sum of every observed increase of the open count. A return or a re-release of the same ticket adds again, and a ticket held for a moment and put back adds each time, so it can be far larger than the number of distinct tickets.
    - `observed_removals` integer, required: Sum of every observed decrease. A ticket bought, held or withdrawn counts the same, so it does not say how many were bought.
    - `changes` integer, required: How many times the count was seen to change after the section's first observation.
    - `first_observed_at` string, required: The section's first observation, UTC.
    - `last_changed_at` string, nullable, required: The section's newest change, UTC. Null when it has not changed since its first observation.
    - `removed_at` string, nullable, required: When the section left the event's section list, UTC. Null while it is listed.
  - `points` FeedGaPoint[], nullable, required: The exact open count of the section named by section and occurrence, oldest first, one point per observed change. Null when no section was named.
    - `at` string, required: The observation that saw this count, UTC.
    - `previous_at` string, nullable, required: The observation before it; the change happened between the two. Null on the first point.
    - `open_count` integer, required
    - `delta` integer, required: The change from the previous count. 0 on the first point.
    - `kind` 'first' | 'change' | 'layout', required: first: the section's first observation. change: the open count moved. layout: the section list changed, so the section entered, left or was renamed; never counted in observed_additions or observed_removals.
    - `removed` boolean, required: True on the point where the section left the list, at 0.
  - `meta` object, required
    - `sections` integer, required
    - `covered` boolean, required: False when this event has no live seat reading at all. The event exists and the call still costs one unit.
    - `next_cursor` string, nullable, required: Pass as cursor, with the same section, for the next, newer page of points. Each page costs one unit.
    - `units_charged` integer, required

## Other responses

- `400`: Validation error, or a cursor this route did not mint.
- `401`: Missing or invalid API key.
- `403`: The key's account is not entitled to the feed, or the account or the address it calls from is blocked (`reason` `blocked`).
- `404`: No such event, or section names no general admission section of it.
- `429`: The per-minute burst ceiling or the unit budget for the current UTC date is used up.
- `500`: Internal Server Error.

---

[API](https://skmtc.dev/findticker/apis/ticker-api.md) · [All operations](https://skmtc.dev/findticker/apis/ticker-api/llms.txt) · [OpenAPI document](https://skmtc.dev/findticker/apis/ticker-api/revisions/b6229ca924f4?raw)
