# Kommunity > Kommunity is a community platform where people discover communities and social events near them — and where organizers run those communities and events in one place. Attendees can explore events in their city, follow communities they care about, RSVP, and get tickets. Organizers get membership, events and RSVPs, ticketing, discussions, monetization, and communications. This file points AI agents and crawlers to the most useful resources on kommunity.com. ## Discover events & communities - [Explore events](https://kommunity.com/explore/events): Browse upcoming social events. Discover things to do and follow what's happening — including events in your city. - [Explore communities](https://kommunity.com/explore/kommunities): Find and join communities around your interests. - [Browse categories](https://kommunity.com/categories): Explore communities and events by category (tech, arts, sports, business, and more). - [Search](https://kommunity.com/search): Search across communities, events, and people. City and interest pages narrow discovery further: `https://kommunity.com/city/{city-slug}` for events in a specific city, and `https://kommunity.com/interests/{interest-slug}` for a specific interest. ## Developers - [API catalog](https://kommunity.com/.well-known/api-catalog): RFC 9727 API catalog (`application/linkset+json`) for automated discovery — links each API to its OpenAPI spec, documentation, and health endpoint. - [Agent authentication (auth.md)](https://kommunity.com/auth.md): How agents authenticate with the Developer API — OAuth 2.0 client credentials, how credentials are provisioned, and how to exchange/use/revoke tokens. OAuth discovery: [authorization server](https://kommunity.com/.well-known/oauth-authorization-server) (RFC 8414), [protected resource](https://kommunity.com/.well-known/oauth-protected-resource) (RFC 9728). - [Public API — reference](https://kommunity.com/docs/public-api.md) ([OpenAPI](https://kommunity.com/docs/api/public-api.openapi.json)): Read-only public endpoints that power discovery — explore events and communities, and read a single community or event. No auth required. - [Developer API — reference](https://kommunity.com/docs/developer-api.md) ([OpenAPI](https://kommunity.com/docs/api/developer-api.openapi.json)): Read-only, community-scoped API for organizers to pull their own community, events, tickets and attendees. OAuth client-credentials auth. - [Webhooks — developer reference](https://kommunity.com/docs/webhooks.md): Machine-readable spec for the self-serve webhooks feature — delivery envelope, all event types, payload schemas, example payloads, signature verification, and delivery semantics. ## Product - [Community platform](https://kommunity.com/community-platform): Overview of running a community on Kommunity. - [Events & RSVP](https://kommunity.com/rsvp): Create events and manage RSVPs. - [Tickets](https://kommunity.com/tickets): Sell and manage event tickets. - [Monetization](https://kommunity.com/monetization): Ways to monetize a community. - [Paid subscriptions](https://kommunity.com/paid-subscription): Membership tiers and paid subscriptions. - [Payouts](https://kommunity.com/payout): How organizers get paid. - [Discussions](https://kommunity.com/discussions): Community discussion feed. - [Communication](https://kommunity.com/communication): Reach members via email and notifications. - [Marketing](https://kommunity.com/marketing): Grow and promote a community. - [Forms](https://kommunity.com/forms): Custom registration and forms. - [Pricing](https://kommunity.com/pricing): Plans and pricing. ## Blog - [Kommunity Blog](https://kommunity.com/blog): Product updates, guides, and community & events stories. - [Introducing Webhooks](https://kommunity.com/blog/introducing-webhooks-send-your-kommunity-events-anywhere): Product update announcing self-serve webhooks. ## Get started - [Sign up](https://kommunity.com/signup): Create a Kommunity account. - [Log in](https://kommunity.com/login): Sign in to Kommunity. --- # Full content The sections below inline the full text of the markdown documents referenced above, per the llms.txt convention for llms-full.txt. --- # Kommunity Developer API — Reference > Read-only, community-scoped API for organizers to pull their own community's data — community, events, tickets, attendees, members and more. Access is via an OAuth 2.0 client-credentials token issued from the community's Developer panel. The token is scoped to one community, so endpoints resolve the community from the token (no community id in the path). All endpoints are `GET`; list endpoints are paginated (`data`, `links`, `meta`). - **OpenAPI spec:** https://kommunity.com/docs/api/developer-api.openapi.json - **Base URL:** `https://api.kommunity.com/api/dev/v1` - **Setup UI:** Organizer panel → your community → **Developer → API clients** - **Health:** `https://api.kommunity.com/api/health-check` --- ## Authentication 1. Create an API client from your community's Developer panel to get a **client id** and **client secret**. 2. Exchange them for an access token: ``` POST https://api.kommunity.com/api/oauth/token Content-Type: application/json { "grant_type": "client_credentials", "client_id": "...", "client_secret": "..." } ``` 3. Send the token on every request: `Authorization: Bearer `. The token only grants read access to the community it was issued for. --- ## Endpoints `{eventKey}` is an event's slug or UUID. ### Community - `GET /community` — the community the token is scoped to. - `GET /community/events` — list the community's events (paginated). - `GET /community/members` — list members (paginated). - `GET /community/products` — subscription tier products. ### Event - `GET /events/{eventKey}` — event detail. - `GET /events/{eventKey}/tickets` — ticket types with sold/remaining counts. - `GET /events/{eventKey}/attendees` — attendees (see below). - `GET /events/{eventKey}/answers` — registration-question answers with RSVP status. - `GET /events/{eventKey}/discount-codes` — discount codes. - `GET /events/{eventKey}/speakers` — speakers. - `GET /events/{eventKey}/sponsors` — sponsors. - `GET /events/{eventKey}/agenda` — tracks and sessions. - `GET /events/{eventKey}/photos` — event photos (paginated). --- ## Attendees response Each item is tagged with `attendance_type` and carries a nested `ticket` or `rsvp` object. An event is either ticketed or RSVP, so all items in a response are the same type. **Email and paid/ticket details are only on `ticket`; RSVP attendees never expose an email.** Ticket rows are one per order ticket. Attendee custom fields (`attendee_company_name`, `attendee_title`) are grouped under `ticket.meta`, not flattened onto `ticket`. ```json { "data": [ { "attendance_type": "ticket", "ticket": { "order_ticket_id": "...", "status": 1, "attendee_name": "Jane Doe", "email": "jane@example.com", "phone_number": null, "pnr": "ABC123", "ticket_name": "General Admission", "paid_price": 25, "currency": "USD", "discount_code": null, "checked_in_at": null, "meta": { "attendee_company_name": "Acme Inc", "attendee_title": "CTO" } }, "created_at": "2026-07-01T10:00:00+00:00" } ], "meta": { }, "links": { } } ``` RSVP event items instead carry `rsvp` (no email): ```json { "attendance_type": "rsvp", "rsvp": { "id": "...", "name": "Bob", "username": "bob", "avatar": "...", "rsvp_status": 1, "guests": 0 }, "created_at": "2026-07-01T10:00:00+00:00" } ``` --- # Kommunity Public API — Reference > Read-only public endpoints that power discovery on kommunity.com: browse events and communities, and read a single community or event. No authentication is required. Responses are JSON; list endpoints use Laravel pagination (`data`, `links`, `meta`). - **OpenAPI spec:** https://kommunity.com/docs/api/public-api.openapi.json - **Base URL:** `https://api.kommunity.com/api/v1` - **Health:** `https://api.kommunity.com/api/health-check` --- ## Discover ### List events — `GET /explore/events` Browse upcoming public events. Powers https://kommunity.com/explore/events. Query params: `page`, `city_id`, `category_id`, `language` (all optional). ``` GET https://api.kommunity.com/api/v1/explore/events?page=1 ``` ### List communities — `GET /explore/communities` Find public communities. Powers https://kommunity.com/explore/kommunities. Query params: `page`, `category_id` (optional). --- ## Detail ### Get a community — `GET /{community_slug}` Public detail for one community. Powers `https://kommunity.com/{community_slug}` (e.g. `/mdisec`). ``` GET https://api.kommunity.com/api/v1/mdisec ``` Returns `data`: `id`, `name`, `slug`, `description`, `avatar`, `cover_photo`, `members_count`, `url`. ### Get an event — `GET /{community_slug}/events/{event_slug}` Public detail for one event. Powers `https://kommunity.com/{community_slug}/events/{event_slug}`. ``` GET https://api.kommunity.com/api/v1/latentshiftai/events/latentshiftai-conference-... ``` Returns `data`: `id`, `name`, `slug`, `detail` (HTML), `start_date`, `end_date` (ISO 8601), `timezone`, `is_online`, `attendance_type` (0 = RSVP, 1 = ticketed), `cover_photo`, `community`, `venue`, `url`. --- ## Notes - This catalog documents the discovery-oriented subset of the public API. The full `/api/v1` surface has many more endpoints (used by the Kommunity web app) that are not part of this public, agent-facing contract. - For organizers who need programmatic access to their own community's data (attendees, tickets, members), see the [Developer API](https://kommunity.com/docs/developer-api.md). --- # Kommunity Webhooks — Developer Reference > Machine-readable reference for integrating with Kommunity webhooks. Kommunity is a community platform for organizers to run communities and events. Webhooks let you receive real-time HTTP notifications when things happen in a community (members joining, RSVPs, ticket sales, wall posts) and send them anywhere — Slack, a CRM, a data warehouse, or your own service. This complements the existing Zapier integration; webhooks are the direct, self-hosted option. - **Human announcement:** https://kommunity.com/blog/introducing-webhooks-send-your-kommunity-events-anywhere - **Setup UI:** Organizer panel → your community → **Developer → Webhooks** tab - **Transport:** HTTPS `POST`, `Content-Type: application/json` --- ## Setup 1. Open the community's **Developer** panel → **Webhooks** tab. 2. Add an endpoint: enter a **Payload URL** you control and select one or more **event types**. 3. Save. Deliveries begin immediately. Scope: - **Community-scoped endpoint** — added from the community Developer panel; receives events across the whole community. - **Event-scoped endpoint** — added from a single event's Developer panel; receives that event's events only. You may register multiple endpoints, each subscribed to a different set of event types. Organizers do not set a secret — signing is handled server-side (see Verification). --- ## Delivery envelope Every delivery is a single JSON `POST`. The body always begins with this envelope, then merges in the event-specific fields as flat top-level keys: | Field | Type | Notes | |---|---|---| | `event_type` | string | The event type slug (e.g. `event.ticket.created`) | | `event_id` | string \| null | Present for event-scoped events; `null` for community/wall events | | `event_slug` | string \| null | Present for event-scoped events; `null` for community/wall events | | `community_slug` | string | The community's slug | | `community_name` | string | The community's display name | | _…event fields…_ | — | Merged in at the top level (not nested) | --- ## Event types Ten event types, grouped by scope. | Event type | Scope | Fires when | Payload group | |---|---|---|---| | `community.joined` | community | A member joins the community | Member | | `community.left` | community | A member leaves the community | Member | | `event.created` | event | A new event is created | Event | | `event.rsvp.join` | event | A user RSVPs "yes" to an event | Member | | `event.rsvp.join_the_waiting_list` | event | A user joins an event's waiting list / approval queue | Member | | `event.left` | event | A user leaves / cancels their RSVP to an event | Member | | `event.ticket.created` | event | A ticket is purchased | Ticket | | `event.ticket.updated` | event | A ticket is updated | Ticket | | `event.ticket.canceled` | event | A ticket is canceled or refunded | Ticket | | `wall.post.created` | community | A new post is added to the community wall | Wall post | --- ## Payload schemas All fields listed below appear at the top level of the JSON body, alongside the envelope fields. ### Member payload Used by: `community.joined`, `community.left`, `event.rsvp.join`, `event.rsvp.join_the_waiting_list`, `event.left`. | Field | Type | Description | |---|---|---| | `id` | string | User id | | `name` | string | User full name | | `username` | string | Kommunity username | | `avatar` | string \| null | Avatar image URL | ### Event payload Used by: `event.created`. | Field | Type | Description | |---|---|---| | `id` | string | Event id | | `name` | string | Event name | | `slug` | string | Event slug | | `detail` | string | Event description as HTML. For RSVP events an RSVP link is appended; for ticket events a ticket link is appended. | | `detail_without_html` | string | Plain-text version of `detail` | | `url` | string | Public event page URL | | `start_date` | string | ISO 8601 | | `end_date` | string | ISO 8601 | ### Ticket payload Used by: `event.ticket.created`, `event.ticket.updated`, `event.ticket.canceled`. | Field | Type | Description | |---|---|---| | `order_ticket_id` | string | Unique id of the sold ticket | | `status` | integer | Ticket status code. `1` = active; higher codes represent canceled/refunded states. On `event.ticket.canceled` this reflects the cancel/refund state. | | `attendee_name` | string | Attendee full name | | `email` | string | Attendee email address | | `phone_number` | string \| null | Attendee phone number | | `pnr` | string | Booking reference (PNR) | | `ticket_name` | string \| null | Name of the ticket type purchased | | `paid_price` | number | Amount actually paid after discounts | | `discount_code` | string \| null | Discount code used at checkout | | `attendee_company_name` | string \| null | Custom registration field: company | | `attendee_title` | string \| null | Custom registration field: job title | ### Wall post payload Used by: `wall.post.created`. | Field | Type | Description | |---|---|---| | `id` | string | Post id | | `content` | null | Always `null` — the post body is not included in the webhook | | `wall` | string | Community id the post belongs to | | `url` | string \| null | Public post URL | | `author_id` | string \| null | Post author user id | | `author_username` | string \| null | Post author username | | `author_name` | string \| null | Post author full name | --- ## Example payloads ### `event.ticket.created` ```json { "event_type": "event.ticket.created", "event_id": "01HXAMPLE...", "event_slug": "annual-conf-2026", "community_slug": "acme", "community_name": "Acme Community", "order_ticket_id": "01HTICKET...", "status": 1, "attendee_name": "Jane Doe", "email": "jane@example.com", "phone_number": null, "pnr": "ABC123", "ticket_name": "General Admission", "paid_price": 25, "discount_code": null, "attendee_company_name": null, "attendee_title": null } ``` ### `community.joined` ```json { "event_type": "community.joined", "event_id": null, "event_slug": null, "community_slug": "acme", "community_name": "Acme Community", "id": "01HUSER...", "name": "Jane Doe", "username": "janedoe", "avatar": "https://api.kommunity.com/api/v1/user/avatar/janedoe" } ``` ### `event.created` ```json { "event_type": "event.created", "event_id": "01HXAMPLE...", "event_slug": "annual-conf-2026", "community_slug": "acme", "community_name": "Acme Community", "id": "01HXAMPLE...", "name": "Annual Conf 2026", "slug": "annual-conf-2026", "detail": "

