Airmeet Public API

Modified on Fri, 12 Jan 2024 at 12:03 PM






TABLE OF CONTENTS


 

1. Overview


Connect your Platform stack with Airmeet APIs and create events, add sessions or add participants for an Airmeet event.


2. Use cases

  • Adding registrations to an event
  • Adding speakers in bulk
  • Creating sessions in bulk
  • Creating booths in bulk
  • Fetching attendance for the event, sessions, and booths for an event
  • Fetching poll responses, questions asked for an event



Datacenter (region)-wise API endpoints: 


1. Use the "Default region" API if your community URL looks like this:

Default region (Mumbai): https://api-gateway.airmeet.com/prod



2. Use the "EU region" API if your community URL looks like this:

EU region: https://api-gateway-prod.eu.airmeet.com/prod



3. Use the "US region" API if your community URL looks like this:

US region: https://api-gateway-prod.us.airmeet.com/prod



Community dashboard: https://www.airmeet.com/ (use this to get a key pair issued).

 


3. Authentication 

3.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.

 


 

3.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

 


 

4. Event Details

4.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


 

4.2 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 1000 registrants. Eg. Set parameter pageNumber=2 for response number 1001-2000, 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





4.3 Fetch Airmeet Sessions


GET /airmeet/{airmeetId}/info

 

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




4.4 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



4.5 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


 

 


4.6 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



4.7 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

 


4.8 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

 


4.9 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

 


4.10 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


4.11 Fetch Event Tracks


GET /airmeet/{airmeetId}/tracks


  • This API gives all the tracks in an Airmeet.

 

Headers:

X-Airmeet-Access-Token: airmeet_access_token


Response:

200 OK


{

    "tracks": [

        {

            "uid": "1f828815-aaaa-bbbb-cccc-02ee41df1d05",

            "name": "track name",

            "description": "track description",

            "track_order": null,

            "metaData": {

                "colorCode": "hsl(9,96%,47%)"

            },

            "sessions": [

                "6834900f-aaaa-bbbb-cccc-feebca99c69e"

            ]

        },

        {...

        }

    ]

}


Field

Description

tracks

List of all Tracks in the event

uid

Unique track id for each track

sessions

List of session ids in that track


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



4.12 Fetch Registration UTM


GET /airmeet/{airmeetId}/utms?after=<cursor>&before=<cursor>&size=<number>

 

  • This API gives a list of UTM parameters captured at the time of registration 

  • Read more: How to use UTM Parameters in Airmeet?

  • 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": 8,
        "before": 1,
        "pageCount": 1,
        "totalCount": 8
    },
    "data": [
        {
            "airmeetId": "{airmeetId}",
            "email": "user@yopmail.com",
            "id": 1,
            "utms": {
                "utm_campaign": "test1_test2",
                "utm_medium": "test1-test2",
                "utm_source": "test1-test2"
            }
        },
        {
            "airmeetId": "{airmeetId}",
            "email": "user@yopmail.com",
            "id": 2,
            "utms": {
                "utm_campaign": null,
                "utm_medium": "test123-_-_",
                "utm_source": null
            }
        },
        {
            "airmeetId": "{airmeetId}",
            "email": "user@yopmail.com",
            "id": 3,
            "utms": {
                "utm_campaign": "CAMP1234567890asdfghjkwertyuiopzxcvbnm",
                "utm_medium": null,
                "utm_source": null
            }
        },
        {
            "airmeetId": "{airmeetId}",
            "email": "user@yopmail.com",
            "id": 4,
            "utms": {
                "utm_campaign": null,
                "utm_medium": null,
                "utm_source": "SOURCE"
            }
        },
        {
            "airmeetId": "{airmeetId}",
            "email": "user@yopmail.com",
            "id": 5,
            "utms": {
                "utm_campaign": "test2",
                "utm_medium": "TES1T",
                "utm_source": null
            }
        },
        {
            "airmeetId": "{airmeetId}",
            "email": "user@yopmail.com",
            "id": 6,
            "utms": {
                "utm_campaign": "test1",
                "utm_medium": null,
                "utm_source": "test2"
            }
        },
        {
            "airmeetId": "{airmeetId}",
            "email": "user@yopmail.com",
            "id": 7,
            "utms": {
                "utm_campaign": null,
                "utm_medium": "ajknvjds",
                "utm_source": "jsdnv"
            }
        }
    ],
    "statusCode": 200,
    "statusMessage": "SUCCESS"
}

