The Azure CLI is a command-line tool built to give a native CLI interface for working with Microsoft Azure resources. The Azure CLI itself will make calls to the Azure REST API to perform actions that each of the Azure CLI (az
) commands support. However, there are those rare times when you need to call an Azure REST API that isn’t supported by the Azure CLI. It’s certainly not common to come across, but it can happen. There are 2 methods that can be used to make Azure REST API calls from the command-line: the az rest
command or by using curl
.
Let’s dig into using these 2 methods of calling the Azure REST API!

az rest
Method
The az rest
command enables custom requests to the Azure REST API to be made. If no authentication argument is passed to the az rest
command then it will automatically use the Azure Account you already logged in with using the az login
command. This makes it really easy to use the same Azure CLI workflow to authenticate and work with Azure resources.
The following arguments are used when calling the az rest
command:
--url
or--uri
– Used to specify the Request URL of the Azure REST API to call.--method
– Used to specify the HTTP method used to make the Azure REST API call. Not required as it defaults to the HTTPget
method.--body
– Used to specify an HTTP Body to send along with the request.
The az rest
command will assume the --url
or --uri
argument is an Azure Resource ID, so it will automatically prefix it with the Azure ARM Endpoint of the current Azure Cloud that is set. By default this is the Azure Public Cloud. You can view this by running the az cloud show
command.
The following is a couple examples of using az rest
to make calls to the Azure REST API:
az login # don't forget to login first
# Get Azure Subscription ID
subscriptionId=$(az account show --query id -o tsv)
# List all Resource Groups
az rest --uri /subscriptions/$subscriptionId/resourceGroups?api-version=2020-01-01
# Get a Virtual Machine
az rest --method get \
--uri /subscriptions/$subscriptionId/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}?api-version=2019-03-01
# Get Audit log through Microsoft Graph
az rest --method get --url
# Update Azure AD Graph User's display name
az rest --method patch \
--url " \
--body "{\"displayName\": \"jondoe2\"}"
curl
Method
There might be times where using curl
or another similar command-line tool is a more desirable tool to use for making Azure REST API calls. To do this, you’ll still need to use az login
to login to the Azure Account. Once logged in, then the az account get-access-token
command can be used to retrieve an Access Token that can then be used with the Authorization: bearer
HTTP Header on Azure REST API calls to authenticate curl
or other tools when making requests.
The following is a similar example as above, but this time using curl
to make a call to the Azure REST API to retrieve a list of Azure Resource Groups in the current Azure Subscription:
az login # don't forget to login first
# Get Azure Subscription ID
subscriptionId=$(az account show --query id -o tsv)
$ Get Azure Access Token to authorize HTTP requests
azureAccessToken=$(az account get-access-token --query accessToken -o tsv)
# List all Resource Groups
curl -sL \
-H "authorization: bearer $azureAccessToken" \
-H "content-type: application/json" \
"
Notice that the following HTTP Headers are passed to the Azure REST API to properly authenticate and specify the return response from the API:
authorization: bearer {access-token}
– The Authorization header is used to pass the bearer token previously retrieved from the Azure CLI to authenticate the HTTP Request to the Azure REST API.content-type: application/json
– The Content-Type Header tells the Azure REST API to return the results formatted as JSON.
This same method of calling the Azure REST API using curl
could also be used to make Azure REST API calls from any command-line or other tool that is capable of making HTTP calls and passing custom HTTP Headers with the request. An example of this could be using this method to make Azure REST API calls from a programming language like Node.js, C#, or Python even.
Happy scripting!
Original Article Source: Azure CLI: Call Azure REST API Directly by Chris Pietschmann (If you’re reading this somewhere other than Build5Nines.com, it was republished without permission.)