Microsoft Azure Communication Services Recording API

The Recording API from Microsoft Azure Communication Services — 4 operation(s) for recording.

GitHub OpenAPI

Operations 5

POST /calling/recordings Start recording the call #
GET /calling/recordings/{recordingId} Get call recording properties #
DELETE /calling/recordings/{recordingId} Stop recording the call #
POST /calling/recordings/{recordingId}:pause Pause recording the call #
POST /calling/recordings/{recordingId}:resume Resume recording the call #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/microsoft-azure-communication-services:microsoft-azure-communication-services-recording-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

microsoft-azure-communication-services-recording-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Azure Communication Service Call Automation Recording API
  description: Azure Communication Service Call Automation APIs
  version: '2026-03-12'
servers:
- url: https://contoso.communication.azure.com
security:
- Authorization: []
tags:
- name: Recording
paths:
  /calling/recordings:
    post:
      tags:
      - Recording
      summary: Start recording the call
      operationId: CallRecording_StartRecording
      parameters:
      - $ref: '#/components/parameters/ApiVersionParameter'
      - in: header
        name: Repeatability-Request-ID
        description: If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID.
        schema:
          type: string
          format: uuid
      - in: header
        name: Repeatability-First-Sent
        description: 'If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT.'
        schema:
          type: string
          format: date-time-rfc1123
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommunicationErrorResponse'
        '200':
          description: Returns the start call recording response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordingStateResponse'
        '202':
          description: The service has accepted the StartCallRecording request and will begin processing it. You will receive either a StartRecordingFailed event or RecordingStateChanged event at your specified callback URI to update you on the status of the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordingStateResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartCallRecordingRequest'
        description: The request body of start call recording request.
        required: true
  /calling/recordings/{recordingId}:
    get:
      tags:
      - Recording
      summary: Get call recording properties
      operationId: CallRecording_GetRecordingProperties
      parameters:
      - $ref: '#/components/parameters/ApiVersionParameter'
      - in: path
        name: recordingId
        description: The recording id.
        required: true
        schema:
          type: string
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommunicationErrorResponse'
        '200':
          description: Returns the recording properties.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordingStateResponse'
    delete:
      tags:
      - Recording
      summary: Stop recording the call
      operationId: CallRecording_StopRecording
      parameters:
      - $ref: '#/components/parameters/ApiVersionParameter'
      - in: path
        name: recordingId
        description: The recording id.
        required: true
        schema:
          type: string
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommunicationErrorResponse'
        '204':
          description: Returns the stop call recording response.
  /calling/recordings/{recordingId}:pause:
    post:
      tags:
      - Recording
      summary: Pause recording the call
      operationId: CallRecording_PauseRecording
      parameters:
      - $ref: '#/components/parameters/ApiVersionParameter'
      - in: path
        name: recordingId
        description: The recording id.
        required: true
        schema:
          type: string
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommunicationErrorResponse'
        '202':
          description: The service has accepted the pause request and will begin processing it.
  /calling/recordings/{recordingId}:resume:
    post:
      tags:
      - Recording
      summary: Resume recording the call
      operationId: CallRecording_ResumeRecording
      parameters:
      - $ref: '#/components/parameters/ApiVersionParameter'
      - in: path
        name: recordingId
        description: The recording id.
        required: true
        schema:
          type: string
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommunicationErrorResponse'
        '202':
          description: The service has accepted the resume request and will begin processing it.
