TABLE OF CONTENTS
- 1. Authentication
- 2. Event Details
- 2.1 List Airmeets
- 2.2 Fetch Airmeet registrations
- 2.3 Fetch Airmeet participants
- 2.4 Fetch Airmeet Sessions
- 2.5 Fetch Airmeet Custom Registration Fields
- 2.6 Fetch event attendance
- 2.7 Fetch session attendance
- 2.8 Fetch Airmeet Booths
- 2.9 Fetch Booth Attendance
- 2.10 Fetch Poll Responses
- 2.11 Fetch Questions Asked
- 3. Manage Registrations
- 4. Manage Event
API endpoint: https://api-gateway.airmeet.com/prod
Community dashboard: https://www.airmeet.com/ (use this to get a key pair issued).
1. Authentication
1.1 Generate Access token & key
Step 1: Sign in to your airmeet account ( https://www.airmeet.com/signup )
Step 2: Click on the "Integrations" tab and select the "API Access Key" section.
Step 3: Click on "Generate access key" and provide a name/label to your key (can be anything that can be remembered later)
Step 4: After providing your label name 'X-Airmeet-Access-Key' with 'X-Airmeet-Secret-Key' would be generated, which can be used in API integration
Access Key = X-Airmeet-Access-Key
Secret Key = X-Airmeet-Secret-Key
All APIs expect a Content-Type: application/JSON header.
1.2 Authentication
POST/auth
This API issues a token for use with the other APIs mentioned in this doc.
Tokens issued by this API are valid for 30 days and can be cached on the consumer service.
Headers
X-Airmeet-Access-Key and X-Airmeet-Secret-Key (can be obtained over from the integrations tab in the community dashboard)
Response
200 OK {"success": true, "data": {"label": "test", "token":
<your_access_token>}}
400 Bad Request - in case the request is missing a header or the supplied values are incorrect
403 Forbidden - in case the keys are revoked (abuse prevention)
500 Internal Server Error - generic server error
2. Event Details
2.1 List Airmeets
GET /airmeets?before=<cursor>&after=<cursor>&size=<number>
This API lists the Airmeets accessible to a token.
The before and after cursors cannot both be used at the same time. If they are both specified, the API ignores them before the cursor.
If not specified, the size is set to 50 Airmeets. Max can be 500.
Airmeets are sorted by their creation time.
Headers
X-Airmeet-Access-Token: airmeet_access_token
Response:
200 OK
{
"data" : [
{
"uid" : <airmeet_uuid>,
"name" : "Test Airmeet" ,
"status" : "ONGOING" ,
"timezone" : "Asia/Kolkata" ,
"startTime" : <ISO_Date_String>,
"endTime" : <ISO_Date_String>
}
],
"cursors" : {
"before" : <integer>,
"after" : <integer>,
"pageCount" : 3
}
}
400 Bad Request - in case the supplied token is incorrect
412 Precondition Failed - in case the passed access token has expired
500 Internal Server Error - generic server error
2.2 Fetch Airmeet registrations
GET /airmeet/{airmeet_id}/registrations?after=<cursor>&before=
<cursor>&size=<number>
By default, the size is set to 50 registrants. Max can be 500.
Registrations are sorted by their creation time.
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Response:
200 OK
{
"data": [
{
"email": "user_email@example.com",
"name": "John Doe",
"city": "City",
"country": "World",
"organisation": "Company",
"Designation": "Role",
"registrationDate": <ISO_Date_String>
}
],
"cursors": {
"before": <integer>,
"after": <integer>,
"pageCount": 3
}
}
400 Bad Request - in case the passed token is bad
401 Unauthorized - in case the token does not belong to this Airmeet's community
404 Not Found - in case the supplied airmeet_id param is invalid
412 Precondition Failed - in case the passed access token has expired
500 Internal Server Error - generic server error
2.3 Fetch Airmeet participants
GET /airmeet/{airmeetId}/participants?resultSize=<number>&pageNumber=<number>&sortingKey=<column header>&sortingDirection=<direction enum>
This API gives a list of all participants for an event including invitees, guests and registered users
By default, the resultSize is set to 50 registrants. Eg. Set parameter pageNumber=2 for response number 51-100, and so on.
Registrations are sorted in descending order of their creation time
sortingKey can be [‘name’, ‘email’, ‘registrationDate’]
sortingDirection can be [‘ASC’, ‘DESC’]
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Response:
200 OK
{
"participants": [
{
"email": "user_email@example.com",
"name": "John Doe",
"city": "City",
"country": "World",
"organisation": "Company",
"Designation": "Role",
"registrationDate": <ISO_Date_String>
"profile_url": null,
"user_type": "Registered User",
"token": "<direct access link url>",
"invite_sent": true,
"user_profile": [
{
"value": "Custom registration field",
"fieldId": "e9bbf124-6f54-44aa-8683-09dc34fd246a"
}
]
},..
],
"userCount": 50,
"totalUserCount": 125
}
400 Bad Request - in case the passed token is bad
401 Unauthorized - in case the token does not belong to this Airmeet's community
404 Not Found - in case the supplied airmeet_id param is invalid
412 Precondition Failed - in case the passed access token has expired
500 Internal Server Error - generic server error
2.4 Fetch Airmeet Sessions
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Response:
200 OK
{
"sessions": [
{
"sessionid": "0219006f-7cfa-44ba-b47f-14d93a40fc99",
"name": "Welcome Session",
"start_time": "2021-10-14T07:30:00.000Z",
"status": "CREATED",
"duration": 30,
"summary": "Session Summary",
"host_id": [
"bZxdWONJy"
],
"cohost_ids": [],
"speaker_id": [],
"speakerList": [],
"type": "HOSTING",
},...
]
}
400 Bad Request - in case the passed token is bad
401 Unauthorized - in case the token does not belong to this Airmeet's community
404 Not Found - in case the supplied airmeet_id param is invalid
412 Precondition Failed - in case the passed access token has expired
500 Internal Server Error - generic server error
2.5 Fetch Airmeet Custom Registration Fields
GET /airmeet/{airmeetId}/custom-fields
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Response:
200 OK
{
"customFields": [
{
"label": "Short Text Field",
"name": "shortText",
"fieldId": "5a0d3578-6851-4d49-bcb9-96d7466b64bb",
"options": [],
"isRequired": false,
"type": {
"fieldType": "custom",
"inputType": "text",
"mappedFrom": "shortText"
}
},
{
"label": "Single Select Field",
"name": "singleSelect",
"fieldId": "cc68e0a7-0f59-458a-84af-2ac2784fae01",
"options": [
{
"code": "Option1",
"displayValue": "Option1"
},
{
"code": "Option2",
"displayValue": "Option2"
},
{
"code": "Option3",
"displayValue": "Option3"
}
],
"isRequired": false,
"type": {
"fieldType": "custom",
"inputType": "radio",
"mappedFrom": "singleSelect"
}
},
{
"label": "Multi Select Field",
"name": "multiSelect",
"fieldId": "b7604a72-6a45-4757-ba71-25ab9f3841ee",
"options": [
{
"code": "Option1",
"displayValue": "Option1"
},
{
"code": "Option2",
"displayValue": "Option2"
},
{
"code": "Option3",
"displayValue": "Option3"
}
],
"isRequired": false,
"type": {
"fieldType": "custom",
"inputType": "checkbox",
"mappedFrom": "multiSelect"
}
}
]
}
400 Bad Request - in case the passed token is bad
401 Unauthorized - in case the token does not belong to this Airmeet's community
404 Not Found - in case the supplied airmeet_id param is invalid
412 Precondition Failed - in case the passed access token has expired
500 Internal Server Error - generic server error
2.6 Fetch event attendance
GET /airmeet/{airmeetId}/attendees?after=<cursor>&before=<cursor>&size=<number>
This API gives a list of all event attendees
By default, the response page size is set to 50. Max can be 500.
This is an Asynchronous API. If you get a 202 code in response, please try again after 5 minutes.
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Response:
202 Accepted
{
"statusCode": 202,
"statusMessage": "Preparing your results.Try after 5 minutes to get the updated results"
}
Response:
200 OK
{
"cursors": {
"after": 4024760,
"before": 4024760,
"pageCount": 1,
"totalCount": 1
},
"data": [
{
"email": "user_email@example.com",
"id": 4024760,
"name": "John Doe",
"user_id": "9jWs2N5Ex",
"time_stamp": "2021:12:25T12:20:56.00Z",
"time_spent": "20000"
}
],
"statusCode": 200,
"statusMessage": "SUCCESS"
}
400 Bad Request - in case the passed token is bad
400 Bad Request - in case the token does not belong to this Airmeet's community
400 Bad Request - in case the supplied airmeet_id param is invalid
412 Precondition Failed - in case the passed access token has expired
500 Internal Server Error - generic server error
2.7 Fetch session attendance
GET /session/{sessionId}/attendees?after=<cursor>&before=<cursor>&size=<number>
This API gives a list of all session attendees
By default, the response page size is set to 50. Max can be 500.
This is an Asynchronous API. If you get a 202 code in response, please try again after 5 minutes.
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Response:
202 Accepted
{
"statusCode": 202,
"statusMessage": "Preparing your results. Try after 5 minutes to get the updated results"
}
Response:
200 OK
{
"cursors": {
"after": 4024760,
"before": 4024760,
"pageCount": 1,
"totalCount": 1
},
"data": [
{
"email": "user_email@example.com",
"id": 4024760,
"name": "John Doe",
"user_id": "9jWs2N5Ex",
"time_stamp": "2021:12:25T12:20:56.00Z",
"time_spent": "20000"
}
],
"statusCode": 200,
"statusMessage": "SUCCESS"
}
400 Bad Request - in case the passed token is bad
400 Bad Request - in case the token does not belong to this Airmeet's community
400 Bad Request - in case the supplied sessionId param is invalid
412 Precondition Failed - in case the passed access token has expired
500 Internal Server Error - generic server error
2.8 Fetch Airmeet Booths
GET /airmeet/{airmeetId}/booths
This API gives a list of all booths in your Airmeet
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Response:
200 OK
{
"booths": [
{
"uid": "{boothId}",
"name": "booth name",
"exhibitors": [
"booth.exhibitor.1@example.com",
"booth.exhibitor.2@example.com"
],
"tags": [
"Tag 1",
"Tag 2"
],
"airmeet_id": "{airmeetId}",
"logo_url": "https://image_url",
"video": null,
"faqs": null,
"order": 1,
"resources": null,
"layoutType": null,
"layoutData": "null",
"boothExhibitor": true,
"social_media_links": null,
"short_description": null,
"long_description": null,
"banner_url": null,
"register_interest_details": null,
"offer_details": null,
"doc_url": null,
"doc_name": null,
"booth_space_id": null
}
]
}
400 Bad Request - in case the passed token is bad
400 Bad Request - in case the token does not belong to this Airmeet's community
400 Bad Request - in case the supplied sessionId param is invalid
412 Precondition Failed - in case the passed access token has expired
500 Internal Server Error - generic server error
2.9 Fetch Booth Attendance
GET /airmeet/{airmeetId}/booth/{boothId}/booth-attendance?after=<cursor>&before=<cursor>&size=<number>
This API gives a list of all booth attendees
By default, the response page size is set to 50. Max can be 500.
This is an Asynchronous API. If you get a 202 code in response, please try again after 5 minutes.
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Response:
202 Accepted
{
"statusCode": 202,
"statusMessage": "Preparing your results. Try after 5 minutes to get the updated results"
}
Response:
200 OK
{
"cursors": {
"after": 4024760,
"before": 4024760,
"pageCount": 1,
"totalCount": 1
},
"data": [
{
"email": "user_email@example.com",
"id": 4024760,
"name": "John Doe",
"interested_in_being_contacted": true,
"user_id": "9jWs2N5Ex",
"visits": 1,
"time_stamp": "2021:12:25T12:20:56.00Z",
"time_spent": "20000"
}
],
"statusCode": 200,
"statusMessage": "SUCCESS"
}
400 Bad Request - in case the passed token is bad
400 Bad Request - in case the token does not belong to this Airmeet's community
400 Bad Request - in case the supplied airmeet_id param is invalid
412 Precondition Failed - in case the passed access token has expired
500 Internal Server Error - generic server error
2.10 Fetch Poll Responses
GET /airmeet/{airmeetId}/polls?after=<cursor>&before=<cursor>&size=<number>
This API gives a list of all poll responses
By default, the response page size is set to 50. Max can be 500.
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Response:
200 OK
{
"cursors": {
"after": 4024760,
"before": 4024760,
"pageCount": 1,
"totalCount": 1
},
"data": [
{
"email": "user_email@example.com",
"name": "John Doe",
"user_id": "9jWs2N5Ex",
"polls": [
{
"question": "Poll Question 1",
"answer": "Poll Answer 1",
"time_stamp": "2021:12:25T12:20:56.00Z"
},
{
"question": "Poll Question 2",
"session_id": "Poll Answer 2"
"time_stamp": "2021:12:25T12:20:56.00Z"
}
]
},
],
"statusCode": 200,
"statusMessage": "SUCCESS"
}
400 Bad Request - in case the passed token is bad
400 Bad Request - in case the token does not belong to this Airmeet's community
400 Bad Request - in case the supplied airmeet_id param is invalid
412 Precondition Failed - in case the passed access token has expired
500 Internal Server Error - generic server error
2.11 Fetch Questions Asked
GET /airmeet/{airmeetId}/questions
This API gives all the questions asked in an Airmeet
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Response:
200 OK
{
"data": [
{
"email": "user_email@example.com",
"name": "John Doe",
"user_id": "9jWs2N5Ex",
"questions": [
{
"question": "Question 1",
"session_id": "{sessionId 1}",
"upvoteCount": 1.0
},
{
"question": "Question 2",
"session_id": "{sessionId 2}",
"upvoteCount": 2.0,
"time_stamp": "2021:12:25T12:20:56.00Z"
}
]
},
],
"statusCode": 200,
"statusMessage": "SUCCESS"
}
400 Bad Request - in case the passed token is bad
400 Bad Request - in case the token does not belong to this Airmeet's community
400 Bad Request - in case the supplied airmeet_id param is invalid
412 Precondition Failed - in case the passed access token has expired
500 Internal Server Error - generic server error
3. Manage Registrations
3.1 Add Authorized Attendee
POST /airmeet/{airmeet_id}/attendee
Adds an attendee allowed to enter the Airmeet specified. A 'unique link (Magic Link)' would be sent to users and after clicking on the link the user can modify these details at the time of entry to the Airmeet.
The user will be visible in the session with the details provided in this API, but they are free to use different details in their individual user profiles.
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Request Payload:
{
"email": "user_email@example.com",
"firstName": "John",
"lastName": "Doe",
"city": "abc",
"country": "xyz",
"designation": "qwerty",
"organisation": "Airmeet"
}
Email address, First & Last name are mandatory fields.
Replaying this request does not change any details for the user. It only authorizes the user again, in case their access was revoked.
Response:
200 OK - {"email": "user_email@example.com", "entryLink":
"https://www.airmeet.com/e/<airmeet_id>?code=<unique_entry_code>"}
400 Bad Request - in case the passed token is bad
401 Unauthorized - in case the passed token does not have permission for the passed
airmeet_id
404 Not Found - in case the supplied airmeet_id param is invalid
412 Precondition Failed - the passed access token has expired
500 Internal Server Error - generic server error
3.2 Add Authorized Attendee with Custom Registration Fields
POST /airmeet/{airmeet_id}/attendee
Adds an attendee allowed to enter the Airmeet specified with custom registration fields. A 'unique link (Magic Link)' would be sent to users and after clicking on the link the user can modify these details at the time of entry to the Airmeet.
The user will be visible in the session with the details provided in this API.
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Request Payload:
{
"email": "user_email@example.com",
"firstName": "John",
"lastName": "Doe",
"city": "abc",
"country": "xyz",
"designation": "qwerty",
"organisation": "Airmeet"
"customFieldMapping": [
{
"fieldId": "d68ebeb2-bf18-4c96-837b-8872604ae653",
"value": "Longfield data"
},
{
"fieldId": "dbdf99b1a-ee3b-4dd3-9d97-d54df19f0ba6",
"value": "option02"
},
{
"fieldId": "af2c99c3-ba9a-4d17-a150-d06a1ae5b736",
"value": ["Medium","sad","Happy"]
}]
}
Email address, First & Last name are mandatory fields.
“customFieldMapping” takes an array of fields as the value. Use the “Fetch Custom Registration Fields” API to generate the appropriate value.
Replaying this request does not change any details for the user. It only authorizes the user again, in case their access was revoked.
Response:
200 OK - {"email": "user_email@example.com", "entryLink":
"https://www.airmeet.com/e/<airmeet_id>?code=<unique_entry_code>"}
400 Bad Request - in case the passed token is bad
401 Unauthorized - in case the passed token does not have permission for the passed
airmeet_id
404 Not Found - in case the supplied airmeet_id param is invalid
412 Precondition Failed - the passed access token has expired
500 Internal Server Error - generic server error
4. Manage Event
4.1 Create Airmeet
Create an Airmeet in your community
Automatically create a new Airmeet for a monthly review meeting for your employees or a new batch of students.
Endpoint:
POST /airmeet
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Request Payload:
{
"hostEmail": "host_email@example.com",
"eventName": "Event Name",
"shortDesc": "Short description for the event",
"eventImage": "event image url",
"longDesc": "Long description for the event",
"access": "INVITED_ONLY",
"eventType": "MEETUP",
"timing": {
"startTime": 1622528299000,
"endTime": 1622528299000,
"timezone": "Asia/Kolkata"
},
"config": {
"networking": true,
"tableCount": 0
}
}
Only hostEmail, eventName, shortDesc, timing - startTime, endTime, and timezone are mandatory fields
Only Social Webinar Airmeets are currently supported ( eventType: "MEETUP" )
Access Type can be “INVITED_ONLY” or “WITH_VERIFIED_EMAIL” or “WITHOUT_VERIFIED_EMAIL.” Default is “INVITED_ONLY”
“INVITED_ONLY” - only those who have been invited will be able to join the event
“WITH_VERIFIED_EMAIL” - only those users who have a verified email will be able to join the event
“WITHOUT_VERIFIED_EMAIL” - anyone with the event link will be able to join the event
Start and End time should be unix timestamp
timezone is a Canonical tz name, e.g., "Asia/Kolkata" see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones for the full list
Few timezones might not be available - please check the dashboard for available timezones
Response:
200 OK - {"uuid":"a23f56d0-ba1d-11eb-86c0-exampleuuid", "airmeet status" : "CREATED"}
400 Bad Request - in case the passed token is bad
401 Unauthorized - in case the passed token does not have permission for the passed community_id
404 Not Found - in case the supplied community_id param is invalid
412 Precondition Failed - the passed access token has expired
500 Internal Server Error - generic server error
4.2 Add Speaker
Add a speaker to your Airmeet event
Call this API multiple times for adding speakers in bulk
Endpoint:
POST /airmeet/{airmeet_id}/speaker
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Request Payload:
{
"name": "Speaker’s name",
"email": "speaker.email@example.com",
"organisation": "",
"designation": "",
"imageUrl": "",
"bio": "",
"city": "",
"country": ""
}
Only name and email are mandatory fields
All fields are strings
Response:
200 OK - {"email":"string","status":"ADDED_TO_EVENT"}
400 Bad Request - in case the speaker with the same name or email already exists for the specified Airmeet.
404 Not Found - in case the supplied airmeet_id param is invalid
500 Internal Server Error - generic server error
4.3 Create Session
Add a session to your Airmeet event
Call this API multiple times for creating sessions in bulk
Endpoint:
POST /airmeet/{airmeet_id}/session
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Request Payload:
{
"sessionTitle": "Title for the session",
"sessionStartTime": 1628149140000,
"sessionDuration": 1800,
"sessionSummary": "string",
"hostEmail": "host.email@example.com",
"speakerEmails": [ "speaker1.email@example.com",
"speaker2.email@example.com" ],
"cohostEmails": [ "team.member@example.com" ],
“type”:”HOSTING”
}
Only sessionTitle, sessionStartTime, and hostEmail are mandatory fields
Speakers should be added to the Airmeet before creating the session
Team members should be added to the community before creating the session
If you want a speaker to get the same privilege as a co-host, you can add their email in both the speaker and cohost fields
Session type should be HOSTING only
Response:
200 OK - {"uuid":"64975ddc-c09e-47cd-b89e-832c6b7dc7e1", "token": [ { "email": "speaker1.email@example.com", "token": "https://www.airmeet.com/event/session?t=<unique-code>" }, { "email": "speaker2.email@example.com", "token": "https://www.airmeet.com/event/session?t=<unique-code>"} ] }
400 Bad Request - in case there is already an overlapping session(same time)
404 Not Found - in case the supplied airmeet_id param is invalid
412 Precondition Failed - the passed access token has expired
500 Internal Server Error - generic server error
4.4 Start Airmeet
Use this API to start and end your Airmeet once it is created, without requiring a visit to the community dashboard
Endpoint:
POST /api/v1/publi/airmeet/{airmeet_id}/status
Headers:
X-Airmeet-Access-Token: airmeet_access_token
Request Payload:
{ "status": "ONGOING" } to start an Airmeet
{ "status": "FINISHED" } to end an Airmeet
Response:
200 OK - { "statusUpdated": true }
400 Bad Request - in case the status does not exist
404 Not Found - in case the supplied airmeet_id param is invalid
500 Internal Server Error - generic server error
Need more help? Contact support@airmeet.com or visit our 24*7 Support Lounge.
Want to brainstorm and connect with other Airmeet Users and Event Professionals from around the world? Fill in the form to Join our community on Slack.