<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "SiriKitCloudMedia",
  "identifier" : "/documentation/SiriKitCloudMedia",
  "metadataVersion" : "0.1.0",
  "role" : "Web Service",
  "symbol" : {
    "kind" : "Web Service",
    "modules" : [
      "SiriKit Cloud Media"
    ],
    "preciseIdentifier" : "SiriKitCloudMedia"
  },
  "title" : "SiriKit Cloud Media"
}
-->

# SiriKit Cloud Media

Stream music directly to HomePod speakers from your media service.

## Overview

When the user asks an authorized HomePod speaker to play some media, the media device can contact your `SiriKitCloudMedia` service directly, rather than send requests through an intermediary iOS device.

Download the SiriKit Cloud Media [OpenAPI Specification](https://developer.apple.com/sample-code/siri/sirikit-cloud-media-open-api.zip). For details about applying for the SiriKit Media Intents on HomePod program, see the HomePod section of [Siri for Developers](https://developer.apple.com/siri).

### Configure the User’s HomePod

Authorize HomePod speakers to contact your media service by adopting <doc://com.apple.documentation/documentation/MediaSetup> in your iOS app and vending tokens from an OAuth service. After the user enables your service for devices in their home, they can manage access in the Home app.

Provide a HomePod speaker with details about sending requests to your service by implementing the configuration endpoint. Include paths and required headers for the endpoints you support. See  [`Configure Your Service Endpoints`](/documentation/SiriKitCloudMedia/Configuration-Resource) for more information.

> Note:
> During a single session, some requests may come from a different HomePod speaker or an Apple TV within the user’s home. Respond to these requests the same as you do when a single device sends all of them. Use the ``doc://com.apple.sirikitcloudmedia/documentation/SiriKitCloudMedia/Session`` object to maintain continuity.

### Respond to a Siri Intent with a Media Playback Queue

Implement the [`Process a Play Media Intent`](/documentation/SiriKitCloudMedia/playMedia-1g2o9) endpoint to receive the user’s request, resolve the media they want to play, and handle the intent. Respond with a [`UserActivity`](/documentation/SiriKitCloudMedia/UserActivity), which the client uses to request a [`Queue`](/documentation/SiriKitCloudMedia/Queue) of media [`Content`](/documentation/SiriKitCloudMedia/Content) from the [`Get a Media Queue`](/documentation/SiriKitCloudMedia/playMedia-1onzj) endpoint.

Manage how frequently the user can skip content in a queue, and what playback controls are available with each piece of content, with the [`PlayMediaControl`](/documentation/SiriKitCloudMedia/PlayMediaControl) you include in each queue. Monitor user interactions and playback progress with periodic updates on the [`Report Playback Progress and Activity`](/documentation/SiriKitCloudMedia/updateActivity) endpoint. You may optionally respond to [`Report Playback Progress and Activity`](/documentation/SiriKitCloudMedia/updateActivity) requests with a queue segment to replace or modify the current playback queue.

### Adapt to the User’s Tastes

Empower the user to customize their library and playlists with the [`Process an Add Media Intent`](/documentation/SiriKitCloudMedia/addMedia) endpoint. They might ask Siri to add a certain artist’s latest album to their library, or to add the currently playing song to their Karaoke Practice playlist.

You can also tune algorithmic playlists by incorporating the preferences users share as [`Process an Update Media Affinity Intent`](/documentation/SiriKitCloudMedia/updateMediaAffinity) intents. For example, if the user says “I like rock-and-roll,” you might include more songs from that genre the next time they ask to play some music. Or if they say “I don’t like this song,” you might exclude the currently playing song from future recommendations.

## Topics

### Device Configuration

[`Configure Your Service Endpoints`](/documentation/SiriKitCloudMedia/Configuration-Resource)

Provide configuration details for your media server’s endpoints to a HomePod speaker or an Apple TV.

[`string ExtensionConfigTag`](/documentation/SiriKitCloudMedia/ExtensionConfigTag)

A unique identifier for a specific media service configuration.

[`object ExtensionConfig`](/documentation/SiriKitCloudMedia/ExtensionConfig)

Instructions for accessing your media service’s endpoints.

[`object PlayMediaControlActivity`](/documentation/SiriKitCloudMedia/PlayMediaControlActivity)

Options for reporting playback progress.

### Media Play Queues

[`Process a Play Media Intent`](/documentation/SiriKitCloudMedia/playMedia-1g2o9)

Interpret the user’s request to play a media item, and provide instructions to access a corresponding playback queue.

[`Get a Media Queue`](/documentation/SiriKitCloudMedia/playMedia-1onzj)

Provide a playback queue from a successfully processed play media intent.

### Content Protection

[`Retrieve an Asset’s Content Protection Key`](/documentation/SiriKitCloudMedia/contentProtectionKey)

Provide the content key for a specific protected asset.

[`object ContentProtectionKeyRequest`](/documentation/SiriKitCloudMedia/ContentProtectionKeyRequest)

A request for an item’s content protection key.

[`object ContentProtectionKeyResponse`](/documentation/SiriKitCloudMedia/ContentProtectionKeyResponse)

A response to a request for an item’s content protection key.

[`string ContentProtectionKeySystem`](/documentation/SiriKitCloudMedia/ContentProtectionKeySystem)

The content protection key systems that SiriKit Cloud Media supports.

### Playback Events

[`string QueueActivityReportEvent`](/documentation/SiriKitCloudMedia/QueueActivityReportEvent)

An event that occurs during content playback.

[`Report Playback Progress and Activity`](/documentation/SiriKitCloudMedia/updateActivity)

Monitor progress through the playback queue.

[`object UpdateActivityRequest`](/documentation/SiriKitCloudMedia/UpdateActivityRequest)

A report of the client’s current playback state and recent user interaction, and an opportunity for your service to modify the client’s playback queue.

[`object UpdateActivityResponse`](/documentation/SiriKitCloudMedia/UpdateActivityResponse)

Updates to the client’s queue and user activity in response to a report of playback progress.

[`Process an Update Media Affinity Intent`](/documentation/SiriKitCloudMedia/updateMediaAffinity)

Record the user’s preference for a specific media item or a broader category of media.

### Playback Failure

[`Recover from Content Playback Failure`](/documentation/SiriKitCloudMedia/contentPlaybackFailure)

Provide a recovery queue that allows the client to resume playback after an error.

[`object ContentFailure`](/documentation/SiriKitCloudMedia/ContentFailure)

An object that describes why the client can’t play a specific piece of content.

[`object ContentPlaybackFailureRequest`](/documentation/SiriKitCloudMedia/ContentPlaybackFailureRequest)

A request the client sends to recover from failed content playback.

[`object ContentPlaybackFailureResponse`](/documentation/SiriKitCloudMedia/ContentPlaybackFailureResponse)

A response that allows the client to recover from failed content playback.

### Library and Playlists

[`Process an Add Media Intent`](/documentation/SiriKitCloudMedia/addMedia)

Add media items to the user’s library or to a playlist.

### Media Items

[`object MediaItem`](/documentation/SiriKitCloudMedia/MediaItem)

A particular piece of media that an intent references, such as a song, podcast episode, or playlist.

[`string MediaReference`](/documentation/SiriKitCloudMedia/MediaReference)

A way of identifying the current media item rather than with metadata.

[`object MediaSearch`](/documentation/SiriKitCloudMedia/MediaSearch)

A description of the media items the user wants to play, add to a playlist, or express a preference for.

[`string MediaItemType`](/documentation/SiriKitCloudMedia/MediaItemType)

Types of media items or media searches.

### Requests

[`object Invocation`](/documentation/SiriKitCloudMedia/Invocation)

Properties that clients include in requests to all intent endpoints.

[`object Session`](/documentation/SiriKitCloudMedia/Session)

Information the client provides about a sequence of requests and responses to process an intent.

[`object Constraints`](/documentation/SiriKitCloudMedia/Constraints)

Client-originated limitations on how to process a request, such as including explicit content and how much content the client device can receive in a response.

[`object PlayerContext`](/documentation/SiriKitCloudMedia/PlayerContext)

Information about the current playback content.

[`object InvocationResponse`](/documentation/SiriKitCloudMedia/InvocationResponse)

Properties to include in responses from all intent endpoints.

### Intents

Common objects for processing intents.

[`object Intent`](/documentation/SiriKitCloudMedia/Intent)

A user request for your service to fulfill.

[`object IntentResponse`](/documentation/SiriKitCloudMedia/IntentResponse)

Your service’s response to an intent.

[`object UserActivity`](/documentation/SiriKitCloudMedia/UserActivity)

The context for playing a media queue.

[`object IntentResolutionResult`](/documentation/SiriKitCloudMedia/IntentResolutionResult)

An object that matches a parameter of an intent, or information about why your service can’t determine a value for the parameter.

[`object BooleanResolutionResult`](/documentation/SiriKitCloudMedia/BooleanResolutionResult)

A Boolean value that matches an intent parameter, or information about why your service can’t determine the value.

### Exceptions

[`object ProtocolExceptionInvocationResponse`](/documentation/SiriKitCloudMedia/ProtocolExceptionInvocationResponse)

A response object that indicates when the service fails to process the client’s request.

[`object ProtocolException`](/documentation/SiriKitCloudMedia/ProtocolException)

An exception response from a media service.

[`string ProtocolExceptionReason`](/documentation/SiriKitCloudMedia/ProtocolExceptionReason)

Categories of exceptions a service can encounter.

### Errors

[`object UnderlyingError`](/documentation/SiriKitCloudMedia/UnderlyingError)

An object that describes a system framework error.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)