components:
  schemas:
    CommonMicrosoftTeamsAppIdentifierModel:
      description: A Microsoft Teams application.
      type: object
      required:
      - appId
      properties:
        appId:
          type: string
          description: The Id of the Microsoft Teams application.
        cloud:
          $ref: '#/components/schemas/CommunicationCloudEnvironmentModel'
          description: The cloud that the Microsoft Teams application belongs to. By default 'public' if missing.
    CommonCommunicationIdentifierModel:
      description: 'Identifies a participant in Azure Communication services. A participant is, for example, a phone number or an Azure communication user. This model is polymorphic: Apart from kind and rawId, at most one further property may be set which must match the kind enum value.'
      type: object
      properties:
        kind:
          $ref: '#/components/schemas/CommunicationIdentifierModelKind'
          description: The identifier kind. Only required in responses.
        rawId:
          type: string
          description: Raw Id of the identifier. Optional in requests, required in responses.
        communicationUser:
          $ref: '#/components/schemas/CommunicationUserIdentifierModel'
          description: The communication user.
        phoneNumber:
          $ref: '#/components/schemas/PhoneNumberIdentifierModel'
          description: The phone number.
        microsoftTeamsUser:
          $ref: '#/components/schemas/MicrosoftTeamsUserIdentifierModel'
          description: The Microsoft Teams user.
        microsoftTeamsApp:
          $ref: '#/components/schemas/MicrosoftTeamsAppIdentifierModel'
          description: The Microsoft Teams application.
        teamsExtensionUser:
          $ref: '#/components/schemas/TeamsExtensionUserIdentifierModel'
          description: The Microsoft Teams Extension user.
    StartCallRecordingRequest:
      description: The request payload start for call recording operation with call locator.
      type: object
      properties:
        callLocator:
          $ref: '#/components/schemas/CallLocator'
        callConnectionId:
          description: The call connection Id. (Only one of callLocator or callConnectionId to be used)
          type: string
        recordingStateCallbackUri:
          description: The uri to send notifications to.
          type: string
        recordingContentType:
          $ref: '#/components/schemas/RecordingContentType'
        recordingChannelType:
          $ref: '#/components/schemas/RecordingChannelType'
        recordingFormatType:
          $ref: '#/components/schemas/RecordingFormatType'
        audioChannelParticipantOrdering:
          description: 'The sequential order in which audio channels are assigned to participants in the unmixed recording.

            When ''recordingChannelType'' is set to ''unmixed'' and `audioChannelParticipantOrdering is not specified,

            the audio channel to participant mapping will be automatically assigned based on the order in which participant

            first audio was detected.  Channel to participant mapping details can be found in the metadata of the recording.'
          type: array
          items:
            $ref: '#/components/schemas/CommunicationIdentifierModel'
        channelAffinity:
          description: 'The channel affinity of call recording

            When ''recordingChannelType'' is set to ''unmixed'', if channelAffinity is not specified, ''channel'' will be automatically assigned.

            Channel-Participant mapping details can be found in the metadata of the recording.

            ///'
          type: array
          items:
            $ref: '#/components/schemas/ChannelAffinity'
        pauseOnStart:
          description: When set to true will start recording in Pause mode, which can be resumed.
          type: boolean
        externalStorage:
          $ref: '#/components/schemas/ExternalStorage'
      additionalProperties: false
    RecordingStorageKind:
      description: Defines the kind of external storage
      enum:
      - azureCommunicationServices
      - azureBlobStorage
      type: string
      x-ms-enum:
        name: RecordingStorageKind
        modelAsString: true
    CommonCommunicationErrorResponse:
      description: The Communication Services error.
      type: object
      required:
      - error
      properties:
        error:
          description: The Communication Services error.
          $ref: '#/components/schemas/CommunicationError'
    CommunicationError:
      $ref: '#/components/schemas/CommonCommunicationError'
    CommonPhoneNumberIdentifierModel:
      description: A phone number.
      type: object
      required:
      - value
      properties:
        value:
          type: string
          description: The phone number, usually in E.164 format.
        isAnonymous:
          type: boolean
          description: True if the phone number is anonymous. By default false if missing. If the phone number is anonymous, the value will be the string 'anonymous'.
        assertedId:
          type: string
          description: The asserted Id of the phone number. An asserted Id gets generated when the same phone number joins the same call more than once.
    RecordingState:
      enum:
      - active
      - inactive
      type: string
      x-ms-enum:
        name: RecordingState
        modelAsString: true
    CommonCommunicationError:
      description: The Communication Services error.
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: string
          description: The error code.
        message:
          type: string
          description: The error message.
        target:
          type: string
          readOnly: true
          description: The error target.
        details:
          type: array
          items:
            $ref: '#/components/schemas/CommunicationError'
          readOnly: true
          description: Further details about specific errors that led to this error.
        innererror:
          x-ms-client-name: innerError
          readOnly: true
          $ref: '#/components/schemas/CommunicationError'
          description: The inner error if any.
    CommonCommunicationUserIdentifierModel:
      description: A user that got created with an Azure Communication Services resource.
      type: object
      required:
      - id
      properties:
        id:
          type: string
          description: The Id of the communication user.
    CallLocatorKind:
      description: The call locator kind
      enum:
      - groupCallLocator
      - serverCallLocator
      - roomCallLocator
      type: string
      x-ms-enum:
        name: CallLocatorKind
        modelAsString: true
    RecordingKind:
      enum:
      - azureCommunicationServices
      - teams
      - teamsCompliance
      type: string
      x-ms-enum:
        name: RecordingKind
        modelAsString: true
    CallLocator:
      description: The locator used for joining or taking action on a call
      type: object
      properties:
        groupCallId:
          description: The group call id
          type: string
        serverCallId:
          description: The server call id.
          type: string
        roomId:
          description: The Acs room id. (Not supported for Start Recording)
          type: string
        kind:
          $ref: '#/components/schemas/CallLocatorKind'
      additionalProperties: false
    RecordingContentType:
      description: The content type of call recording.
      enum:
      - audio
      - audioVideo
      type: string
      x-ms-enum:
        name: RecordingContentType
        modelAsString: true
    CommonTeamsExtensionUserIdentifierModel:
      description: A Microsoft Teams Phone user who is using a Communication Services resource to extend their Teams Phone set up.
      type: object
      required:
      - userId
      - tenantId
      - resourceId
      properties:
        userId:
          type: string
          description: The Id of the Microsoft Teams Extension user, i.e. the Entra ID object Id of the user.
        tenantId:
          type: string
          description: The tenant Id of the Microsoft Teams Extension user.
        resourceId:
          type: string
          description: The Communication Services resource Id.
        cloud:
          $ref: '#/components/schemas/CommunicationCloudEnvironmentModel'
          description: The cloud that the Microsoft Teams Extension user belongs to. By default 'public' if missing.
    ExternalStorage:
      required:
      - recordingStorageKind
      type: object
      properties:
        recordingStorageKind:
          $ref: '#/components/schemas/RecordingStorageKind'
        recordingDestinationContainerUrl:
          format: uri
          description: Uri of a container or a location within a container
          type: string
      additionalProperties: false
    RecordingFormatType:
      description: Defines the format type of call recording.
      enum:
      - wav
      - mp3
      - mp4
      type: string
      x-ms-enum:
        name: RecordingFormatType
        modelAsString: true
    TeamsExtensionUserIdentifierModel:
      $ref: '#/components/schemas/CommonTeamsExtensionUserIdentifierModel'
    CommunicationIdentifierModel:
      $ref: '#/components/schemas/CommonCommunicationIdentifierModel'
    RecordingStateResponse:
      type: object
      properties:
        recordingId:
          type: string
        recordingState:
          $ref: '#/components/schemas/RecordingState'
        recordingKind:
          $ref: '#/components/schemas/RecordingKind'
      additionalProperties: false
    CommunicationErrorResponse:
      $ref: '#/components/schemas/CommonCommunicationErrorResponse'
    MicrosoftTeamsUserIdentifierModel:
      $ref: '#/components/schemas/CommonMicrosoftTeamsUserIdentifierModel'
    MicrosoftTeamsAppIdentifierModel:
      $ref: '#/components/schemas/CommonMicrosoftTeamsAppIdentifierModel'
    RecordingChannelType:
      description: Defines the channel type of call recording.
      enum:
      - mixed
      - unmixed
      type: string
      x-ms-enum:
        name: RecordingChannelType
        modelAsString: true
    CommonMicrosoftTeamsUserIdentifierModel:
      description: A Microsoft Teams user.
      type: object
      required:
      - userId
      properties:
        userId:
          type: string
          description: The Id of the Microsoft Teams user. If not anonymous, this is the Entra ID object Id of the user.
        isAnonymous:
          type: boolean
          description: True if the Microsoft Teams user is anonymous. By default false if missing.
        cloud:
          $ref: '#/components/schemas/CommunicationCloudEnvironmentModel'
          description: The cloud that the Microsoft Teams user belongs to. By default 'public' if missing.
    ChannelAffinity:
      description: Channel affinity for a participant
      required:
      - participant
      type: object
      properties:
        channel:
          format: int32
          description: Channel number to which bitstream from a particular participant will be written.
          maximum: 4
          minimum: 0
          type: integer
        participant:
          $ref: '#/components/schemas/CommunicationIdentifierModel'
      additionalProperties: false
    PhoneNumberIdentifierModel:
      $ref: '#/components/schemas/CommonPhoneNumberIdentifierModel'
    CommunicationUserIdentifierModel:
      $ref: '#/components/schemas/CommonCommunicationUserIdentifierModel'
  parameters:
    ApiVersionParameter:
      in: query
      name: api-version
      description: Version of the API to invoke.
      required: true
      x-ms-parameter-location: method
      schema:
        type: string
  securitySchemes:
    Authorization:
      type: apiKey
      name: Authorization
      in: header
      description: An Azure Communication Services user access token.
x-ms-parameterized-host:
  hostTemplate: '{endpoint}'
  useSchemePrefix: false
  parameters:
  - $ref: '#/components/parameters/Endpoint'