# Azure Lab Services management API

> Azure Lab Services management API on Apizie: 41 endpoints (Gets all images., Gets an image., Updates an image via PUT., Updates an image., …) returned as clean JSON through one API key. Send your own provider key in the x-upstream-key header. Call it over REST at https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/{endpoint} or from Claude, ChatGPT and Cursor through the Apizie MCP server. Free plan: 1,000 requests a month.

- Project key: `cloud:azure-arm-labservices`
- Category: Cloud
- Status: byok
- Source: https://learn.microsoft.com/rest/api/azure/
- Page: https://zieapi.vercel.app/api/cloud/azure-arm-labservices
- OpenAPI: https://zieapi.vercel.app/api/cloud/azure-arm-labservices/openapi.json

Azure Resource Manager API for Lab Services: manage these Azure resources in your subscription with a Microsoft Entra access token.

## Endpoints

### Gets all images.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/images-list-by-lab-plan` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labPlanName | string | yes | The name of the lab plan that uniquely identifies it within containing resource group. Used in resource URIs and in UI. |
| $filter | string | no | The filter to apply to the operation. |

### Gets an image.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/images-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labPlanName | string | yes | The name of the lab plan that uniquely identifies it within containing resource group. Used in resource URIs and in UI. |
| imageName | string | yes | The image name. |

### Updates an image via PUT.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/images-create-or-update` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labPlanName | string | yes | The name of the lab plan that uniquely identifies it within containing resource group. Used in resource URIs and in UI. |
| imageName | string | yes | The image name. |
| body | object | yes | JSON request body |

### Updates an image.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/images-update` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labPlanName | string | yes | The name of the lab plan that uniquely identifies it within containing resource group. Used in resource URIs and in UI. |
| imageName | string | yes | The image name. |
| body | object | yes | JSON request body |

### Get all lab plans for a subscription.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/lab-plans-list-by-subscription` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| $filter | string | no | The filter to apply to the operation. |

### Get all lab plans for a subscription and resource group.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/lab-plans-list-by-resource-group` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |

### Retrieves a Lab Plan resource.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/lab-plans-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labPlanName | string | yes | The name of the lab plan that uniquely identifies it within containing resource group. Used in resource URIs and in UI. |

### Updates or creates a Lab Plan resource.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/lab-plans-create-or-update` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labPlanName | string | yes | The name of the lab plan that uniquely identifies it within containing resource group. Used in resource URIs and in UI. |
| body | object | yes | JSON request body |

### Updates a Lab Plan resource.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/lab-plans-update` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labPlanName | string | yes | The name of the lab plan that uniquely identifies it within containing resource group. Used in resource URIs and in UI. |
| body | object | yes | JSON request body |

### Deletes a Lab Plan resource.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/lab-plans-delete` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labPlanName | string | yes | The name of the lab plan that uniquely identifies it within containing resource group. Used in resource URIs and in UI. |

### Save an image from a lab VM to the attached shared image gallery.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/lab-plans-save-image` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labPlanName | string | yes | The name of the lab plan that uniquely identifies it within containing resource group. Used in resource URIs and in UI. |
| body | object | yes | JSON request body |

### Get all operations
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/operations-list` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |

### Get all labs for a subscription.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/labs-list-by-subscription` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| $filter | string | no | The filter to apply to the operation. |

### Get all labs for a subscription and resource group.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/labs-list-by-resource-group` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |

### Get a lab resource.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/labs-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |

### Create or update a lab resource.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/labs-create-or-update` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| body | object | yes | JSON request body |

### Update a lab resource.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/labs-update` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| body | object | yes | JSON request body |

### Deletes a lab resource.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/labs-delete` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |

### Publish or re-publish a lab.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/labs-publish` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |

### Manually sync the lab group.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/labs-sync-group` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |

### Get an azure operation result.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/operation-results-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| operationResultId | string | yes | The operation result ID / name. |

### Get all schedules for a lab.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/schedules-list-by-lab` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| $filter | string | no | The filter to apply to the operation. |

### Get a lab Schedule.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/schedules-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| scheduleName | string | yes | The name of the schedule that uniquely identifies it within containing lab. Used in resource URIs. |

### Create or update a lab schedule.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/schedules-create-or-update` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| scheduleName | string | yes | The name of the schedule that uniquely identifies it within containing lab. Used in resource URIs. |
| body | object | yes | JSON request body |

