HPSF Events API

The stable Events Calendar v1 REST API on hpsf.io, serving HPSF's conference and event calendar as JSON - HPSFcon, SC and CppCon listings with start and end dates, timezone details, cost, website, featured image, venue, organizer, categories and tags. Read access is anonymous and keyless; 30 operations are declared across events, venues, organizers, categories and tags, with the write half requiring WordPress Application Passwords. The contract is published live by the host at /wp-json/tribe/events/v1/doc.

Operations 30

GET /doc
GET /events
GET /events/{id}
POST /events/{id}
DELETE /events/{id}
GET /events/by-slug/{slug}
POST /events/by-slug/{slug}
DELETE /events/by-slug/{slug}
GET /venues
GET /venues/{id}
POST /venues/{id}
DELETE /venues/{id}
GET /venues/by-slug/{slug}
POST /venues/by-slug/{slug}
DELETE /venues/by-slug/{slug}
GET /organizers
GET /organizers/{id}
POST /organizers/{id}
DELETE /organizers/{id}
GET /organizers/by-slug/{slug}
POST /organizers/by-slug/{slug}
DELETE /organizers/by-slug/{slug}
GET /categories
GET /categories/{id}
POST /categories/{id}
DELETE /categories/{id}
GET /tags
GET /tags/{id}
POST /tags/{id}
DELETE /tags/{id}

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/hpsf-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

hpsf-events-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: 1.0.0
  title: The Events Calendar REST API
  description: The Events Calendar REST API allows accessing upcoming events information easily and conveniently.
