call: record


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

Record the call.


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) Not Supported
Delegated (personal Microsoft account) Not Supported
Application Calls.AccessMedia.All

HTTP request

POST /app/calls/{id}/record
POST /applications/{id}/calls/{id}/record

Request headers

Name Description
Authorization Bearer {token}. Required.

Request body

In the request body, provide a JSON object with the following parameters.

Parameter Type Description
prompts mediaPrompt collection Collection of prompts to play (if any) before recording starts. Customers can choose to specify "playPrompt" action separately or specify as part of "record" - mostly all records are preceeded by a prompt
bargeInAllowed Boolean Allow users to enter choice before prompt finishes.
initialSilenceTimeoutInSeconds Int32 Maximum initial silence allowed from the time we start the record operation before we timeout and fail the operation. If we are playing a prompt, then this timer starts after prompt finishes.
maxSilenceTimeoutInSeconds Int32 The maximum silence timeout in seconds.
maxRecordDurationInSeconds Int32 The maximum record duration in seconds.
playBeep Boolean Plays a beep after playing the prompt.
streamWhileRecording Boolean If set to true, a resource location will be provided as soon as the recording starts.
stopTones String collection Stop tones specified to end recording.
clientContext String The client context.


Returns 202 Accepted response code and a Location header with a uri to the commsOperation created for this request.


The following example shows how to call this API.


The following example shows the request.

Content-Type: application/json
Content-Length: 394

  "bargeInAllowed": true,
  "clientContext": "d45324c1-fcb5-430a-902c-f20af696537c",
  "prompts": [
      "@odata.type": "#microsoft.graph.mediaPrompt",
      "mediaInfo": {
        "uri": "",
        "resourceId": "1D6DE2D4-CD51-4309-8DAA-70768651088E"
      "loop": 5
  "maxRecordDurationInSeconds": 1800,
  "initialSilenceTimeoutInSeconds": 10,
  "maxSilenceTimeoutInSeconds": 2,
  "recordingFormat": "wav",
  "playBeep": true,
  "streamWhileRecording": true,
  "stopTones": [ "#", "11", "*" ]

Note: The response object shown here might be shortened for readability. All the properties will be returned from an actual call.

HTTP/1.1 202 Accepted
Notification - operation completed
Authorization: Bearer <TOKEN>
Content-Type: application/json
  "value": [
      "changeType": "deleted",
      "resource": "/app/calls/57DAB8B1894C409AB240BD8BEAE78896/operations/0FE0623FD62842EDB4BD8AC290072CC5",
      "resourceData": {
        "@odata.type": "#microsoft.graph.recordOperation",
        "": "/app/calls/57DAB8B1894C409AB240BD8BEAE78896/operations/0FE0623FD62842EDB4BD8AC290072CC5",
        "@odata.etag": "W/\"54451\"",
        "clientContext": "d45324c1-fcb5-430a-902c-f20af696537c",
        "status": "completed",
        "recordResourceLocation": "https://file.location/17e3b46c-f61d-4f4d-9635-c626ef18e6ad",
        "recordResourceAccessToken": "<access-token>",
        "completionReason": "stopToneDetected"