### Update a lab schedule.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/schedules-update` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| scheduleName | string | yes | The name of the schedule that uniquely identifies it within containing lab. Used in resource URIs. |
| body | object | yes | JSON request body |

### Deletes a schedule resource.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/schedules-delete` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| scheduleName | string | yes | The name of the schedule that uniquely identifies it within containing lab. Used in resource URIs. |

### Gets the Azure Lab Services resource SKUs.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/skus-list` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| $filter | string | no | The filter to apply to the operation. |

### Gets the list of usages.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/usages-list-by-location` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| location | string | yes | The location name. |
| $filter | string | no | The filter to apply to the operation. |

### Get all users for a lab.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/users-list-by-lab` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| $filter | string | no | The filter to apply to the operation. |

### Get a lab user.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/users-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| userName | string | yes | The name of the user that uniquely identifies it within containing lab. Used in resource URIs. |

### Create or update a lab user.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/users-create-or-update` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| userName | string | yes | The name of the user that uniquely identifies it within containing lab. Used in resource URIs. |
| body | object | yes | JSON request body |

### Update a lab user.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/users-update` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| userName | string | yes | The name of the user that uniquely identifies it within containing lab. Used in resource URIs. |
| body | object | yes | JSON request body |

### Deletes a user resource.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/users-delete` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| userName | string | yes | The name of the user that uniquely identifies it within containing lab. Used in resource URIs. |

### Invite a user to a lab.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/users-invite` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| userName | string | yes | The name of the user that uniquely identifies it within containing lab. Used in resource URIs. |
| body | object | yes | JSON request body |

### Get all virtual machines for a lab.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/virtual-machines-list-by-lab` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| $filter | string | no | The filter to apply to the operation. |

### Get a lab virtual machine.
`GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/virtual-machines-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| virtualMachineName | string | yes | The ID of the virtual machine that uniquely identifies it within the containing lab. Used in resource URIs. |

### Start a lab virtual machine.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/virtual-machines-start` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| virtualMachineName | string | yes | The ID of the virtual machine that uniquely identifies it within the containing lab. Used in resource URIs. |

### Stop a lab virtual machine.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/virtual-machines-stop` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| virtualMachineName | string | yes | The ID of the virtual machine that uniquely identifies it within the containing lab. Used in resource URIs. |

### Re-image a lab virtual machine.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/virtual-machines-reimage` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| virtualMachineName | string | yes | The ID of the virtual machine that uniquely identifies it within the containing lab. Used in resource URIs. |

### Redeploy a lab virtual machine to a different compute node. For troubleshooting connectivity.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/virtual-machines-redeploy` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| virtualMachineName | string | yes | The ID of the virtual machine that uniquely identifies it within the containing lab. Used in resource URIs. |

### Reset a lab virtual machine password.
`POST https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/virtual-machines-reset-password` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api-version | string | no | The API version to use for this operation. |
| subscriptionId | string | yes | The ID of the target subscription. |
| resourceGroupName | string | yes | The name of the resource group. The name is case insensitive. |
| labName | string | yes | The name of the lab that uniquely identifies it within containing lab plan. Used in resource URIs. |
| virtualMachineName | string | yes | The ID of the virtual machine that uniquely identifies it within the containing lab. Used in resource URIs. |
| body | object | yes | JSON request body |

## Example
```
curl "https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/images-list-by-lab-plan" \
  -H "x-api-key: $APIZIE_KEY" \
  -H "x-upstream-key: $PROVIDER_KEY"
```

## FAQ

### How do I call the Azure Lab Services management API?
Create a free Apizie key, then send GET https://zieapi.vercel.app/v1/cloud:azure-arm-labservices/images-list-by-lab-plan with the header x-api-key. Every endpoint returns { project, data, timestamp }.

### Is the Azure Lab Services management API free on Apizie?
Yes. The Free plan includes 1,000 requests a month at 100 requests a minute, no credit card. Azure Lab Services management itself also needs your own key from azure.com.

### Can AI agents use the Azure Lab Services management API?
Yes. Add the Apizie MCP server (https://zieapi.vercel.app/mcp) to Claude, ChatGPT, Cursor or VS Code, then ask in plain language. The agent calls run_scraper with project key cloud:azure-arm-labservices.

### What is the status of the Azure Lab Services management API?
Needs your own provider key (bring your own key)