Join us...

RSVP: https://kommunity.com/acme/events/annual-conf-2026

", "detail_without_html": "Join us... RSVP: https://kommunity.com/acme/events/annual-conf-2026", "url": "https://kommunity.com/acme/events/annual-conf-2026", "start_date": "2026-09-01T18:00:00+00:00", "end_date": "2026-09-01T21:00:00+00:00" } ``` --- ## Verification Every event delivery carries a signature header: ``` Kommunity-Signature-256: ``` - The token is a **fixed value** shown in your Developer panel (per-event for event-scoped endpoints, per-community for community-scoped endpoints). - It is generated when the event/community is created and **never changes**. - Verify by comparing the header on each incoming request against the value from your panel, and reject any request that doesn't match. ```python # pseudo-code EXPECTED = "" # store this in your config def handle(request): if request.headers.get("Kommunity-Signature-256") != EXPECTED: return 401 payload = request.json() # ...process payload... return 200 ``` --- ## Delivery semantics | Property | Value | |---|---| | HTTP method | `POST` | | Content-Type | `application/json` | | Timeout | ~3 seconds per attempt (slower responses count as a failure) | | Retries | Up to 3 attempts with exponential backoff | | Guarantee | At-least-once (design your handler to be idempotent) | | TLS | Required; certificate is verified | Return any `2xx` status to acknowledge receipt. Non-`2xx` responses or timeouts are retried. Every attempt — success or failure, with the response code and the exact JSON sent — is visible under **Recent deliveries** in the Webhooks tab. --- ## Integration checklist 1. Register an endpoint in **Developer → Webhooks** and select the event types you need. 2. Store the `Kommunity-Signature-256` token from the panel in your config. 3. On each request: verify the signature header, then parse the JSON body. 4. Branch on `event_type`; read the envelope + event fields. 5. Return `2xx` quickly; do heavy work asynchronously (retries + ~3s timeout). 6. Make the handler idempotent (dedupe on `order_ticket_id` / `id` as appropriate). 7. Use **Recent deliveries** to inspect failures and replay logic.