Note: 

  • In "airmeetId": "{airmeetId}", kindly enter the event link inplace of "{airmeetId}" 
  • In "email": This should be the participant's email id



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


5. Manage Registrations




5.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 can 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",

"attendance_type": "IN-PERSON",

"city": "abc",

"country": "xyz",

"designation": "qwerty",

"organisation": "Airmeet",

"registerAttendee": false,

"sendEmailInvite": true

}

 

Email address, First & Last name are mandatory fields.


For a  Hybrid Conference Format, the attendance type field is mandated, and  "attendance_type": "IN-PERSON" or "VIRTUAL." should be mentioned.


IN-PERSON: For attended joining onsite. The attendee will also receive an email containing a QR code and magic link.

VIRTUAL: For attendees joining virtually from their desktop/laptop.


Note :

  • If registerAttendee is set as false, the attendee will be treated as an invitation and saved in the ‘registration pending’ state until they click on their unique link. The default value for registerAttendee is false. It is an optional parameter.
  • Set registerAttendee as true if you want to add the attendee as a confirmed registration. Please note that this will increase the number of event registrations for the event and reduce the number of registrations left by 1.
  • If sendEmailInvite is set to true, an email will be sent to the attendee with the event calendar invite and the unique link. The default value for sendEmailInvite is true. It is an optional parameter.
  • Set sendEmailInvite to false if you wish to skip sending the email to your attendee.
  • For the Hybrid Conference format, if the attendance type: is "IN-PERSON" or "VIRTUAL," the participants would be considered registered by default, and the registration limit would be deducted.
  • Registration Form fields are trimmed to fit the permitted field length on Airmeet. Name, Organisation, Designation, City and Country fields are trimmed to 70 characters. FirstName and LastName fields are trimmed to 35 characters. If the field in API is longer than 70 characters, we add ‘...’ at the end to indicate that the field has been trimmed.


Replaying this request does not change any details for the user. It only authorizes the user again in case their access is 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

 





5.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"]

    }],

"registerAttendee": false,

"sendEmailInvite": true

}

 

Email address, First & Last name are mandatory fields.


For a  Hybrid Conference Format, the attendance type field is mandated, and  "attendance_type": "IN-PERSON," or "VIRTUAL." should be mentioned.


IN-PERSON: For attended joining onsite. The attendee will also receive an email containing a QR code and magic link.

VIRTUAL: For attendees joining virtually from their desktop/laptop.


Note :


“custom field mapping” takes an array of fields as the value. Use the “Fetch Custom Registration Fields” API to generate the appropriate value. 

4.4 Fetch Airmeet Custom Registration Fields

Replaying this request does not change any details for the user. It only authorizes the user again in case their access was revoked.


  • If registerAttendee is set as false, the attendee will be treated as an invitation and saved in the ‘registration pending’ state until they click on their unique link. The default value for registerAttendee is false. It is an optional parameter.

  • Set registerAttendee as true if you want to add the attendee as a confirmed registration. Please note that this will increase the number of event registrations for the event and reduce the number of registrations left by 1.

  • If sendEmailInvite is set to true, an email will be sent to the attendee with the event calendar invite and the unique link. The default value for sendEmailInvite is true. It is an optional parameter.

  • Set sendEmailInvite to false if you wish to skip sending the email to your attendee.

  • For the Hybrid Conference format, if the attendance type: is "IN-PERSON" or "VIRTUAL," the participants would be considered registered by default, and the registration limit would be deducted.

 

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




5.3. Block Attendee


PUT /airmeet/{airmeetId}/attendee/block

 

Blocks an attendee from the specified Airmeet 

 

Headers:

X-Airmeet-Access-Token: airmeet_access_token


Request Payload:

{

    "attendeeEmail": "user_email@example.com",

}

Here, attendeeEmail is the email of the attendee being blocked from the event.


Response:

 

200 OK - {"success": true}

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



5.4  Unblock Attendee


PUT /airmeet/{airmeetId}/attendee/unblock

 

Removes the block on an attendee from the specified Airmeet 

 

Headers:

X-Airmeet-Access-Token: airmeet_access_token


Request Payload:

{

    "attendeeEmail": "user_email@example.com",

}

Here, attendeeEmail is the email of the attendee whose block from the event is being removed.


Response:

 

200 OK - {"success": true}

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




