onlineMeeting: createOrGet
Article
02/03/2022
5 minutes to read
7 contributors
In this article
Namespace: microsoft.graph
Create an onlineMeeting object with a custom specified external ID. If the external ID already exists, this API will return the onlineMeeting object with that external ID.
Note : The meeting does not show on the user's calendar.
Permissions
One of the following permissions is required to call this API. To learn more, including how to choose permissions, see Permissions .
Permission type
Permissions (from least to most privileged)
Delegated (work or school account)
OnlineMeetings.ReadWrite
Delegated (personal Microsoft account)
Not supported.
Application
OnlineMeetings.ReadWrite.All*
Important
* Administrators must create an application access policy and grant it to a user, authorizing the app configured in the policy to create or get an online meeting with external ID on behalf of that user (user ID specified in the request path).
HTTP request
To call createOrGet API with delegated token:
POST /me/onlineMeetings/createOrGet
To call createOrGet API with application token:
POST /users/{userId}/onlineMeetings/createOrGet
Name
Description
Authorization
Bearer {token}. Required.
Content-type
application/json. Required.
Request body
In the request body, provide a JSON object with the following parameters.
Parameter
Type
Description
endDateTime
DateTime
The meeting end time in UTC.
externalId
String
The external ID. A custom ID. (Required)
participants
meetingParticipants
The participants associated with the online meeting. This includes the organizer and the attendees.
startDateTime
DateTime
The meeting start time in UTC.
subject
String
The subject of the online meeting.
Notes:
If the startDateTime and endDateTime are not provided, the startDateTime will default to the current dateTime value and endDateTime value will equal the startDateTime + 1 hour.
If the startDateTime is provided, but endDateTime is not, the endDateTime value will equal the startDateTime + 1 hour.
An error will be thrown if the endDateTime is provided without the startDateTime or if the endDateTime is earlier than the startDateTime .
Response
If successful, this method returns a 201 Created
response code if a new meeting is created, or a 200 OK
response code if an existing meeting is retrieved. In both cases, an onlineMeeting object is returned in the response body.
Examples
Request
The following example shows how to create or get an online meeting with an external ID.
POST https://graph.microsoft.com/v1.0/me/onlineMeetings/createOrGet
Content-Type: application/json
{
"startDateTime": "2020-02-06T01:49:21.3524945+00:00",
"endDateTime": "2020-02-06T02:19:21.3524945+00:00",
"subject": "Create a meeting with customId provided",
"externalId": "7eb8263f-d0e0-4149-bb1c-1f0476083c56",
"participants": {
"attendees": [
{
"identity": {
"user": {
"id": "1f35f2e6-9cab-44ad-8d5a-b74c14720000"
}
},
"upn": "test1@contoso.com"
}
]
}
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var startDateTime = DateTimeOffset.Parse("2020-02-06T01:49:21.3524945+00:00");
var endDateTime = DateTimeOffset.Parse("2020-02-06T02:19:21.3524945+00:00");
var subject = "Create a meeting with customId provided";
var externalId = "7eb8263f-d0e0-4149-bb1c-1f0476083c56";
var participants = new MeetingParticipants
{
Attendees = new List<MeetingParticipantInfo>()
{
new MeetingParticipantInfo
{
Identity = new IdentitySet
{
User = new Identity
{
Id = "1f35f2e6-9cab-44ad-8d5a-b74c14720000"
}
},
Upn = "test1@contoso.com"
}
}
};
await graphClient.Me.OnlineMeetings
.CreateOrGet(externalId,null,endDateTime,participants,startDateTime,subject)
.Request()
.PostAsync();
For details about how to add the SDK to your project and create an authProvider instance, see the SDK documentation .
const options = {
authProvider,
};
const client = Client.init(options);
const onlineMeeting = {
startDateTime: '2020-02-06T01:49:21.3524945+00:00',
endDateTime: '2020-02-06T02:19:21.3524945+00:00',
subject: 'Create a meeting with customId provided',
externalId: '7eb8263f-d0e0-4149-bb1c-1f0476083c56',
participants: {
attendees: [
{
identity: {
user: {
id: '1f35f2e6-9cab-44ad-8d5a-b74c14720000'
}
},
upn: 'test1@contoso.com'
}
]
}
};
await client.api('/me/onlineMeetings/createOrGet')
.post(onlineMeeting);
For details about how to add the SDK to your project and create an authProvider instance, see the SDK documentation .
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/me/onlineMeetings/createOrGet"]]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSMutableDictionary *payloadDictionary = [[NSMutableDictionary alloc] init];
NSString *startDateTimeDateTimeString = @"02/06/2020 01:49:21";
NSDate *startDateTime = [NSDate ms_dateFromString: startDateTimeDateTimeString];
payloadDictionary[@"startDateTime"] = startDateTime;
NSString *endDateTimeDateTimeString = @"02/06/2020 02:19:21";
NSDate *endDateTime = [NSDate ms_dateFromString: endDateTimeDateTimeString];
payloadDictionary[@"endDateTime"] = endDateTime;
NSString *subject = @"Create a meeting with customId provided";
payloadDictionary[@"subject"] = subject;
NSString *externalId = @"7eb8263f-d0e0-4149-bb1c-1f0476083c56";
payloadDictionary[@"externalId"] = externalId;
MSGraphMeetingParticipants *participants = [[MSGraphMeetingParticipants alloc] init];
NSMutableArray *attendeesList = [[NSMutableArray alloc] init];
MSGraphMeetingParticipantInfo *attendees = [[MSGraphMeetingParticipantInfo alloc] init];
MSGraphIdentitySet *identity = [[MSGraphIdentitySet alloc] init];
MSGraphIdentity *user = [[MSGraphIdentity alloc] init];
[user setId:@"1f35f2e6-9cab-44ad-8d5a-b74c14720000"];
[identity setUser:user];
[attendees setIdentity:identity];
[attendees setUpn:@"test1@contoso.com"];
[attendeesList addObject: attendees];
[participants setAttendees:attendeesList];
payloadDictionary[@"participants"] = participants;
NSData *data = [NSJSONSerialization dataWithJSONObject:payloadDictionary options:kNilOptions error:&error];
[urlRequest setHTTPBody:data];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
//Request Completed
}];
[meDataTask execute];
For details about how to add the SDK to your project and create an authProvider instance, see the SDK documentation .
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
OffsetDateTime startDateTime = OffsetDateTimeSerializer.deserialize("02/06/2020 01:49:21");
OffsetDateTime endDateTime = OffsetDateTimeSerializer.deserialize("02/06/2020 02:19:21");
String subject = "Create a meeting with customId provided";
String externalId = "7eb8263f-d0e0-4149-bb1c-1f0476083c56";
MeetingParticipants participants = new MeetingParticipants();
LinkedList<MeetingParticipantInfo> attendeesList = new LinkedList<MeetingParticipantInfo>();
MeetingParticipantInfo attendees = new MeetingParticipantInfo();
IdentitySet identity = new IdentitySet();
Identity user = new Identity();
user.id = "1f35f2e6-9cab-44ad-8d5a-b74c14720000";
identity.user = user;
attendees.identity = identity;
attendees.upn = "test1@contoso.com";
attendeesList.add(attendees);
participants.attendees = attendeesList;
graphClient.me().onlineMeetings()
.createOrGet(OnlineMeetingCreateOrGetParameterSet
.newBuilder()
.withChatInfo(null)
.withEndDateTime(endDateTime)
.withExternalId(externalId)
.withParticipants(participants)
.withStartDateTime(startDateTime)
.withSubject(subject)
.build())
.buildRequest()
.post();
For details about how to add the SDK to your project and create an authProvider instance, see the SDK documentation .
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestBody := msgraphsdk.New()
startDateTime, err := time.Parse(time.RFC3339, "2020-02-06T01:49:21.3524945+00:00")
requestBody.SetStartDateTime(&startDateTime)
endDateTime, err := time.Parse(time.RFC3339, "2020-02-06T02:19:21.3524945+00:00")
requestBody.SetEndDateTime(&endDateTime)
subject := "Create a meeting with customId provided"
requestBody.SetSubject(&subject)
externalId := "7eb8263f-d0e0-4149-bb1c-1f0476083c56"
requestBody.SetExternalId(&externalId)
participants := msgraphsdk.NewMeetingParticipants()
requestBody.SetParticipants(participants)
participants.SetAttendees( []MeetingParticipantInfo {
msgraphsdk.NewMeetingParticipantInfo(),
identity := msgraphsdk.NewIdentitySet()
SetIdentity(identity)
user := msgraphsdk.NewIdentity()
identity.SetUser(user)
id := "1f35f2e6-9cab-44ad-8d5a-b74c14720000"
user.SetId(&id)
upn := "test1@contoso.com"
SetUpn(&upn)
}
result, err := graphClient.Me().OnlineMeetings().CreateOrGet().Post(requestBody)
For details about how to add the SDK to your project and create an authProvider instance, see the SDK documentation .
Import-Module Microsoft.Graph.Users.Actions
$params = @{
StartDateTime = [System.DateTime]::Parse("2020-02-06T01:49:21.3524945+00:00")
EndDateTime = [System.DateTime]::Parse("2020-02-06T02:19:21.3524945+00:00")
Subject = "Create a meeting with customId provided"
ExternalId = "7eb8263f-d0e0-4149-bb1c-1f0476083c56"
Participants = @{
Attendees = @(
@{
Identity = @{
User = @{
Id = "1f35f2e6-9cab-44ad-8d5a-b74c14720000"
}
}
Upn = "test1@contoso.com"
}
)
}
}
# A UPN can also be used as -UserId.
Invoke-MgCreateOrGetUserOnlineMeeting -UserId $userId -BodyParameter $params
For details about how to add the SDK to your project and create an authProvider instance, see the SDK documentation .
Response
Note: The response object shown here might be shortened for readability.
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "(redacted)",
"creationDateTime": "2020-09-11T06:30:18.1909168Z",
"startDateTime": "2020-09-11T06:30:18.0615989Z",
"endDateTime": "2020-09-11T07:30:18.0615989Z",
"joinWebUrl": "(redacted)",
"subject": "Create a meeting with customId provided",
"isBroadcast": false,
"autoAdmittedUsers": "EveryoneInCompany",
"isEntryExitAnnounced": true,
"allowedPresenters": "everyone",
"videoTeleconferenceId": "(redacted)",
"externalId": "7eb8263f-d0e0-4149-bb1c-1f0476083c56",
"participants": {
"organizer": {
"upn": "(redacted)",
"role": "presenter",
"identity": {
"user": {
"id": "(redacted)",
}
}
},
"attendees": [
{
"upn": "test1@contoso.com",
"role": null,
"identity": {
"user": {
"id": "1f35f2e6-9cab-44ad-8d5a-b74c14720000",
}
}
}
],
"producers": [],
"contributors": []
},
"lobbyBypassSettings": {
"scope": "organization",
"isDialInBypassEnabled": false
},
"audioConferencing": {
"conferenceId": "(redacted)",
"tollNumber": "+1 206-485-3005",
"tollFreeNumber": null,
"dialinUrl": "https://dialin.teams.microsoft.com/0e73a853-1cc2-436c-b18c-9f53e0a97c24?id=(redacted)"
},
"chatInfo": {
"threadId": "19:7ebda77322dd4505ac4dedb5b67df076@thread.tacv2",
"messageId": "0",
"replyChainMessageId": null
},
}