Banzai Events API

Events, Event Sessions (Dates) and registration.

OpenAPI Specification

banzai-events-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Public Demio Events API
  version: v1
  description: 'Public REST API for Demio, the webinar and virtual-event platform operated by Banzai International. The API exposes the Event, Event Session (Date), registration and participant-reporting surface: list and read Events, read a specific Event Session, register a person for an Event and receive their unique join link, and pull the participant/attendance report for a Session. Every request is authorized with an account API Key and API Secret, supplied either as `Api-Key` / `Api-Secret` request headers or as `api_key` / `api_secret` query string parameters. Keys are managed in the Demio Settings > API area.


    Provenance: this document is a faithful format conversion of the API Blueprint that Demio publishes at https://publicdemioapi.docs.apiary.io (blueprint source https://jsapi.apiary.io/apis/publicdemioapi.apib, Apiary owner "Demio"). No operation, parameter, response or field has been added that is not documented in that blueprint. Descriptions, rate limits and error semantics are drawn from the Demio Help Center. Live behaviour of `GET /ping` was verified on 2026-08-06 (HTTP 401 `{"pong":false,"messages":["Authorization failed"]}` without credentials).'
  contact:
    name: Demio Support
    email: support@demio.com
    url: https://help.demio.com/en/
  termsOfService: https://www.demio.com/terms-and-conditions
  x-source-format: API Blueprint 1A
  x-source-url: https://jsapi.apiary.io/apis/publicdemioapi.apib
  x-source-last-updated: '2022-04-19'
  x-provenance: Derived by API Evangelist from the provider-published API Blueprint. Not an official Demio OpenAPI document.
servers:
- url: https://my.demio.com/api/v1
  description: Production
security:
- ApiKeyHeader: []
  ApiSecretHeader: []
tags:
- name: Events
  description: Events, Event Sessions (Dates) and registration.
paths:
  /events:
    get:
      tags:
      - Events
      operationId: listEvents
      summary: Events list
      description: Returns active (not canceled) Events grouped by Event ID and ordered by scheduled date/time (next upcoming session). Use the `type` query parameter to filter to upcoming, past or automated Events.
      parameters:
      - name: type
        in: query
        required: false
        description: Filter events by type
        schema:
          type: string
          enum:
          - upcoming
          - past
          - automated
      responses:
        '200':
          description: A list of Events
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EventSummary'
              example:
              - id: 62
                name: First Webinar
                description: First Webinar description
                date_id: 1218
                status: running
                timestamp: 1456723800
                zone: Europe/Kiev
                registration_url: https://my.demio.com/ref/FKXeiDqyQsRYbfiv
                automated:
                  ready: true
                  duration: 3620
              - id: 45
                name: Second Webinar
                description: Second Webinar description
                date_id: 1196
                status: scheduled
                timestamp: 1456765200
                zone: America/New_York
                registration_url: https://my.demio.com/ref/pgRzWQhYLPmuboOA
                automated: null
  /event/{id}:
    get:
      tags:
      - Events
      operationId: getEvent
      summary: Event info
      description: Returns information about a specific Event with the full list of Event Sessions (Dates), ordered by scheduled date/time.
      parameters:
      - name: id
        in: path
        required: true
        description: Event ID
        schema:
          type: integer
      - name: active
        in: query
        required: false
        description: Return only active dates in series
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: The Event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '404':
          description: Event not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                messages:
                - Event not found
  /event/{id}/date/{date_id}:
    get:
      tags:
      - Events
      operationId: getEventSession
      summary: Event Session info
      description: Returns information about a specific Event Session (Date).
      parameters:
      - name: id
        in: path
        required: true
        description: Event ID
        schema:
          type: integer
      - name: date_id
        in: path
        required: true
        description: Event Date ID
        schema:
          type: integer
      responses:
        '200':
          description: The Event Session
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventDate'
              example:
                date_id: 1218
                status: scheduled
                timestamp: 1456723800
                datetime: March 26th, 2016 at 8:00PM EET
                zone: Europe/Kiev
        '404':
          description: Event Date not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                messages:
                - Event Date not found
  /event/register:
    put:
      tags:
      - Events
      operationId: registerForEvent
      summary: Register
      description: Registers someone for an Event and returns the unique join link for that person. Request attributes are automatically filtered; registration form field data may be passed in the request body. Custom fields are keyed by the field's Unique Identifier as configured in the Event's Registration block.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegistrationRequest'
            examples:
              byEventId:
                summary: Register by Event ID
                value:
                  id: 1
                  ref_url: null
                  date_id: 35
                  name: John Doe
                  email: john.doe@gmail.com
              byRefUrl:
                summary: Register by registration page URL
                value:
                  id: null
                  ref_url: https://my.demio.com/ref/7Ka0Ti56GdIWcfFR
                  date_id: null
                  name: John
                  email: john.doe@gmail.com
                  last_name: Doe
                  website: https://demio.com
                  phone: +1-222-333-4455
      responses:
        '201':
          description: Registered
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Registration'
              example:
                hash: fPaSYijVHXI6ZJgE
                join_link: https://event.demio.com/join/fPaSYijVHXI6ZJgE
        '400':
          description: Validation failed or malformed request body
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                validation:
                  value:
                    messages:
                    - Name must be more than 2 symbols
                    - Wrong Email format
                syntax:
                  value:
                    messages:
                    - Bad Request syntax. Try to check request Body data JSON format.
