call resource type


APIs under the /beta version in Microsoft Graph are subject to change. Use of these APIs in production applications is not supported.

The call resource is created when there is an incoming call for the application or the application creates a new outgoing call via a POST on app/calls.

Calls can be set up as a peer-to-peer or as a multiparty call. For creating or joining a multiparty call, supply the chatInfo and meetingInfo. If these are not supplied, a new ad hoc meeting is created automatically. For an incoming call, record these values in a highly available store, so that your application to rejoin the call in the event your application crashes.

Although the same identity cannot be invited multiple times, it is possible for an application to join the same meeting multiple times. Each time the application joins, a distinct call id is provided for that call to the meeting. We recommend that you use separate identities to join the meeting in order for the clients to display them as different participants.


Method Return Type Description
Get call call Read properties of the call object.
Delete Delete or Hang-up an active call.
Call Handling
Answer Answer an incoming call.
Reject Reject an incoming call.
Redirect Redirect an incoming call.
Transfer Transfer a call
List participants participant collection Get a participant object collection.
Invite Participants commsOperation Invite participants to the active call.
Mute All Participants commsOperation Mute all participants in the call.
Mute Participant commsOperation Mute a participant in the group call.
Configure Audio Mixer commsOperation Configure audio in multiparty conversation.
Create audioRoutingGroup audioRoutingGroup Create a new audioRoutingGroup by posting to the audioRoutingGroups collection.
List audioRoutingGroups audioRoutingGroup collection Get a audioRoutingGroup object collection.
PlayPrompt playPromptOperation Play prompt in the call.
Record recordOperation Record a short audio clip from the call.
CancelMediaProcessing commsOperation Cancel media processing.
SubscribeToTone commsOperation Subscribe to DTMF tones.
Self Participant Operations
Mute commsOperation Mute self in the call.
Unmute commsOperation Unmute self in the call.
ChangeScreenSharingRole Start and stop sharing screen in the call.


Property Type Description
activeModalities String Collection The list of active modalities. Possible values are: unknown, audio, video, videoBasedScreenSharing, data. Read-only. Server generated.
answeredBy participantInfo The participant that answered the call. Read-only. Server generated.
callRoutes callRoute collection The routing information on how the call was retargeted. Read-only. Server generated.
callbackUri String The callback URL on which callbacks will be delivered. Must be https.
chatInfo chatInfo The chat information. Required information for meeting scenarios.
direction String The direction of the call. The possible value are incoming or outgoing. Read-only. Server generated.
id String The call id. Read-only. Server generated.
mediaConfig appHostedMediaConfig or serviceHostedMediaConfig The media configuration. Required information for creating peer to peer calls or joining meetings.
mediaState callMediaState Read-only. Server generated. The call media state.
meetingCapability meetingCapability Contains the capabilities of a meeting. Read-only. Server generated.
meetingInfo organizerMeetingInfo or tokenMeetingInfo The meeting information. Required information for meeting scenarios.
myParticipantId String Read-only. Server generated.
requestedModalities String collection The list of requested modalities. Possible values are: unknown, audio, video, videoBasedScreenSharing, data.
resultInfo resultInfo The result information. For example can hold termination reason. Read-only. Server generated.
ringingTimeoutInSeconds Int32 Ringing timeout in seconds for outgoing peer to peer calls. The max value for this attribute is 115 seconds.
routingPolicies String collection This property is applicable for peer to peer calls only. Possible values are: none, noMissedCall, disableForwardingExceptPhone, disableForwarding, preferSkypeForBusiness.
source participantInfo The originator of the call.
state String The call state. Possible values are: incoming, establishing, ringing, established, hold, transferring, transferAccepted, redirecting, terminating, terminated. Read-only. Server generated.
subject String The subject of the conversation.
targets participantInfo collection The targets of the call. Required information for creating peer to peer call.
tenantId String Read-only. Server generated. tenantId in Azure Active Directory.
terminationReason String Read-only. Server generated.
toneInfo toneInfo Read-only. Server generated.

Note: Properties marked as Server generated are ignored when processing POST on app/calls.


Relationship Type Description
audioRoutingGroups audioRoutingGroup collection Read-only. Nullable.
operations commsOperation collection Read-only. Nullable.
participants participant collection Read-only. Nullable.

JSON representation

The following is a JSON representation of the resource.

  "activeModalities": ["unknown | audio | video | videoBasedScreenSharing | data"],
  "answeredBy": {"@odata.type": "#microsoft.graph.participantInfo"},
  "callRoutes": [{"@odata.type": "#microsoft.graph.callRoute"}],
  "callbackUri": "String",
  "chatInfo": {"@odata.type": "#microsoft.graph.chatInfo"},
  "direction": "incoming | outgoing",
  "id": "String (identifier)",
  "mediaConfig": {"@odata.type": "#microsoft.graph.mediaConfig"},
  "mediaState": {"@odata.type": "#microsoft.graph.callMediaState"},
  "meetingCapability": {"@odata.type": "#microsoft.graph.meetingCapability"},
  "meetingInfo": {"@odata.type": "#microsoft.graph.meetingInfo"},
  "myParticipantId": "String",
  "replacesContext": "String",
  "requestedModalities": ["unknown | audio | video | videoBasedScreenSharing | data"],
  "resultInfo": {"@odata.type": "#microsoft.graph.resultInfo"},
  "ringingTimeoutInSeconds": 99,
  "routingPolicies": ["none | noMissedCall | disableForwardingExceptPhone | disableForwarding | preferSkypeForBusiness"],
  "source": {"@odata.type": "#microsoft.graph.participantInfo"},
  "state": "incoming | establishing | ringing | established | hold | transferring | transferAccepted | redirecting | terminating | terminated",
  "subject": "String",
  "targets": [{"@odata.type": "#microsoft.graph.participantInfo"}],
  "tenantId": "String",
  "terminationReason": "String",
  "toneInfo": {"@odata.type": "#microsoft.graph.toneInfo"}

Note: You will find join URL from a meeting scheduled with Microsoft Teams. Here's how to extract the data from the URL and fill chatInfo and meetingInfo.
decodes to:{"Tid":"72f988bf-86f1-41af-91ab-2d7cd011db47","Oid":"4b444206-207c-42f8-92a6-e332b41c88a2"}
  "chatInfo": {
    "threadId": "19:meeting_NTg0NmQ3NTctZDVkZC00YzRhLThmNmEtOGQ3M2E0ODdmZDZk@thread.v2",
    "messageId": "0",
    "replyChainMessageId": "0"
  "meetingInfo": {
    "@odata.type": "#microsoft.graph.organizerMeetingInfo",
    "organizer": {
      "user": {
        "tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
        "id": "4b444206-207c-42f8-92a6-e332b41c88a2"