Access the Microsoft Teams API with managed OAuth authentication via Microsoft Graph. Manage teams, channels, messages, meetings, and access recordings and transcripts.
Reference
List Joined Teams
GET /microsoft-teams/v1.0/me/joinedTeamsResponse:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#teams",
"@odata.count": 1,
"value": [
{
"id": "b643f103-870d-4f98-a23d-e6f164fae33e",
"displayName": "carvedai.com",
"description": null,
"isArchived": false,
"tenantId": "cb83c3f9-6d16-4cf3-bd8c-ab16b37932f9"
}
]
}Get Team
GET /microsoft-teams/v1.0/teams/{team-id}List Channels
GET /microsoft-teams/v1.0/teams/{team-id}/channelsResponse:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#teams('...')/channels",
"@odata.count": 1,
"value": [
{
"id": "19:9fwtZjo3IM0D8bLdQqR-_oMFw1eUDlzWjPfIhNGhVd41@thread.tacv2",
"createdDateTime": "2026-02-16T20:09:27.254Z",
"displayName": "General",
"description": null,
"email": "carvedai.com473@carvedai.com",
"membershipType": "standard",
"isArchived": false
}
]
}List Private Channels
GET /microsoft-teams/v1.0/teams/{team-id}/channels?$filter=membershipType eq 'private'Get Channel
GET /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}Create Channel
POST /microsoft-teams/v1.0/teams/{team-id}/channels
Content-Type: application/json
{
"displayName": "New Channel",
"description": "Channel description",
"membershipType": "standard"
}Response:
{
"id": "19:3b3361df822044558a062bb1a4ac8357@thread.tacv2",
"createdDateTime": "2026-02-17T20:24:33.9284462Z",
"displayName": "Maton Test Channel",
"description": "Channel created by Maton integration test",
"membershipType": "standard",
"isArchived": false
}Update Channel
PATCH /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}
Content-Type: application/json
{
"description": "Updated description"
}Returns 204 No Content on success. Note: The default "General" channel cannot be updated.
Delete Channel
DELETE /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}Returns 204 No Content on success.
List Channel Members
GET /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/membersResponse:
{
"@odata.count": 1,
"value": [
{
"@odata.type": "#microsoft.graph.aadUserConversationMember",
"id": "MCMjMiMj...",
"roles": ["owner"],
"displayName": "Kevin Kim",
"userId": "5f56d55b-2ffb-448d-982a-b52547431f71",
"email": "richard@carvedai.com"
}
]
}List Channel Messages
GET /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messagesSend Message to Channel
POST /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages
Content-Type: application/json
{
"body": {
"content": "Hello World"
}
}Response:
{
"id": "1771359569239",
"replyToId": null,
"messageType": "message",
"createdDateTime": "2026-02-17T20:19:29.239Z",
"importance": "normal",
"locale": "en-us",
"from": {
"user": {
"id": "5f56d55b-2ffb-448d-982a-b52547431f71",
"displayName": "Kevin Kim",
"userIdentityType": "aadUser",
"tenantId": "cb83c3f9-6d16-4cf3-bd8c-ab16b37932f9"
}
},
"body": {
"contentType": "text",
"content": "Hello World"
},
"channelIdentity": {
"teamId": "b643f103-870d-4f98-a23d-e6f164fae33e",
"channelId": "19:9fwtZjo3IM0D8bLdQqR-_oMFw1eUDlzWjPfIhNGhVd41@thread.tacv2"
}
}Send HTML Message
POST /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages
Content-Type: application/json
{
"body": {
"contentType": "html",
"content": "<h1>Hello</h1><p>This is <strong>formatted</strong> content.</p>"
}
}Reply to Message
POST /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages/{message-id}/replies
Content-Type: application/json
{
"body": {
"content": "This is a reply"
}
}List Message Replies
GET /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages/{message-id}/repliesEdit Message
PATCH /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages/{message-id}
Content-Type: application/json
{
"body": {
"content": "Updated message content"
}
}Returns 204 No Content on success.
List Team Members
GET /microsoft-teams/v1.0/teams/{team-id}/membersResponse:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#teams('...')/members",
"@odata.count": 1,
"value": [
{
"@odata.type": "#microsoft.graph.aadUserConversationMember",
"id": "MCMjMSMj...",
"roles": ["owner"],
"displayName": "Kevin Kim",
"userId": "5f56d55b-2ffb-448d-982a-b52547431f71",
"email": "richard@carvedai.com",
"tenantId": "cb83c3f9-6d16-4cf3-bd8c-ab16b37932f9"
}
]
}Get User Presence
GET /microsoft-teams/v1.0/me/presenceResponse:
{
"id": "5f56d55b-2ffb-448d-982a-b52547431f71",
"availability": "Offline",
"activity": "Offline",
"outOfOfficeSettings": {
"message": null,
"isOutOfOffice": false
}
}Availability values: Available, Busy, DoNotDisturb, Away, Offline
Get User Presence by ID
GET /microsoft-teams/v1.0/users/{user-id}/presenceReturns presence information for a specific user by their ID.
List Channel Tabs
GET /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/tabsResponse:
{
"@odata.count": 2,
"value": [
{
"id": "ee0b3e8b-dfc8-4945-a45d-28ceaf787d92",
"displayName": "Notes",
"webUrl": "https://teams.microsoft.com/l/entity/..."
},
{
"id": "3ed5b337-c2c9-4d5d-b7b4-84ff09a8fc1c",
"displayName": "Files",
"webUrl": "https://teams.microsoft.com/l/entity/..."
}
]
}List Installed Apps
GET /microsoft-teams/v1.0/teams/{team-id}/installedAppsCreate Meeting
POST /microsoft-teams/v1.0/me/onlineMeetings
Content-Type: application/json
{
"subject": "Team Sync",
"startDateTime": "2026-02-18T10:00:00Z",
"endDateTime": "2026-02-18T11:00:00Z"
}Response:
{
"id": "MSo1ZjU2ZDU1Yi0yZmZi...",
"subject": "Team Sync",
"startDateTime": "2026-02-18T10:00:00Z",
"endDateTime": "2026-02-18T11:00:00Z",
"joinUrl": "https://teams.microsoft.com/l/meetup-join/...",
"joinWebUrl": "https://teams.microsoft.com/l/meetup-join/...",
"meetingCode": "28636743235745",
"joinMeetingIdSettings": {
"joinMeetingId": "28636743235745",
"passcode": "qh37NK9V",
"isPasscodeRequired": true
},
"participants": {
"organizer": {
"upn": "richard@carvedai.com",
"role": "presenter"
}
}
}The joinUrl can be shared with attendees to join the meeting.
Get Meeting
GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}Find Meeting by Join URL
GET /microsoft-teams/v1.0/me/onlineMeetings?$filter=JoinWebUrl eq '{encoded-join-url}'Note: Microsoft Graph requires a filter to query meetings. You cannot list all meetings without filtering by JoinWebUrl.
List Calendar Events (includes scheduled meetings)
GET /microsoft-teams/v1.0/me/calendar/events?$top=10Scheduled Teams meetings appear as calendar events with isOnlineMeeting: true.
Delete Meeting
DELETE /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}Returns 204 No Content on success.
Create Meeting with Attendees
POST /microsoft-teams/v1.0/me/onlineMeetings
Content-Type: application/json
{
"subject": "Project Review",
"startDateTime": "2026-02-18T14:00:00Z",
"endDateTime": "2026-02-18T15:00:00Z",
"participants": {
"attendees": [
{
"upn": "attendee@example.com",
"role": "attendee"
}
]
}
}List Meeting Recordings
GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/recordingsReturns a list of recordings for a meeting (available after the meeting has ended and recording was enabled).
Get Meeting Recording
GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/recordings/{recording-id}List Meeting Transcripts
GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/transcriptsReturns a list of transcripts for a meeting (available after the meeting has ended and transcription was enabled).
Get Meeting Transcript
GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/transcripts/{transcript-id}List Attendance Reports
GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/attendanceReportsReturns attendance reports for a meeting (available after the meeting has ended).
Get Attendance Report
GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/attendanceReports/{report-id}List User Chats
GET /microsoft-teams/v1.0/me/chatsGet Chat
GET /microsoft-teams/v1.0/chats/{chat-id}List Chat Messages
GET /microsoft-teams/v1.0/chats/{chat-id}/messagesSend Chat Message
POST /microsoft-teams/v1.0/chats/{chat-id}/messages
Content-Type: application/json
{
"body": {
"content": "Hello in chat"
}
}