RMS exposes a REST API for building media workflows - upload and process video, manage live streaming events, and generate playback URLs. Any language capable of making HTTP requests can integrate with it.
This page covers how to authenticate, make your first API call, and points you to the RMS API reference and the JavaScript sample for a complete working implementation.
In this article:
RMS API overview
RMS API can be integrated from any language capable of making HTTP requests. Developers can build integrations in any language (for example, Java or Go) or use runtimes like Node.js by calling the RMS REST API directly. Ravnur maintains an official sample in JavaScript.
Compatibility with AMS v3
RMS follows the Azure Media Services (AMS) API v3 resource model - entities, REST endpoint patterns, request/response structures, and processing pipelines - so existing AMS-based integration logic carries over with minimal changes.
Some endpoints or parameters may differ from Azure Media Services v3 model. Always verify supported operations and fields in RMS API reference before implementation.
Accessing the Ravnur Media Services API
RMS API requires authentication before any request. RMS uses a two-step flow: API key exchange for a short-lived JWT bearer token. RMS supports API Key authentication for client identification, followed by JWT token bearer authentication for request security.
API Key authentication is the primary method for programmatic access to the RMS API. This two-step process ensures secure access to your media resources, learn more.
API keys can be generated and managed through the RMS Console:
Security and access control
RMS API does not support read-only or scoped access. Any authenticated client can perform full account operations, including:
creating resources
modifying configuration
starting or stopping live events
deleting resources
An API key, therefore, provides full control over the RMS account. This model differs from systems that support role-based or least-privilege access.
Security precautions:
Use separate keys for each environment (production, staging, testing, different apps).
Regularly rotate and replace keys, and remove any that are not in use.
Do not expose keys in frontend code - keep keys in secure storage or use them through your backend service.
First API call
To make your first authenticated request, exchange your API key for a JWT token.
Request
POST https://{{apiEndpoint}}/auth/tokenRequest body
{
"subscriptionId": "{{subscriptionId}}",
"apiKey": "{{rmsApiKey}}"
}Parameters:
subscriptionId- Azure subscription ID (see API access in RMS Console).apiKey- generated key from RMS Console.
The response returns a JWT bearer token that expires in 1 hour. Include it as Authorization: Bearer {token} in all subsequent requests.
Official sample
RMS is integrated through its REST API. This sample shows the basic request flow, authentication, and response handling.
JavaScript REST API sample - browser-based implementation using pure REST API calls - no compilation needed. Supports RTMP(s), SRT, and RTSP(s) pull/push protocols.
Intended use:
server-side or browser integration.
testing RMS workflows.
learning API structure before building production integrations.
Each step in the sample corresponds to specific RMS API calls documented in the API reference. The sample functions (createLiveEvent , createAsset , etc.) are wrappers around these REST endpoints, showing how to structure requests and handle responses in a real application.
Aside from VOD encoding, the sample shows how to create and start a live event programmatically. For the complete live streaming workflow implemented in this sample, see the Live streaming quickstart.
Next steps:
Live streaming quickstart - create your first live event via API calls. The complete workflow for creating, starting, and delivering a live streaming event.
RMS Event Grid - receive notifications when RMS operations complete (job state changes, encoding progress) instead of polling the API. Integrates with Azure Event Grid for event-driven workflows.
RMS Console - a web-based interface for managing RMS live events without calling the API directly. It provides common workflows such as creating live events, obtaining ingest URLs, starting and stopping streams, and accessing recordings.
RMS filtering, ordering, and paging - query large collections efficiently using OData parameters. Filter by properties (e.g., show only completed jobs), sort results, and page through responses without loading everything at once.