components:
  schemas:
    ImageSize:
      type: object
      properties:
        width:
          type: integer
          description: The image width in pixels in the specified size
        height:
          type: integer
          description: The image height in pixels in the specified size
        mime-type:
          type: string
          description: The image mime-type
        url:
          type: string
          format: uri
          description: The link to the image in the specified size on the site
    CostDetails:
      type: object
      properties:
        currency_symbol:
          type: string
          description: The cost currency symbol
        'currency_position ':
          type: string
          description: The position of the currency symbol in the cost string
          enum:
          - prefix
          - postfix
        values:
          type: array
          items:
            type: integer
          description: A sorted array of all the numeric values for the cost
    Term:
      type: object
      properties:
        id:
          type: integer
          description: The WordPress term ID
        name:
          type: string
          description: The term name
        slug:
          type: string
          description: The term slug
        taxonomy:
          type: string
          description: The taxonomy the term belongs to
        description:
          type: string
          description: The term description
        parent:
          type: integer
          description: The term parent term if any
        count:
          type: integer
          description: The number of posts associated with the term
        url:
          type: string
          description: The URL to the term archive page
        urls:
          type: array
          items:
            type: string
          description: A list of links to the term own, archive and parent REST URL
    Image:
      type: object
      properties:
        url:
          type: string
          format: uri
          description: The URL to the full size version of the image
        id:
          type: integer
          description: The image WordPress post ID
        extension:
          type: string
          description: The image file extension
        width:
          type: integer
          description: The image natural width in pixels
        height:
          type: integer
          description: The image natural height in pixels
        sizes:
          type: array
          description: The details about each size available for the image
          items:
            $ref: '#/components/schemas/ImageSize'
    DateDetails:
      type: object
      properties:
        year:
          type: integer
          description: The date year
        month:
          type: integer
          description: The date month
        day:
          type: integer
          description: The date day
        hour:
          type: integer
          description: The date hour
        minutes:
          type: integer
          description: The date minutes
        seconds:
          type: integer
          description: The date seconds
    Event:
      type: object
      properties:
        id:
          type: integer
          description: The event WordPress post ID
        global_id:
          type: string
          description: The event ID used to globally identify in Event Aggregator
        global_id_lineage:
          type: array
          items:
            type: string
          description: An Array containing the lineage of where this event comes from, this should not change after the event
            is created.
        author:
          type: integer
          description: The event author WordPress post ID
        date:
          type: string
          description: The event creation date in the site time zone
        date_utc:
          type: string
          description: The event creation date in UTC time
        modified:
          type: string
          description: The event last modification date in the site time zone
        modified_utc:
          type: string
          description: The event last modification date in UTC time
        status:
          type: string
          description: The event status
        url:
          type: string
          description: The URL to the event page
        rest_url:
          type: string
          description: The TEC REST API link to fetch this event
        title:
          type: string
          description: The event name
        description:
          type: string
          description: The event long description
        excerpt:
          type: string
          description: The event short description
        slug:
          type: string
          description: The event slug
        image:
          type: object
          description: The event featured image details if set
          $ref: '#/components/schemas/Image'
        all_day:
          type: boolean
          description: Whether or not this event is an all day Event
        start_date:
          type: string
          description: The event start date in the event or site time zone
        start_date_details:
          type: array
          description: An array of each component of the event start date
          items:
            $ref: '#/components/schemas/DateDetails'
        end_date:
          type: string
          description: The event end date in the event or site time zone
        end_date_details:
          type: array
          description: An array of each component of the event end date
          items:
            $ref: '#/components/schemas/DateDetails'
        utc_start_date:
          type: string
          description: The event start date in UTC time
        utc_start_date_details:
          type: array
          description: An array of each component of the event start date in UTC time
          items:
            $ref: '#/components/schemas/DateDetails'
        utc_end_date:
          type: string
          description: The event end date in UTC time
        utc_end_date_details:
          type: array
          description: An array of each component of the event end date in UTC time
          items:
            $ref: '#/components/schemas/DateDetails'
        timezone:
          type: string
          description: The event time zone string
        timezone_abbr:
          type: string
          description: The abbreviated event time zone string
        cost:
          type: string
          description: The event cost including the currency symbol
        cost_details:
          type: array
          description: The event cost details
          items:
            $ref: '#/components/schemas/CostDetails'
        website:
          type: string
          description: The event website URL
        show_map:
          type: boolean
          description: Whether the map should be shown for the event or not
        show_map_link:
          type: boolean
          description: Whether the map link should be shown for the event or not
        hide_from_listings:
          type: boolean
          description: Whether an event should be hidden from the calendar view or not
        sticky:
          type: boolean
          description: Whether an event is sticky in the calendar view or not
        featured:
          type: boolean
          description: Whether the event is featured in the calendar or not
        categories:
          type: array
          description: The event categories
          items:
            $ref: '#/components/schemas/Term'
        tags:
          type: array
          description: The event tags
          items:
            $ref: '#/components/schemas/Term'
        venue:
          type: object
          description: The event venue
          $ref: '#/components/schemas/Venue'
        organizer:
          type: array
          description: The event organizers
          items:
            $ref: '#/components/schemas/Organizer'
    Venue:
      type: object
      properties:
        id:
          type: integer
          description: The venue WordPress post ID
        global_id:
          type: string
          description: The venue ID used to globally identify in Event Aggregator
        global_id_lineage:
          type: array
          items:
            type: string
          description: An Array containing the lineage of where this organizer comes from, this should not change after the
            organizer is created.
        author:
          type: integer
          description: The venue author WordPress post ID
        date:
          type: string
          description: The venue creation date in the site time zone
        date_utc:
          type: string
          description: The venue creation date in UTC time
        modified:
          type: string
          description: The venue last modification date in the site time zone
        modified_utc:
          type: string
          description: The venue last modification date in UTC time
        status:
          type: string
          description: The venue status
        url:
          type: string
          description: The URL to the venue page
        venue:
          type: string
          description: The venue name
        description:
          type: string
          description: The venue long description
        excerpt:
          type: string
          description: The venue short description
        slug:
          type: string
          description: The venue slug
        image:
          type: string
          description: The event featured image details if set
          $ref: '#/components/schemas/Image'
        show_map:
          type: boolean
          description: Whether the map should be shown for the venue or not
        show_map_link:
          type: boolean
          description: Whether the map link should be shown for the venue or not
        address:
          type: string
          description: The venue address
        city:
          type: string
          description: The venue city
        country:
          type: string
          description: The venue country
        province:
          type: string
          description: The venue province
        state:
          type: string
          description: The venue state
        zip:
          type: string
          description: The venue ZIP code
        phone:
          type: string
          description: The venue phone number
        website:
          type: string
          description: The venue website URL
        stateprovince:
          type: string
          description: The venue state or province
        geo_lat:
          type: number
          format: double
          description: The venue geo latitude
        geo_lng:
          type: number
          format: double
          description: The venue geo longitude
    Organizer:
      type: object
      properties:
        id:
          type: integer
          description: The organizer WordPress post ID
        global_id:
          type: string
          description: The organizer ID used to globally identify in Event Aggregator
        global_id_lineage:
          type: array
          items:
            type: string
          description: An Array containing the lineage of where this organizer comes from, this should not change after the
            organizer is created.
        author:
          type: integer
          description: The organizer author WordPress post ID
        date:
          type: string
          description: The organizer creation date in the site time zone
        date_utc:
          type: string
          description: The organizer creation date in UTC time
        modified:
          type: string
          description: The organizer last modification date in the site time zone
        modified_utc:
          type: string
          description: The organizer last modification date in UTC time
        status:
          type: string
          description: The organizer status
        url:
          type: string
          description: The URL to the organizer page
        organizer:
          type: string
          description: The organizer name
        description:
          type: string
          description: The organizer long description
        excerpt:
          type: string
          description: The organizer short description
        slug:
          type: string
          description: The organizer slug
        image:
          type: string
          description: The event featured image details if set
          $ref: '#/components/schemas/Image'
        phone:
          type: string
          description: The organizer phone number
        website:
          type: string
          description: The organizer website
        email:
          type: string
          description: The organizer email address