6. Manage Event


6.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",

"longDesc": "Long description for the event",

"access": "INVITED_ONLY",

"eventOrganiserName": "Community Name",

"supportEmail":"support@yourdomain.com",

"eventType": "MEETUP",

"venueTitle":"Venue Name",

"registrationApprovalRequired": true,

"venueCapacity": 100,

"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

  • Access Type can be “INVITED_ONLY” or “WITH_VERIFIED_EMAIL” or “WITHOUT_VERIFIED_EMAIL.” or “EMAIL_UNIQUE_LINK”. 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

    • “EMAIL_UNIQUE_LINK” - during registration, users will receive a unique link on their email which they have to click to complete registration and 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

Field

Description

Model

Required

hostEmail

Email of the host

string

Yes

eventName

Name of the event

string

minLength: 3

maxLength: 80

Yes

shortDesc

Short description of the event

string

minLength: 1

Yes

longDesc

Short description of the event

string

No

access

Access type for the event

string enum

[ “INVITED_ONLY”, “WITH_VERIFIED_EMAIL”, “WITHOUT_VERIFIED_EMAIL”, “EMAIL_UNIQUE_LINK” ]

No, default is “INVITED_ONLY”

eventOrganiserNameName of event organizerstringNo
supportEmailYour support emailstringNo

eventType

Airmeet event type

string enum:

[ “MEETUP”, “CONFERENCE”, “HYBRID_CONFERENCE”,”IN_PERSON_CONFERENCE” ]

No, default is “MEETUP”

venueTitle
Venue Title. Required for an In-person event
string
No
registrationApprovalRequired
Event registration requires approval. Required for an In-person event
boolean, [true, false]
No
venueCapacity
Venue capacity. Required for an In-person event
boolean, [true, false]

timing


-

Yes

startTime

Start time for the event.

Note: Needs to be in milliseconds

number

unix timestamp

Yes

endTime

The end time for the event.

Note: Needs to be in milliseconds 

number

unix timestamp

Yes

timezone

Timezone for the event

string

minLength: 1

Canonical tz name

Yes

config


-

No

networking

Enable social lounge for the event

boolean, [true, false]

No, default is true

tableCount

Number of tables in the social lounge

number

No, default is 12

 

 

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


6.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

  • imageUrl only accepts urls ending with “.jpg”, “.jpeg” and “.png”. If any other imageUrl is passed, the speaker will be added with a default profile image. This can be updated from the Airmeet dashboard.


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


6.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”

"tracks": ["{track uid}"],

"tags": ["tag1","tag2"],

"boothId": "{boothId}",

"speedNetworkingData": 
{

"conversationTime": 300,

 "extendNetworkingTime": 120
  }

"sessionMeta": {
    "hideHost": false
  }
}

 

Field

Description

Model

Required

sessionTitle

Title for the session

string

Yes

sessionStartTime

Start time for the session

 

Note: Needs to be in milliseconds

number

Unix timestamp rounded to minutes

Yes

session Duration

Duration of the event in minutes

number

default is 30 minutes

sessionSummary

Summary of the session

string

No

hostEmail

Email of the Airmeet event host

 

Note:  hostEmail should be a Community Manager or a Team Member of your community

string

Yes

speakerEmails

Emails of all the speakers

string array

No

cohostEmails

Emails of all the co-hosts

string array

No

type

Type of session

string enum

[“HOSTING”, “FLUID_LOUNGE”,

“BOOTH”,

“BREAK”,

“LARGE_CALL”,

“SPEED_NETWORKING”,

“STREAMING”]

No, the default is “HOSTING”

tracks

Track uids that the session needed to be added to

string array

No

tags

Tags to be associated with the session

string array

No

boothId

Booth id to be associated with the session

Note: Use this only for the ‘BOOTH’ session type

string

No

speedNetworkingData

Add this section for the speed networking session

Note: Use this only for ‘SPEED_NETWORKING’ session type

 

No

conversationTime

Set the conversation time

Note: Use this only for ‘SPEED_NETWORKING’ session type

number (time duration in seconds)

No, the default is 300

extendNetworkingTime

Allow for an extension of conversation time 

Note: Use this only for ‘SPEED_NETWORKING’ session type

number (time duration in seconds)

No, the default is 120

sessionMeta

Add this section for additional settings

 

No

hideHost

Set to true if you wish to hide the host in the schedule

boolean

