Summary:
Microsoft introduces the new Cloud Licensing API in Microsoft Graph (beta) to improve license management. Some of this functionality was released back in 2024. Currently in preview, this update introduces “Allotments,” “Waiting Members,” and more, giving Microsoft 365 developers and admins granular control over how licenses are managed in your organizations.

While existing endpoints like subscribedSkus and licenseDetails provide high-level visibility, they lack the precision to map specific service-level entitlements. As a result, determining which assigned license enables access to a specific Microsoft 365 feature becomes challenging.

To bridge these gaps, Microsoft’s new Cloud Licensing API (currently in beta) replaces massive license pools with smaller, traceable units called allotments. By linking allocations directly to their source subscriptions, organizations gain the granular visibility and speed required for precise accounting, governance, and real-time reporting.

What is the Cloud Licensing API in Microsoft Graph?

The Microsoft Cloud Licensing API is a new set of APIs in Microsoft Graph (currently in preview). It gives administrators and developers a much smarter way to report on and manage their Microsoft 365 licenses. It is defined in the OData subnamespace microsoft.graph.cloudLicensing.

To put it simply, when a subscription is purchased or renewed, it is automatically broken down into smaller pools of licenses called allotments. With the introduction of these APIs, Microsoft now allows us to view those allotments. As these APIs are currently in beta, they are subject to change and are not recommended for use in production applications.

Required Permissions for Using the Microsoft Cloud Licensing API

To access this Cloud Licensing API, appropriate permissions are required based on the tasks you want to perform. Some permissions include:

  • CloudLicensing.Read: Lets you view allotment details.
  • User-UsageRight.Read.All: Lets you read users’ license assignments and usage rights.
  • Group-UsageRight.Read.All: Lets you view groups’ license assignments and usage rights.

Key Concepts of the New Cloud Licensing API in Microsoft Graph

Here is a quick breakdown of the resource types in the new Cloud Licensing API (preview) and what they mean for your daily operations.

1. Allotment Resource Type: Managing License Allocation and Consumption

Before you can hand out licenses, you need to know what you have and how it’s grouped.

  • Subscriptions: This is the high-level container that holds the basic lifecycle information of your purchase. It includes start dates, end dates, and the overall state of the license subscription that supports an allotment.
  • Allotments: It represents a manageable pool of licenses associated with a subscription and helps track capacity, supported services, and the subscription behind those licenses.

Example:

To access the Cloud Licensing API and retrieve allotment details, you must ensure your app or session has the required permissions in Microsoft Graph. Below are the steps to query the allotments endpoint.

  1. Sign in to Microsoft Graph Explorer.
  2. Set the API version to Beta and the HTTP request method to GET.

3. Enter the endpoint as:

4. Run the query to retrieve allotment information for your tenant.

2. Assignments Resource Type: License Assignments and Distribution Tracking

It represents a license assignment for a specific product (SKU) from an allotment, either directly to a user or device, or indirectly through group membership. Each user consumes one license from every allotment they are assigned to, whether the license assignment is direct or through a group. It is also used to create, update, list, and remove assignments that consume allotment capacity.

Example:

To fetch assignment details for a specific allotment, run the query below after replacing the allotment ID.

3. Usage Rights: Access Validation and Service Entitlements

The usageRight resource type is primarily used to validate whether a user or group actually has the right to consume specific licenses and service plans. It is usually used to query a single user’s license details. While it returns similar data to licenseDetails resources type (or the Get-MgUserLicenseDetail cmdlet), it provides additional information rather than just listing assignments.

Example:

To fetch the license usage rights of a specific user, run the query below after replacing the user id.

4. Assignment Errors and Waiting Members: Managing License Capacity Issues

Waiting Members: If an allotment runs out of licenses due to capacity limits, users or devices trying to gain access are added to this queue and placed in a waiting room. Admins can inspect the list and analyze waiting members to see exactly who is blocked due to capacity limits and how long they have been waiting.

Example:

To get a list of over-assigned users who are in the waiting room due to license capacity limits, run the below query.

Assignment Errors: License assignment is an asynchronous background process that can sometimes fail. This entity surfaces synchronization failures, allowing admins to quickly detect, inspect, and troubleshoot assignments that are stuck or failed without digging through unified audit logs.

Example:

To fetch assignment errors, run the query below.

Wrapping Up

That’s a wrap! The new Cloud Licensing API expands the ways you can access and manage licensing information. With these capabilities, organizations can gain deeper visibility into license usage, streamline management processes, and maintain compliance more effectively.

We’d love to hear your feedback—share your questions, insights, or experiences in the comments below. Stay tuned for more updates and upcoming blogs!