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 re-verified on 2026-08-12 (HTTP 401 `{"pong":false,"messages":["Authorization failed"]}` without credentials), and the blueprint fetched on 2026-08-12 is byte-identical to the copy harvested on 2026-08-06.' 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' 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 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 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' 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 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 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