No, the default is false


 

 

  • 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

  • Uploading of background assets for the ‘FLUID_LOUNGE’ session is not supported


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


6.4 Update Airmeet Status


Use this API to start and end your Airmeet once it is created, without requiring a visit to the community dashboard. You can also use this API to Pause and Archive your Airmeet.


  • status can be [‘ONGOING’, ’PAUSED’, ‘FINISHED’, ‘ARCHIVE’]


Endpoint:


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



{  "status": "PAUSED" } to pause an Airmeet



{  "status": "ARCHIVE" } to archive 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


6.5. Create Booth

  • Add a booth to your Airmeet event
  • Call this API multiple times for creating booths in bulk

Endpoint:

POST /airmeet/{airmeet_id}/booths

Headers:

X-Airmeet-Access-Token: airmeet_access_token

Request Payload:

{
    "name": "Booth Name",
    "exhibitors": [
        "exhibitor1.email@example.com",
        "exhibitor2.email@example.com"
    ],
    "tags": [
        "Tag 1",
        "Tag 2"
    ],
    "metaData": {
        "chatEnabled": true,
        "loungeEnabled": true,
        "broadcastEnabled": true,
        "tableCount": 6
    },
    "exhibitorInfo": [
        {
            "email": "exhibitor1.email@example.com",
            "exhibitorAttendanceType": "HYBRID"
        },
        {
            "email": "exhibitor2.email@example.com",
            "exhibitorAttendanceType": "HYBRID"
        }
    ]
}


Field

Description

Model

Required

name

Title for the booth

string

Yes

exhibitors

List of Exhibitor emails

string array of emails

No

tags

Tags for the booth

String array

No

metaData

Additional settings

 

No

chatEnabled

Allow visitors and exhibitors to message each other

boolean

No, default true

loungeEnabled

Allow visitors to sit at various designated tables and converse with exhibitors

boolean

No, default true

tableCount

Number of tables

number

No, default 6

broadcastEnabled

Allow exhibitors to display live video content to their booth visitors

boolean

No, default true

 

  • The “name” field is the only mandatory field.

  • Booth Logo cannot be uploaded from the API and need to be added to the dashboard.

 

Response:

200 OK - {"uuid":"64975ddc-c09e-47cd-b89e-832c6b7dc7e1" }

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


6.6. Delete Session

Use this API to Delete a Session in your Airmeet


Endpoint:


DELETE /airmeet/{airmeet_id}/session/{session_id}


Headers:


X-Airmeet-Access-Token: airmeet_access_token



Response:


200 OK - { "success": 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




6.7. Customize Event Landing Page


Use this API to customize the landing page for your Airmeet. You can add 1 slide image, choose between dark and light themes, choose between modern and classic layouts, and set the color code for buttons and highlights on the landing page.


  • ambience can be [‘LIGHT’, ‘DARK’] 

  • layout can be [‘CLASSIC’, ‘MODERN’]

  • highlightColor and buttonTextColor should be hex color codes (‘#’ followed by the 6 character hex code)

  • imageUrl only accepts urls ending with “.jpg”, “.jpeg” and “.png”



Endpoint:


PUT  /airmeet/{airmeet_id}/landing-page


Headers:


X-Airmeet-Access-Token: airmeet_access_token


Request Payload: 


{

    "ambience": "LIGHT",

    "layout": "CLASSIC",

    "highlightColor": "#0000ff",

    "buttonTextColor": "#ff9847",

    "imageUrl": "https://image_url"

}



Response:


200 OK - { "success": true }


400 Bad Request - in case the payload is incorrect


404 Not Found - in case the supplied airmeet_id param is invalid


500 Internal Server Error - generic server error





7. Points to keep in mind and Limitations

  • A few time zones might not be available. Kindly check the dashboard for available time zones while creating an event.
  • Email address and First and last name are mandatory fields in uploading the CSV file and the custom registration form.

  • While fetching the list of Airmeets, The before and after cursors cannot be used simultaneously. If they are both specified, the API ignores them before the cursor.

  • Tokens issued by this API are valid for 30 days and can be cached on the consumer service.

  • While creating a session:
    • Only SessionTitle, SessionStartTime, and Host Email 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.
    • The session type should be HOSTING only.


Need more help? Contact support@airmeet.com or visit our 24*7 Support Lounge.









Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select atleast one of the reasons

Feedback sent

We appreciate your effort and will try to fix the article