1. Event Details | Airmeet Public API

Modified on Mon, 15 Apr 2024 at 11:57 AM


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 API's


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. Airmeet doesn't show Archived (Delete) event.

 

 

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?emailIds=<comma separated email ids>&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

  • Use the emailIds query parameter to get participant details for specific email ids. You can query a single email ID or a list of comma separated email IDs.

  • 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"

            }

        }

    ]

}
Generic


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.

  • You can set the page size between 1 to 50.

  • 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

Generic
{

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

  • You can set the page size between 1 to 50.

  • 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

        }

    ]

}
Generic


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.

  • You can set the page size between 1 to 50.

  • 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

Generic
{

   "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

  • You can set the page size between 1 to 50.

 

Headers:

X-Airmeet-Access-Token: airmeet_access_token

Response:

200 OK

Generic
{

   "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

Generic
{

   "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

Generic
{

    "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"

}
Generic

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"
}
Generic


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



4.13 Download Session Recordings

Use this to get fresh links for downloading a session recording. The download links shared in this API are valid for 6 hours. 


Endpoint:

GET /airmeet/{airmeet id}/session-recordings?sessionIds=<session id>


Headers:

X-Airmeet-Access-Token: airmeet_access_token 


Response:

200 OK - 

{
    "recordings": [
        {
            "session_id": "uuuu-uuuu-uuuu",
            "session_name": "Session 1",
            "recording_status": "GENERATED",
            "size": "856 MB",
            "download_link": "https://streaming.airmeet.com/recordings/zzzz-zzzz-zzzz/yyyy-yyyy-yyyy/uuuu-uuuu-uuuu.mp4?Policy=aaaaaaaa&Key-Pair-Id=bbbbbbbb",
            "streaming_resolution": "HD+"
        }
    ],
    "recordingsCount": 1,
    "totalCount": 1
}
Generic



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.14 Fetch Event Replay Attendance

Endpoint:

GET /airmeet/{airmeet_id}/event-replay-attendees?after=<cursor>&before=<cursor>&size=<number>.


  • This API gives a list of all session replay attendees.

  • You can set the page size between 1 to 50.

  • 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:

200 OK

{
    "cursors": {
        "after": 5,
        "before": 1,
        "pageCount": 1,
        "totalCount": 5
    },
    "data": [
        {
            "duration_viewed": 5,
            "email": "dummy@yopmail.com",
            "id": 1,
            "name": "dummy user",
            "session_name": "Welcome Session",
            "session_id": "<session id>"
        }
      ],
    "statusCode": 200,
    "statusMessage": "SUCCESS"
}
Generic

Note 

  • duration_viewed is in minutes

  • id is the record id cursor that can be used for the before/after cursors. 

 

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. 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
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article