Chat.Create
Allows the app to create chats without a signed-in user.
In short
Chat.Create is available as both an application permission and a delegated permission in the Microsoft Graph API, grouped under the Chat category. Allows the app to create chats without a signed-in user. It grants read-only access to resources. Application permissions always require admin consent.
Permission Details
Create chats
Allows the app to create chats without a signed-in user.
d9c48af6-9ad9-47ad-82c3-63757137b9af
Create chats
Allows the app to create chats on behalf of the signed-in user.
38826093-1258-4dea-98f0-00003be2b8d0
Properties
Properties is shown from stable Microsoft Graph v1.0 metadata.
| Property | Type | Description |
|---|---|---|
chatType |
chatType |
Specifies the type of chat. The possible values are: group, oneOnOne, meeting, unknownFutureValue. |
createdDateTime |
dateTimeOffsetNullable |
Date and time at which the chat was created. Read-only. |
id |
String |
The chat's unique identifier. Read-only. |
isHiddenForAllMembers |
BooleanNullable |
Indicates whether the chat is hidden for all its members. Read-only. |
lastUpdatedDateTime |
dateTimeOffsetNullable |
Date and time at which the chat was renamed or the list of members was last changed. Read-only. |
migrationMode |
migrationMode |
Indicates whether a chat is in migration mode. This value is null for chats that never entered migration mode. The possible values are: inProgress, completed, unknownFutureValue. |
onlineMeetingInfo |
teamworkOnlineMeetingInfo |
Represents details about an online meeting. If the chat isn't associated with an online meeting, the property is empty. Read-only. |
originalCreatedDateTime |
dateTimeOffsetNullable |
Timestamp of the original creation time for the chat. The value is null if the chat never entered migration mode. |
tenantId |
StringNullable |
The identifier of the tenant in which the chat was created. Read-only. |
topic |
StringNullable |
(Optional) Subject or topic for the chat. Only available for group chats. |
viewpoint |
chatViewpoint |
Represents caller-specific information about the chat, such as the last message read date and time. This property is populated only when the request is made in a delegated context. |
webUrl |
StringNullable |
The URL for the chat in Microsoft Teams. The URL should be treated as an opaque blob, and not parsed. Read-only. |
installedApps |
teamsAppInstallation collection |
A collection of all the apps in the chat. Nullable. |
lastMessagePreview |
object |
Preview of the last message sent in the chat. Null if no messages were sent in the chat. Currently, only the list chats operation supports this property. |
members |
conversationMember collection |
A collection of all the members in the chat. Nullable. |
Showing 15 of 20 properties.
JSON Representation
JSON representation is shown from stable Microsoft Graph v1.0 metadata.
{
"chatType": "String",
"createdDateTime": "String (timestamp)",
"id": "String (identifier)",
"isHiddenForAllMembers": "Boolean",
"lastUpdatedDateTime": "String (timestamp)",
"migrationMode": "String",
"onlineMeetingInfo": {
"@odata.type": "microsoft.graph.teamworkOnlineMeetingInfo"
},
"originalCreatedDateTime": "String (timestamp)",
"tenantId": "String",
"topic": "String",
"viewpoint": {
"@odata.type": "microsoft.graph.chatViewpoint"
},
"webUrl": "String"
}
Relationships
Relationships is shown from stable Microsoft Graph v1.0 metadata.
| Relationship | Type | Description |
|---|---|---|
installedApps |
teamsAppInstallation collection |
A collection of all the apps in the chat. Nullable. |
lastMessagePreview |
chatMessageInfo |
Preview of the last message sent in the chat. Null if no messages were sent in the chat. Currently, only the list chats operation supports this property. |
members |
conversationMember collection |
A collection of all the members in the chat. Nullable. |
messages |
chatMessage collection |
A collection of all the messages in the chat. Nullable. |
permissionGrants |
resourceSpecificPermissionGrant collection |
A collection of permissions granted to apps for the chat. |
pinnedMessages |
pinnedChatMessageInfo collection |
A collection of all the pinned messages in the chat. Nullable. |
tabs |
teamsTab collection |
A collection of all the tabs in the chat. Nullable. |
chatType |
chatType |
Related chatType data exposed by this resource. |
targetedMessages |
targetedChatMessage collection |
A collection of targeted messages in the chat that are visible only to specific users. Nullable. You can't expand this relationship using $expand. Targeted messages can also be retrieved via the userTeamwork: getAllTargetedMessages API. |
operations |
teamsAsyncOperation collection |
A collection of all the Teams async operations that ran or are running on the chat. Nullable. |
Graph Methods
Microsoft Graph v1.0 endpoints are mapped directly from refreshed Microsoft Learn permissions tables.
| Methods |
|---|
POST
/chats
|
Microsoft Graph beta endpoints are mapped directly from refreshed Microsoft Learn permissions tables.
| Methods |
|---|
POST
/chats
|
Code Examples
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new Chat
{
ChatType = ChatType.OneOnOne,
Members = new List<ConversationMember>
{
new AadUserConversationMember
{
OdataType = "#microsoft.graph.aadUserConversationMember",
Roles = new List<string>
{
"owner",
},
AdditionalData = new Dictionary<string, object>
{
{
"[email protected]" , "https://graph.microsoft.com/v1.0/users('8b081ef6-4792-4def-b2c9-c363a1bf41d5')"
},
},
},
new AadUserConversationMember
{
OdataType = "#microsoft.graph.aadUserConversationMember",
Roles = new List<string>
{
"owner",
},
AdditionalData = new Dictionary<string, object>
{
{
"[email protected]" , "https://graph.microsoft.com/v1.0/users('82af01c5-f7cc-4a2e-a728-3a5df21afd9d')"
},
},
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Chats.PostAsync(requestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const chat = {
chatType: 'oneOnOne',
members: [
{
'@odata.type': '#microsoft.graph.aadUserConversationMember',
roles: ['owner'],
'[email protected]': 'https://graph.microsoft.com/v1.0/users(\'8b081ef6-4792-4def-b2c9-c363a1bf41d5\')'
},
{
'@odata.type': '#microsoft.graph.aadUserConversationMember',
roles: ['owner'],
'[email protected]': 'https://graph.microsoft.com/v1.0/users(\'82af01c5-f7cc-4a2e-a728-3a5df21afd9d\')'
}
]
};
await client.api('/chats')
.post(chat);
Import-Module Microsoft.Graph.Teams
$params = @{
chatType = "oneOnOne"
members = @(
@{
"@odata.type" = "#microsoft.graph.aadUserConversationMember"
roles = @(
"owner"
)
"[email protected]" = "https://graph.microsoft.com/v1.0/users('8b081ef6-4792-4def-b2c9-c363a1bf41d5')"
}
@{
"@odata.type" = "#microsoft.graph.aadUserConversationMember"
roles = @(
"owner"
)
"[email protected]" = "https://graph.microsoft.com/v1.0/users('82af01c5-f7cc-4a2e-a728-3a5df21afd9d')"
}
)
}
New-MgChat -BodyParameter $params
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.chat import Chat
from msgraph.generated.models.chat_type import ChatType
from msgraph.generated.models.conversation_member import ConversationMember
from msgraph.generated.models.aad_user_conversation_member import AadUserConversationMember
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = Chat(
chat_type = ChatType.OneOnOne,
members = [
AadUserConversationMember(
odata_type = "#microsoft.graph.aadUserConversationMember",
roles = [
"owner",
],
additional_data = {
"user@odata_bind" : "https://graph.microsoft.com/v1.0/users('8b081ef6-4792-4def-b2c9-c363a1bf41d5')",
}
),
AadUserConversationMember(
odata_type = "#microsoft.graph.aadUserConversationMember",
roles = [
"owner",
],
additional_data = {
"user@odata_bind" : "https://graph.microsoft.com/v1.0/users('82af01c5-f7cc-4a2e-a728-3a5df21afd9d')",
}
),
],
)
result = await graph_client.chats.post(request_body)
App Registration
Navigate to Azure Portal
Go to App registrations in Microsoft Entra admin center
Add API Permission
Select your app → API permissions → Add a permission → Microsoft Graph
Select Permission Type
Choose Application permissions or delegated permissions and search for Chat.Create
Grant Admin Consent
Application permissions always require admin consent.
Frequently asked questions
What is the Chat.Create Microsoft Graph permission?
Chat.Create is available as both an application permission and a delegated permission in the Microsoft Graph API, grouped under the Chat category. Allows the app to create chats without a signed-in user. It grants read-only access to resources. Application permissions always require admin consent. It is mapped to the Microsoft Graph chat resource type. 2 documented Microsoft Graph REST methods require it. 2 Microsoft Graph PowerShell commands are documented for it.
Is Chat.Create an application or a delegated permission?
Chat.Create is available as both an application permission (app-only access, no signed-in user) and a delegated permission (access on behalf of a signed-in user).
Does Chat.Create require admin consent?
Application permissions always require admin consent.
What is the permission ID (GUID) for Chat.Create?
For Chat.Create, the application (app role) ID is d9c48af6-9ad9-47ad-82c3-63757137b9af, and the delegated (OAuth2 scope) ID is 38826093-1258-4dea-98f0-00003be2b8d0. These are the real Microsoft Graph identifiers and can be used directly in an app registration manifest.