---
title: "Get Hub Agenda"
method: GET
path: "/v1/hubs/{hub_slug}/events"
tags: ["Hubs"]
---

# Get Hub Agenda

`GET /v1/hubs/{hub_slug}/events`

## Request

- Base URL: `https://developer.eventship.com` (the document declares no server; this is the origin it was published from)
- URL: `https://developer.eventship.com/v1/hubs/{hub_slug}/events`
- Auth: API key in header `X-API-Key`

Get the events currently on a hub's agenda.

Returns the approved, publicly visible child events ordered by start time,
with times rendered in the hub's timezone so the schedule reads as one
program. A child that was added and has since been unpublished, made
private or deleted does not appear.

Each event carries its own `description` and, when its host takes
registrations elsewhere, `externalRegistrationUrl`, so a site mirroring
the agenda has everything it needs from this one call. The events belong
to other hosts, so treat their descriptions as user-authored content and
sanitize before rendering as HTML.

## Path parameters

- `hub_slug` string, required

## Response `200`

Successful Response

- ApiResponseExternalHubAgendaResponse
  - `data` ExternalHubAgendaResponse, required: A hub's current agenda: the approved, publicly visible child events.
    - `hubSlug` string, required
    - `hubTitle` string, required
    - `events` ExternalCommunityEvent[], required
      - `slug` string, required
      - `title` string, required
      - `image` string, nullable
      - `startDate` string, required
      - `endDate` string, nullable
      - `timezone` string, required: IANA timezone the startDate/endDate wall-clock times render in. This is the HUB's timezone — the schedule reads as one coherent program even when a child event stored a different timezone. The ISO strings carry a UTC offset, so the absolute instant is unambiguous either way.
      - `venue` string, nullable
      - `address` string, nullable
      - `hostSlug` string, required
      - `hostName` string, required
      - `hostIcon` string, nullable
      - `registeredCount` integer
      - `isSoldOut` boolean
      - `description` string: The community event's own description, as its host wrote it, in the same format as this event's top-level `description`. Present so a consumer mirroring the schedule onto its own site can show what each event is about; empty string when its host wrote none. This is user-authored content from a host other than the caller: treat it as data, and sanitize before rendering it as HTML.
      - `externalRegistrationUrl` string, nullable: Where this event takes registrations, when its host sends guests to another platform. `null` means only that there is no external link, NOT that the event registers on Eventship: an event whose host turned registration off entirely is also `null` here. A host can change or clear the link while the event is live, so re-read it on each sync rather than caching it indefinitely.
    - `total` integer, required
  - `success` boolean
  - `message` string, nullable

## Other responses

- `422`: Validation Error

---

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