components:
  schemas:
    Event:
      type: object
      properties:
        id:
          type: number
          description: Event ID
        name:
          type: string
          description: Event name
        description:
          type: string
          description: Event description
        registrants_stay_registered:
          type: boolean
          description: Keep Registrants registered through the series
        registration_url:
          type: string
          description: Humanized Event registration page URL
        next_date_id:
          type: number
          description: Next available (running or scheduled) Event Date ID
        automated:
          $ref: '#/components/schemas/Automated'
        dates:
          type: array
          description: All (scheduled, running, finished) Event Dates
          items:
            $ref: '#/components/schemas/EventDate'
    Automated:
      type:
      - object
      - 'null'
      description: Present when the Event is automated
      properties:
        duration:
          type: number
          description: Video duration in seconds
        ready:
          type: boolean
          description: Video is ready to be played
    Registration:
      type: object
      properties:
        hash:
          type: string
          description: Unique Attendee hash used to join the webinar
        join_link:
          type: string
          description: Link to join the webinar
    RegistrationRequest:
      type: object
      required:
      - name
      - email
      additionalProperties: true
      description: Registration payload. Additional properties are treated as custom form fields, keyed by the field's Unique Identifier.
      properties:
        id:
          type:
          - number
          - 'null'
          description: Event ID
        ref_url:
          type:
          - string
          - 'null'
          description: Event registration page URL. Useful when the Event ID is unknown but the Event link is known.
        date_id:
          type:
          - number
          - 'null'
          description: Event Date ID. When omitted the nearest active Date is used.
        name:
          type: string
          description: The registrant's first name
        email:
          type: string
          format: email
          description: The registrant's email address
        last_name:
          type: string
          description: Value for the predefined Last Name field
        company:
          type: string
          description: Value for the predefined Company field
        website:
          type: string
          description: Value for the predefined Website field
        phone_number:
          type: string
          description: Value for the predefined Phone Number field
        gdpr:
          type: string
          description: Value for the predefined GDPR field
    EventSummary:
      type: object
      required:
      - id
      - name
      - date_id
      - status
      - timestamp
      - zone
      - registration_url
      properties:
        id:
          type: number
          description: Event ID
        name:
          type: string
          description: Event name
        description:
          type: string
          description: Event description
        date_id:
          type: number
          description: Event Date ID
        status:
          type: string
          description: Event Date status
        timestamp:
          type: number
          description: Scheduled date/time of the Event Date, Unix timestamp
        zone:
          type: string
          description: Scheduled timezone of the Event Date
        registration_url:
          type: string
          description: Humanized Event registration page URL
        automated:
          $ref: '#/components/schemas/Automated'
    EventDate:
      type: object
      properties:
        date_id:
          type: number
          description: Event Date identifier
        status:
          type: string
          description: Status
        timestamp:
          type: number
          description: Unix timestamp
        datetime:
          type: string
          description: Human friendly date/time string
        zone:
          type: string
          description: Timezone
    Error:
      type: object
      properties:
        messages:
          type: array
          description: Human readable error messages
          items:
            type: string
  securitySchemes:
    ApiKeyHeader:
      type: apiKey
      in: header
      name: Api-Key
      description: Account API Key, from Demio Settings > API.
    ApiSecretHeader:
      type: apiKey
      in: header
      name: Api-Secret
      description: Account API Secret, from Demio Settings > API.
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api_key
      description: Account API Key supplied on the query string.
    ApiSecretQuery:
      type: apiKey
      in: query
      name: api_secret
      description: Account API Secret supplied on the query string.
externalDocs:
  description: Public Demio API documentation (Apiary)
  url: https://publicdemioapi.docs.apiary.io