openapi: 3.0.3
info:
title: Airmeet Public API
version: '1.0'
description: >-
The Airmeet Public API lets you programmatically manage events (Airmeets),
registrations, sessions, speakers, booths and event series on the Airmeet
virtual, hybrid and in-person events platform, and read back event
engagement and attendance data. Authentication is a two-step flow: exchange
an access key and secret key at POST /auth for a bearer access token (valid
30 days), then send that token as the X-Airmeet-Access-Token header on every
other request. Several read endpoints (attendees, booth attendance, UTMs,
replay attendance) are asynchronous and return a job/URL to poll for the
result. Responses share a { "success": boolean, "data": ... } envelope.
contact:
name: Airmeet Support
email: support@airmeet.com
url: https://help.airmeet.com/support/solutions/82000362508
termsOfService: https://www.airmeet.com/hub/terms-of-use/
externalDocs:
description: Airmeet Public API documentation
url: https://help.airmeet.com/support/solutions/articles/82000467794-airmeet-public-api-introduction
servers:
- url: https://api-gateway.airmeet.com/prod
description: Default region (Mumbai)
- url: https://api-gateway-prod.eu.airmeet.com/prod
description: EU region
- url: https://api-gateway-prod.us.airmeet.com/prod
description: US region
tags:
- name: Authentication
description: Exchange access/secret keys for an access token.
- name: Event Details
description: Read events, participants, sessions, engagement and attendance data.
- name: Manage Registrations
description: Add authorized attendees and block or unblock them.
- name: Manage Event
description: Create and manage events, speakers, sessions, booths and landing pages.
- name: Manage Event Series
description: List event series and the events within a series.
- name: Webhooks
description: Register webhook subscriptions for Airmeet event triggers.
security:
- accessToken: []
paths:
/auth:
post:
operationId: authenticate
summary: Authenticate and issue an access token
description: >-
Exchange the community access key and secret key for an access token
valid for 30 days. The token can be cached by the consumer service.
tags: [Authentication]
security:
- accessKey: []
secretKey: []
responses:
'200':
description: Access token issued.
content:
application/json:
schema:
type: object
properties:
success: { type: boolean }
data:
type: object
properties:
label: { type: string }
token: { type: string, description: Access token for X-Airmeet-Access-Token. }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeets:
get:
operationId: listAirmeets
summary: List accessible Airmeets
description: List all Airmeets (events) the credentials can access, with pagination.
tags: [Event Details]
parameters:
- { name: pageNumber, in: query, schema: { type: integer }, description: Page number for pagination. }
- { name: pageSize, in: query, schema: { type: integer }, description: Number of records per page. }
responses:
'200': { $ref: '#/components/responses/Success' }
'400': { $ref: '#/components/responses/BadRequest' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/info:
get:
operationId: getAirmeetInfo
summary: Get event and session details
description: Fetch the sessions and metadata within an event.
tags: [Event Details]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
responses:
'200': { $ref: '#/components/responses/Success' }
'401': { $ref: '#/components/responses/Unauthorized' }
'412': { $ref: '#/components/responses/PreconditionFailed' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/participants:
get:
operationId: getParticipants
summary: Get event participants
description: Fetch the participants/registrants of an event.
tags: [Event Details]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
responses:
'200': { $ref: '#/components/responses/Success' }
'401': { $ref: '#/components/responses/Unauthorized' }
'412': { $ref: '#/components/responses/PreconditionFailed' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/custom-fields:
get:
operationId: getCustomFields
summary: Get custom registration fields
description: Fetch the custom registration fields configured for an event.
tags: [Event Details]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
responses:
'200': { $ref: '#/components/responses/Success' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/attendees:
get:
operationId: getAttendees
summary: Get event attendance data (async)
description: >-
Fetch event attendance data. This is an asynchronous endpoint that
returns a job reference to poll for the generated data.
tags: [Event Details]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
responses:
'200': { $ref: '#/components/responses/AsyncAccepted' }
'401': { $ref: '#/components/responses/Unauthorized' }
'412': { $ref: '#/components/responses/PreconditionFailed' }
'500': { $ref: '#/components/responses/ServerError' }
/session/{sessionId}/attendees:
get:
operationId: getSessionAttendees
summary: Get session attendance (async)
description: Fetch session attendance data asynchronously.
tags: [Event Details]
parameters: [ { $ref: '#/components/parameters/SessionId' } ]
responses:
'200': { $ref: '#/components/responses/AsyncAccepted' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/booths:
get:
operationId: listBooths
summary: List event booths
description: List all booths configured for an event.
tags: [Event Details]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
responses:
'200': { $ref: '#/components/responses/Success' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
post:
operationId: createBooth
summary: Create a booth
description: Add a booth to your Airmeet event.
tags: [Manage Event]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/BoothCreate' }
responses:
'200': { $ref: '#/components/responses/Success' }
'400': { $ref: '#/components/responses/BadRequest' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/booth/{boothId}/booth-attendance:
get:
operationId: getBoothAttendance
summary: Get booth attendance (async)
description: Fetch booth attendees asynchronously.
tags: [Event Details]
parameters:
- { $ref: '#/components/parameters/AirmeetId' }
- { name: boothId, in: path, required: true, schema: { type: string }, description: Booth identifier. }
responses:
'200': { $ref: '#/components/responses/AsyncAccepted' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/polls:
get:
operationId: getPolls
summary: Get poll responses
description: Fetch poll responses submitted during an event.
tags: [Event Details]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
responses:
'200': { $ref: '#/components/responses/Success' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/questions:
get:
operationId: getQuestions
summary: Get Q&A questions
description: Fetch questions asked during an event.
tags: [Event Details]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
responses:
'200': { $ref: '#/components/responses/Success' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/tracks:
get:
operationId: getTracks
summary: Get event tracks
description: Fetch the tracks configured for an event.
tags: [Event Details]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
responses:
'200': { $ref: '#/components/responses/Success' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/utms:
get:
operationId: getUtms
summary: Get registration UTM parameters (async)
description: Fetch registration UTM parameters asynchronously.
tags: [Event Details]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
responses:
'200': { $ref: '#/components/responses/AsyncAccepted' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/session-recordings:
get:
operationId: getSessionRecordings
summary: Get session recording links
description: Fetch download links for session recordings.
tags: [Event Details]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
responses:
'200': { $ref: '#/components/responses/Success' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/event-replay-attendees:
get:
operationId: getEventReplayAttendees
summary: Get replay attendance (async)
description: Fetch on-demand/replay attendance data asynchronously.
tags: [Event Details]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
responses:
'200': { $ref: '#/components/responses/AsyncAccepted' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/attendee:
post:
operationId: addAttendee
summary: Add an authorized attendee
description: >-
Add an attendee authorized to enter the specified Airmeet. Supports
custom registration field mappings via customFieldMapping.
tags: [Manage Registrations]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/AttendeeCreate' }
responses:
'200': { $ref: '#/components/responses/Success' }
'400': { $ref: '#/components/responses/BadRequest' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/attendee/block:
put:
operationId: blockAttendee
summary: Block an attendee
description: Block an attendee from the specified Airmeet.
tags: [Manage Registrations]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [attendeeEmail]
properties:
attendeeEmail: { type: string, format: email }
responses:
'200': { $ref: '#/components/responses/Success' }
'400': { $ref: '#/components/responses/BadRequest' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/attendee/unblock:
put:
operationId: unblockAttendee
summary: Unblock an attendee
description: Remove block restrictions on an attendee.
tags: [Manage Registrations]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [attendeeEmail]
properties:
attendeeEmail: { type: string, format: email }
responses:
'200': { $ref: '#/components/responses/Success' }
'400': { $ref: '#/components/responses/BadRequest' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet:
post:
operationId: createAirmeet
summary: Create an event
description: Create an Airmeet in your community.
tags: [Manage Event]
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/AirmeetCreate' }
responses:
'200': { $ref: '#/components/responses/Success' }
'400': { $ref: '#/components/responses/BadRequest' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/speaker:
post:
operationId: addSpeaker
summary: Add a speaker
description: Add a speaker to your Airmeet event.
tags: [Manage Event]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/SpeakerCreate' }
responses:
'200': { $ref: '#/components/responses/Success' }
'400': { $ref: '#/components/responses/BadRequest' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/session:
post:
operationId: createSession
summary: Create a session
description: Add a session to your Airmeet event.
tags: [Manage Event]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/SessionCreate' }
responses:
'200': { $ref: '#/components/responses/Success' }
'400': { $ref: '#/components/responses/BadRequest' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/session/{sessionId}:
delete:
operationId: deleteSession
summary: Delete a session
description: Delete a session in your Airmeet.
tags: [Manage Event]
parameters:
- { $ref: '#/components/parameters/AirmeetId' }
- { $ref: '#/components/parameters/SessionId' }
responses:
'200': { $ref: '#/components/responses/Success' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/status:
post:
operationId: updateAirmeetStatus
summary: Update event status
description: >-
Start and end your Airmeet programmatically without visiting the
dashboard. Status is one of ONGOING, PAUSED, FINISHED, ARCHIVE.
tags: [Manage Event]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [status]
properties:
status:
type: string
enum: [ONGOING, PAUSED, FINISHED, ARCHIVE]
responses:
'200': { $ref: '#/components/responses/Success' }
'400': { $ref: '#/components/responses/BadRequest' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/landing-page:
put:
operationId: customizeLandingPage
summary: Customize the landing page
description: Customize the landing page for your Airmeet.
tags: [Manage Event]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
ambience: { type: string }
layout: { type: string }
highlightColor: { type: string }
buttonTextColor: { type: string }
imageUrl: { type: string }
responses:
'200': { $ref: '#/components/responses/Success' }
'400': { $ref: '#/components/responses/BadRequest' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/airmeet/{airmeetId}/duplication:
post:
operationId: duplicateAirmeet
summary: Duplicate an event
description: Duplicate an Airmeet.
tags: [Manage Event]
parameters: [ { $ref: '#/components/parameters/AirmeetId' } ]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
eventName: { type: string }
startTime: { type: string }
timezone: { type: string }
duplicateSpeakers: { type: boolean }
responses:
'200': { $ref: '#/components/responses/Success' }
'400': { $ref: '#/components/responses/BadRequest' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/event-series:
get:
operationId: listEventSeries
summary: List event series
description: Get a list of all event series in a community.
tags: [Manage Event Series]
responses:
'200': { $ref: '#/components/responses/Success' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/event-series/{eventSeriesId}/events:
get:
operationId: listEventSeriesEvents
summary: List events within a series
description: Retrieve a list of all events inside an event series.
tags: [Manage Event Series]
parameters:
- { name: eventSeriesId, in: path, required: true, schema: { type: string }, description: Event series identifier. }
responses:
'200': { $ref: '#/components/responses/Success' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
/platform-integration/v1/webhook-register:
post:
operationId: registerWebhook
summary: Register a webhook subscription
description: >-
Register a webhook endpoint to receive Airmeet event triggers. Uses the
x-access-key and x-secret-key headers. Provide a triggerMetaInfoId for
the event type to subscribe to; event-specific triggers accept an
airmeetId query parameter.
tags: [Webhooks]
security:
- webhookAccessKey: []
webhookSecretKey: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [name, triggerMetaInfoId, url]
properties:
name: { type: string }
description: { type: string }
triggerMetaInfoId: { type: string, description: Identifier of the webhook trigger/event type. }
url: { type: string, format: uri, description: Destination URL to receive webhook POSTs. }
platformName: { type: string }
responses:
'200': { $ref: '#/components/responses/Success' }
'400': { $ref: '#/components/responses/BadRequest' }
'401': { $ref: '#/components/responses/Unauthorized' }
'500': { $ref: '#/components/responses/ServerError' }
components:
securitySchemes:
accessKey:
type: apiKey
in: header
name: X-Airmeet-Access-Key
description: Community access key, presented at POST /auth.
secretKey:
type: apiKey
in: header
name: X-Airmeet-Secret-Key
description: Community secret key, presented at POST /auth.
accessToken:
type: apiKey
in: header
name: X-Airmeet-Access-Token
description: Bearer access token issued by POST /auth, valid for 30 days.
webhookAccessKey:
type: apiKey
in: header
name: x-access-key
description: Access key for webhook registration.
webhookSecretKey:
type: apiKey
in: header
name: x-secret-key
description: Secret key for webhook registration.
parameters:
AirmeetId:
name: airmeetId
in: path
required: true
schema: { type: string }
description: Airmeet (event) identifier.
SessionId:
name: sessionId
in: path
required: true
schema: { type: string }
description: Session identifier.
responses:
Success:
description: Successful response.
content:
application/json:
schema: { $ref: '#/components/schemas/Envelope' }
AsyncAccepted:
description: Asynchronous job accepted; poll the returned reference for data.
content:
application/json:
schema: { $ref: '#/components/schemas/Envelope' }
BadRequest:
description: Bad request.
content:
application/json:
schema: { $ref: '#/components/schemas/Error' }
Unauthorized:
description: Missing or invalid credentials/token.
content:
application/json:
schema: { $ref: '#/components/schemas/Error' }
PreconditionFailed:
description: Precondition failed (e.g. data not yet available).
content:
application/json:
schema: { $ref: '#/components/schemas/Error' }
ServerError:
description: Internal server error.
content:
application/json:
schema: { $ref: '#/components/schemas/Error' }
schemas:
Envelope:
type: object
properties:
success: { type: boolean }
data: {}
Error:
type: object
properties:
success: { type: boolean, example: false }
message: { type: string }
error: { type: string }
AttendeeCreate:
type: object
required: [email, firstName, lastName]
properties:
email: { type: string, format: email }
firstName: { type: string }
lastName: { type: string }
attendance_type: { type: string, enum: [IN-PERSON, VIRTUAL], description: For hybrid events. }
city: { type: string }
country: { type: string }
designation: { type: string }
organisation: { type: string }
registerAttendee: { type: boolean, default: false }
sendEmailInvite: { type: boolean, default: true }
customFieldMapping:
type: array
items:
type: object
properties:
fieldId: { type: string }
value: { type: string }
AirmeetCreate:
type: object
required: [hostEmail, eventName]
properties:
hostEmail: { type: string, format: email }
eventName: { type: string }
shortDesc: { type: string }
startTime: { type: string }
endTime: { type: string }
timezone: { type: string }
accessType: { type: string }
eventType: { type: string }
venueTitle: { type: string }
registrationApprovalRequired: { type: boolean }
venueCapacity: { type: integer }
SpeakerCreate:
type: object
required: [name, email]
properties:
name: { type: string }
email: { type: string, format: email }
organisation: { type: string }
designation: { type: string }
imageUrl: { type: string }
bio: { type: string }
city: { type: string }
country: { type: string }
SessionCreate:
type: object
required: [sessionTitle, sessionStartTime]
properties:
sessionTitle: { type: string }
sessionStartTime: { type: string }
sessionDuration: { type: integer }
hostEmail: { type: string, format: email }
speakerEmails: { type: array, items: { type: string } }
cohostEmails: { type: array, items: { type: string } }
type: { type: string }
tracks: { type: array, items: { type: string } }
tags: { type: array, items: { type: string } }
boothId: { type: string }
speedNetworkingData: { type: object }
sessionMeta: { type: object }
BoothCreate:
type: object
required: [name]
properties:
name: { type: string }
exhibitors: { type: array, items: { type: string } }
tags: { type: array, items: { type: string } }
metaData:
type: object
properties:
chatEnabled: { type: boolean }
loungeEnabled: { type: boolean }
broadcastEnabled: { type: boolean }
tableCount: { type: integer }
exhibitorInfo: { type: object }