TABLE OF CONTENTS

  • Generate Acces token & key
  • Authentication 
  • API's
    • List Airmeets
    • Fetch Airmeet registrations
    • Register a user
    • Add authorized attendee
    • Remove Authorised Attendee
    • Create Airmeet
    • Add Speaker
    • Create Session
    • Start Airmeet


API endpoint: https://api.airmeet.com/

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


Generate Acces token/key


Step 1: Sign in to your airmeet account ( https://www.airmeet.com/signup )

Step 2: Click on the "Settings" 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.



Authentication

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



a) List Airmeets

GET /api/v1/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




b) Fetch Airmeet registrations


GET /api/v1/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




c) Register a user


POST /api/v1/airmeet/{airmeet_id}/user


Adds a user to the Airmeet specified. If the user is not present on the Airmeet platform, 

we will create a user account with the details provided. The user can modify these details at the time of entry to the Airmeet.


The users added by this API are present in the registration list.


Headers:

X-Airmeet-Access-Token: airmeet_access_token


Request Payload:

{
"email": "user_email@example.com", 
"name": "John Doe", 
"city": "abc",
"country": "xyz",
"designation": "qwerty",
"organisation": "Airmeet"
}



Only email and name are mandatory fields.


Response:

200 OK - {"email": "user_email@example.com"}

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





d) Add authorized attendee


POST /api/v1/airmeet/{airmeet_id}/attendee


Adds an attendee allowed to enter the Airmeet specified. The user needs to complete

registration on the Airmeet website after they land on it if they are not already an Airmeet

user.


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",
"name": "John Doe",
"city": "abc",
"country": "xyz",
"designation": "qwerty",
"organization": "Airmeet"
}




Only email and 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




e) Remove Authorised Attendee


DELETE /api/v1/airmeet/{airmeet_id}/attendee/<url_encoded_attendee_email>

Revokes access to a particular airmeet for the specified email.


Headers:

X-Airmeet-Access-Token: airmeet_access_token


Response:

204 Success - the email access is successfully revoked

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 or no such email is

authorized for the Airmeet

412 Precondition Failed - the passed access token has expired

500 Internal Server Error - generic server error


Error response shape


{
    "success": false,
    "code": "BAD_REQUEST",
    "errors": [
        "Supplied token is bad"
    ]
}



Timeouts

The 60s, decided by the reverse proxy.



f) 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 /api/v1/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": 1622528299,
    "endTime": 1622528299,
    "timezone": "Asia/Kolkata"
},
"config": {
    "networking": true,
    "tableCount": 0
  }
}


  • Only hostEmail, eventName, shortDesc, timing - startTime, endTime, and timezone are mandatory fields

  • Only Meetup 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 

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

eventImage

Url of the event image

string

No

longDesc

Short description of the event

string

No

access

Access type for the event

string enum

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

No, default is “INVITED_ONLY”

eventType

Airmeet event type

string enum:

[ “MEETUP” ]

No, default is “MEETUP”

timing


-

Yes

startTime

Start time for the event

number

unix timestamp

Yes

endTime

The end time for the event

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


g) Add Speaker:

Add a speaker to your Airmeet event

Call this API multiple times for adding speakers in bulk

Endpoint:

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


h) Create Session:

Add a session to your Airmeet event

Call this API multiple times for creating sessions in bulk


Endpoint:

POST api/v1/airmeet/{airmeet_id}/session

Headers:

X-Airmeet-Access-Token: airmeet_access_token

Request Payload:

{ 
"sessionTitle": "Title for the session", 
"sessionStartTime": 1628149140,
"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”
}



Field

Description

Model

Required

sessionTitle

Title for the session

string

Yes

sessionStartTime

Start time for the session

number

Unix timestamp rounded to minutes

Yes

session Duration

Duration of the event in seconds

number

No, the default is 1800 seconds (30 minutes)

sessionSummary

Summary for the session

string

No

hostEmail

Email of the Airmeet event host

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”]

No, default is “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"}
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


i) 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/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.