servers:
- url: https://hpsf.io/wp-json/tribe/events/v1/
paths:
  /doc:
    get:
      responses:
        '200':
          description: Returns the documentation for The Events Calendar REST API in Swagger consumable format.
  /events:
    get:
      parameters:
      - in: query
        schema:
          type: integer
        description: The archive page to return
        required: false
        name: page
      - in: query
        schema:
          type: integer
        description: The number of events to return on each page
        required: false
        name: per_page
      - in: query
        schema:
          type: string
        description: Events that start on the specified date
        required: false
        name: start_date
      - in: query
        schema:
          type: string
        description: Events that end on the specified date
        required: false
        name: end_date
      - in: query
        schema:
          type: string
        description: Events that start before the specified date
        required: false
        name: starts_before
      - in: query
        schema:
          type: string
        description: Events that start after the specified date
        required: false
        name: starts_after
      - in: query
        schema:
          type: string
        description: Events that end before the specified date
        required: false
        name: ends_before
      - in: query
        schema:
          type: string
        description: Events that end after the specified date
        required: false
        name: ends_after
      - in: query
        schema:
          type: string
        description: Dates set using the start_date/end_date, starts_*/ends_* are set to start at the specified times. The
          default behavior is to include the entire days.
        required: false
        name: strict_dates
      - in: query
        schema:
          type: string
        description: Events should contain the specified string in the title or description
        required: false
        name: search
      - in: query
        schema:
          type: array
          items:
            type: integer
        description: Events should be assigned one of the specified categories slugs or IDs
        required: false
        name: categories
        style: form
      - in: query
        schema:
          type: array
          items:
            type: integer
        description: Events should be assigned one of the specified tags slugs or IDs
        required: false
        name: tags
        style: form
      - in: query
        schema:
          type: array
          items:
            type: integer
        description: Events should be assigned one of the specified venue IDs
        required: false
        name: venue
        style: form
      - in: query
        schema:
          type: array
          items:
            type: integer
        description: Events should be assigned one of the specified organizer IDs
        required: false
        name: organizer
        style: form
      - in: query
        schema:
          type: boolean
        description: Events should be filtered by their featured status
        required: false
        name: featured
      - in: query
        schema:
          type: string
        description: The event post status
        required: false
        name: status
      - in: query
        schema:
          type: boolean
        description: Requires Events Calendar Pro. Events should be filtered by whether their venue has geolocation data
        required: false
        name: geoloc
      - in: query
        schema:
          type: number
        description: Requires Events Calendar Pro. Events should be filtered by their venue latitude location, must also provide
          geoloc_lng
        required: false
        name: geoloc_lat
      - in: query
        schema:
          type: number
        description: Requires Events Calendar Pro. Events should be filtered by their venue longitude location, must also
          provide geoloc_lat
        required: false
        name: geoloc_lng
      - in: query
        schema:
          type: array
          items:
            type: integer
        description: Include events with one of the post IDs specified in the array of CSV list, date filters will be ignored.
        required: false
        name: include
        style: form
      - in: query
        schema:
          type: integer
        description: Events should be filtered by their post_parent being the specified one.
        required: false
        name: post_parent
      - in: query
        schema:
          type: boolean
        description: Filter events with or without tickets.
        required: false
        name: ticketed
      responses:
        '200':
          description: Returns all the upcoming events matching the search criteria
          content:
            application/json:
              schema:
                title: events
                type: array
                items:
                  $ref: '#/components/schemas/Event'
        '400':
          description: One or more of the specified query variables has a bad format
        '404':
          description: The requested page was not found.
  /events/{id}:
    get:
      parameters:
      - in: path
        schema:
          type: integer
        description: the event post ID
        required: true
        name: id
      - in: path
        schema:
          type: string
        description: The event password
        required: false
        name: password
      responses:
        '200':
          description: Returns the data of the event with the specified post ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '400':
          description: The event post ID is missing.
        '403':
          description: The event with the specified ID is not accessible.
        '404':
          description: An event with the specified ID does not exist.
    post:
      parameters:
      - in: path
        schema:
          type: integer
        description: the event post ID
        required: true
        name: id
      - in: path
        schema:
          type: string
        description: The event password
        required: false
        name: password
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                author:
                  description: The event author ID
                  type: integer
                date:
                  description: The event publication date
                  type: string
                date_utc:
                  description: The event publication date (UTC time zone)
                  type: string
                title:
                  description: The event title
                  type: string
                description:
                  description: The event description
                  type: string
                slug:
                  description: The event slug
                  type: string
                excerpt:
                  description: The event excerpt
                  type: string
                status:
                  description: The event post status
                  type: string
                timezone:
                  description: The event time zone
                  type: string
                all_day:
                  description: Whether the event lasts the whole day or not
                  type: boolean
                start_date:
                  description: The event start date and time
                  type: string
                end_date:
                  description: The event end date and time
                  type: string
                image:
                  description: The event featured image ID or URL
                  type: string
                cost:
                  description: The event cost
                  type: string
                website:
                  description: The event website URL
                  type: string
                show_map:
                  description: Whether the event should show a map or not
                  type: boolean
                show_map_link:
                  description: Whether the event should show a map link or not
                  type: boolean
                hide_from_listings:
                  description: Whether events should be hidden in the calendar view or not
                  type: boolean
                sticky:
                  description: Whether the event should be sticky in the calendar view or not
                  type: boolean
                featured:
                  description: Whether the event should be featured on the site or not
                  type: boolean
                categories:
                  description: The event category ID or name
                  type: array
                  items:
                    type: integer
                tags:
                  description: The event tag ID or name
                  type: array
                  items:
                    type: integer
                venue:
                  description: The event venue IDs or data
                  type: array
                  items:
                    type: integer
                organizer:
                  description: The event organizer IDs or data
                  type: array
                  items:
                    type: integer
      responses:
        '200':
          description: Returns the data of the updated event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '201':
          description: Returns the data of the created event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '400':
          description: A required parameter is missing or an input parameter is in the wrong format
        '403':
          description: The user is not authorized to create events
    delete:
      parameters:
      - in: path
        schema:
          type: integer
        description: the event post ID
        required: true
        name: id
      - in: path
        schema:
          type: string
        description: The event password
        required: false
        name: password
      responses:
        '200':
          description: Deletes an event and returns its data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '400':
          description: The event post ID is missing or does not exist.
        '403':
          description: The current user cannot delete the event with the specified ID.
        '410':
          description: The event with the specified ID has been deleted already.
        '500':
          description: The event with the specified ID could not be deleted.
  /events/by-slug/{slug}:
    get:
      parameters:
      - in: path
        schema:
          type: string
        description: the event post name
        required: true
        name: slug
      responses:
        '200':
          description: Returns the data of the event with the specified post ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '400':
          description: The event post ID is missing.
        '403':
          description: The event with the specified ID is not accessible.
        '404':
          description: An event with the specified ID does not exist.
    post:
      parameters:
      - in: path
        schema:
          type: string
        description: the event post name
        required: true
        name: slug
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                author:
                  description: The event author ID
                  type: integer
                date:
                  description: The event publication date
                  type: string
                date_utc:
                  description: The event publication date (UTC time zone)
                  type: string
                title:
                  description: The event title
                  type: string
                description:
                  description: The event description
                  type: string
                slug:
                  description: The event slug
                  type: string
                excerpt:
                  description: The event excerpt
                  type: string
                status:
                  description: The event post status
                  type: string
                timezone:
                  description: The event time zone
                  type: string
                all_day:
                  description: Whether the event lasts the whole day or not
                  type: boolean
                start_date:
                  description: The event start date and time
                  type: string
                end_date:
                  description: The event end date and time
                  type: string
                image:
                  description: The event featured image ID or URL
                  type: string
                cost:
                  description: The event cost
                  type: string
                website:
                  description: The event website URL
                  type: string
                show_map:
                  description: Whether the event should show a map or not
                  type: boolean
                show_map_link:
                  description: Whether the event should show a map link or not
                  type: boolean
                hide_from_listings:
                  description: Whether events should be hidden in the calendar view or not
                  type: boolean
                sticky:
                  description: Whether the event should be sticky in the calendar view or not
                  type: boolean
                featured:
                  description: Whether the event should be featured on the site or not
                  type: boolean
                categories:
                  description: The event category ID or name
                  type: array
                  items:
                    type: integer
                tags:
                  description: The event tag ID or name
                  type: array
                  items:
                    type: integer
                venue:
                  description: The event venue IDs or data
                  type: array
                  items:
                    type: integer
                organizer:
                  description: The event organizer IDs or data
                  type: array
                  items:
                    type: integer
      responses:
        '200':
          description: Returns the data of the updated event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '201':
          description: Returns the data of the created event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '400':
          description: A required parameter is missing or an input parameter is in the wrong format
        '403':
          description: The user is not authorized to create events
    delete:
      parameters:
      - in: path
        schema:
          type: string
        description: the event post name
        required: true
        name: slug
      responses:
        '200':
          description: Deletes an event and returns its data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '400':
          description: The event post ID is missing or does not exist.
        '403':
          description: The current user cannot delete the event with the specified ID.
        '410':
          description: The event with the specified ID has been deleted already.
        '500':
          description: The event with the specified ID could not be deleted.
  /venues:
    get:
      parameters:
      - in: query
        schema:
          type: integer
        description: The archive page to return
        required: false
        name: page
      - in: query
        schema:
          type: integer
        description: The number of venues to return on each page
        required: false
        name: per_page
      - in: query
        schema:
          type: string
        description: Venues should contain the specified string in the title, description or custom fields
        required: false
        name: search
      - in: query
        schema:
          type: integer
        description: Venues should be related to this event
        required: false
        name: event
      - in: query
        schema:
          type: boolean
        description: Venues should have events associated to them
        required: false
        name: has_events
      - in: query
        schema:
          type: boolean
        description: Venues should have upcoming events associated to them
        required: false
        name: only_with_upcoming
      - in: query
        schema:
          type: string
        description: The organizer post status
        required: false
        name: status
      responses:
        '200':
          description: Returns all the venues matching the search criteria
          content:
            application/json:
              schema:
                title: venues
                type: array
                items:
                  $ref: '#/components/schemas/Venue'
        '400':
          description: One or more of the specified query variables has a bad format
        '404':
          description: The requested page was not found.
  /venues/{id}:
    get:
      parameters:
      - in: path
        schema:
          type: integer
        description: the venue post ID
        required: true
        name: id
      responses:
        '200':
          description: Returns the data of the venue with the specified post ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Venue'
        '400':
          description: The venue post ID is missing.
        '403':
          description: The venue with the specified ID is not accessible.
        '404':
          description: A venue with the specified post ID does not exist.
    post:
      parameters:
      - in: path
        schema:
          type: integer
        description: the venue post ID
        required: true
        name: id
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                author:
                  description: The venue author ID
                  type: integer
                date:
                  description: The venue publication date
                  type: string
                date_utc:
                  description: The venue publication date (UTC time z

# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hpsf/refs/heads/main/openapi/hpsf-events-api-openapi.yml