Discourse Calendar - Events API

The Discourse Calendar - Events API from Discourse — 2 operation(s) for discourse calendar - events.

Operations 2

GET /discourse-post-event/events.json List calendar events #
GET /discourse-post-event/events.ics Export calendar events in iCalendar format #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/discourse:discourse-discourse-calendar-events-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

discourse-discourse-calendar-events-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Discourse API Documentation Discourse Calendar - Events API
  x-logo:
    url: https://docs.discourse.org/logo.svg
  version: latest
  description: This page contains the documentation on how to use Discourse through API calls.
  license:
    name: MIT
    url: https://docs.discourse.org/LICENSE.txt
servers:
- url: https://{defaultHost}
  variables:
    defaultHost:
      default: discourse.example.com
tags:
- name: Discourse Calendar - Events
paths:
  /discourse-post-event/events.json:
    get:
      summary: List calendar events
      tags:
      - Discourse Calendar - Events
      operationId: listEvents
      parameters:
      - name: include_details
        in: query
        required: false
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
        description: 'Include detailed event information (creator, invitees, stats,

          etc.)'
      - name: category_id
        in: query
        required: false
        schema:
          type: integer
        description: Filter events by category ID
      - name: include_subcategories
        in: query
        required: false
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
        description: Include events from subcategories when filtering by category
      - name: post_id
        in: query
        required: false
        schema:
          type: integer
        description: Filter to events associated with a specific post ID
      - name: attending_user
        in: query
        required: false
        schema:
          type: string
        description: 'Filter to events where the specified user (username) has RSVP''d

          as going'
      - name: before
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Return events starting before this date/time (ISO 8601 format)
      - name: after
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Return events starting after this date/time (ISO 8601 format)
      - name: order
        in: query
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
        description: 'Sort order for events by start date (default: asc)'
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 200
        description: 'Maximum number of events to return (default: 200)'
      responses:
        '200':
          description: success response (detailed)
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                properties:
                  events:
                    type: array
                    items:
                      type: object
                      additionalProperties: false
                      properties:
                        id:
                          type: integer
                        category_id:
                          type:
                          - integer
                          - 'null'
                        name:
                          type:
                          - string
                          - 'null'
                        recurrence:
                          type:
                          - string
                          - 'null'
                        recurrence_until:
                          type:
                          - string
                          - 'null'
                          format: date-time
                        starts_at:
                          type:
                          - string
                          - 'null'
                          format: date-time
                        ends_at:
                          type:
                          - string
                          - 'null'
                          format: date-time
                        rrule:
                          type: string
                        show_local_time:
                          type: boolean
                        timezone:
                          type:
                          - string
                          - 'null'
                        duration:
                          type: string
                          pattern: ^\d{2}:\d{2}:\d{2}$
                        all_day:
                          type: boolean
                        post:
                          type: object
                          additionalProperties: false
                          properties:
                            id:
                              type: integer
                            post_number:
                              type: integer
                            url:
                              type: string
                            category_slug:
                              type: string
                            topic:
                              type: object
                              additionalProperties: false
                              properties:
                                id:
                                  type: integer
                                title:
                                  type: string
                                tags:
                                  type: array
                                  items:
                                    type: string
                                tags_descriptions:
                                  type: object
                              required:
                              - id
                              - title
                              - tags
                              - tags_descriptions
                          required:
                          - id
                          - post_number
                          - url
                          - category_slug
                          - topic
                        occurrences:
                          type: array
                          items:
                            type: object
                            additionalProperties: false
                            properties:
                              starts_at:
                                type:
                                - string
                                - 'null'
                              ends_at:
                                type:
                                - string
                                - 'null'
                            required:
                            - starts_at
                            - ends_at
                        can_act_on_discourse_post_event:
                          type:
                          - boolean
                          - 'null'
                        can_update_attendance:
                          type:
                          - boolean
                          - 'null'
                        creator:
                          type: object
                          additionalProperties: false
                          properties:
                            id:
                              type: integer
                            username:
                              type: string
                            name:
                              type:
                              - string
                              - 'null'
                            avatar_template:
                              type: string
                          required:
                          - id
                          - username
                          - avatar_template
                        custom_fields:
                          type:
                          - object
                          - 'null'
                        is_closed:
                          type: boolean
                        is_expired:
                          type: boolean
                        is_ongoing:
                          type: boolean
                        is_private:
                          type: boolean
                        is_public:
                          type: boolean
                        is_standalone:
                          type: boolean
                        minimal:
                          type:
                          - boolean
                          - 'null'
                        raw_invitees:
                          type:
                          - array
                          - 'null'
                          items:
                            type: string
                        reminders:
                          type: array
                          items:
                            type: object
                            properties:
                              value:
                                type: integer
                              unit:
                                type: string
                              period:
                                type: string
                                enum:
                                - before
                                - after
                              type:
                                type: string
                            required:
                            - value
                            - unit
                            - period
                            - type
                        sample_invitees:
                          type: array
                          items:
                            type: object
                        should_display_invitees:
                          type: boolean
                        stats:
                          type: object
                        status:
                          type: string
                          enum:
                          - public
                          - private
                          - standalone
                        url:
                          type: string
                        description:
                          type:
                          - string
                          - 'null'
                        location:
                          type:
                          - string
                          - 'null'
                        watching_invitee:
                          type:
                          - object
                          - 'null'
                        chat_enabled:
                          type:
                          - boolean
                          - 'null'
                        channel:
                          type: object
                        max_attendees:
                          type:
                          - integer
                          - 'null'
                        at_capacity:
                          type: boolean
                      required:
                      - id
                      - category_id
                      - starts_at
                      - ends_at
                      - show_local_time
                      - timezone
                      - can_act_on_discourse_post_event
                      - can_update_attendance
                      - is_closed
                      - is_expired
                      - is_ongoing
                      - is_private
                      - is_public
                      - is_standalone
                      - should_display_invitees
                      - status
                      - at_capacity
                      - post
                      - occurrences
                required:
                - events
  /discourse-post-event/events.ics:
    get:
      summary: Export calendar events in iCalendar format
      tags:
      - Discourse Calendar - Events
      operationId: exportEventsICS
      parameters:
      - name: category_id
        in: query
        required: false
        schema:
          type: integer
        description: Filter events by category ID
      - name: include_subcategories
        in: query
        required: false
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
        description: Include events from subcategories when filtering by category
      - name: attending_user
        in: query
        required: false
        schema:
          type: string
        description: 'Filter to events where the specified user (username) has RSVP''d

          as going'
      - name: before
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Return events starting before this date/time (ISO 8601 format)
      - name: after
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Return events starting after this date/time (ISO 8601 format)
      - name: order
        in: query
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
        description: 'Sort order for events by start date (default: asc)'
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 200
        description: 'Maximum number of events to return (default: 200)'
      responses:
        '200':
          description: iCalendar file
          content:
            text/calendar:
              schema:
                type: string
                format: binary