Purpose
Purpose
This guide explains how to create Zscaler Internet Access (ZIA) API credentials and enter them in AirMDR.
Connect ZIA to AirMDR to enrich web indicators (URL classification and Cloud Sandbox verdicts), read the policy and configuration that explains why traffic was allowed or blocked, resolve users, locations and devices, read the admin and event logs, and contain a threat by adding a URL, domain, IP or file hash to the tenant block lists.
Connect ZIA to AirMDR to enrich web indicators (URL classification and Cloud Sandbox verdicts), read the policy and configuration that explains why traffic was allowed or blocked, resolve users, locations and devices, read the admin and event logs, and contain a threat by adding a URL, domain, IP or file hash to the tenant block lists.
Zscaler supports two API authentication models, and AirMDR connects with either one. Fill in only one set of credentials:
- OneAPI (recommended): OAuth 2.0 client credentials issued by the Zscaler Authentication Service (also called ZIdentity). AirMDR selects this method whenever a Client ID and Client Secret are present.
- Legacy ZIA API: an API key plus an API-capable admin username and password. Use this only for a tenant that is not yet on the Authentication Service. Zscaler is retiring legacy ZIA API authentication at the end of 2026.
Supported Versions
Supported Versions
Authentication
Authentication
Option 1 — OneAPI (OAuth 2.0 client credentials)
AirMDR exchanges the Client ID and Client Secret for a short-lived bearer token at the Authentication Service token endpoint, then calls the ZIA API with that token. The connection requires three values:AirMDR sends the token request exactly as Zscaler documents it:
Authorization: Bearer <access_token> against https://api.zsapi.net/zia/api/v1.Option 2 — Legacy ZIA API (API key + admin credentials)
AirMDR obfuscates the API key with a timestamp as Zscaler requires, signs in to obtain a session, and calls the ZIA API with that session. The connection requires four values:Optional for either method
Enter secret values (Client Secret, API Key, Password) without quotation marks or any prefix. AirMDR stores every secret field encrypted and never logs it.
- ZIA access is governed by the role attached to the credential. A ZIA role maps to a resource in the Authentication Service for OneAPI, and to the admin account’s role for the legacy API.
- Grant a read role for the retrieval skills.
- The containment skills additionally need write access over the ZIA security policy, URL categories and firewall destination groups, plus permission to activate configuration — a ZIA change is saved but not enforced until it is activated.
Connection Methods (direct vs Remote Agent)
Connection Methods (direct vs Remote Agent)
ZIA is a cloud service reachable over the public internet, so AirMDR connects directly in the normal case and no Remote Agent is required.If your environment requires outbound API traffic to originate from a specific network, AirMDR can route the ZIA calls through a Remote Agent. See Remote Agent Overview. No credential changes are needed; attach the Remote Agent to the connection.
Pre-requisites
An active Zscaler Internet Access (ZIA) tenant.For OneAPI: a subscription to the Zscaler Authentication Service, and an administrator with Full permission on the API Clients and API Resources modules. Contact your Zscaler account team if the subscription is not present.For the legacy API: a ZIA admin account with API access and an API key.A ZIA role with the read and (for containment) write and activate permissions required by the skills you intend to use.
Setup Steps
Complete one of the two methods below.1
OneAPI — Find your Vanity Domain
- Sign in to the Zscaler Authentication Service admin portal.
- Look at the browser address bar. The host is
https://<vanity-domain>.zslogin.net. - The
<vanity-domain>label is the value to enter in AirMDR’s Vanity Domain field.The Vanity Domain is assigned to your organization; you retrieve it, you do not create it. For a government (FedRAMP) tenant the identity domain iszidentitygov.netorzidentitygov.us; set Cloud Name togovorgovusso AirMDR builds the correct token URL.
2
OneAPI — Create an API Client
- Open Administration → API Configuration → OneAPI → API Clients.
Some tenants show this under Integration → API Clients. Use whichever path your tenant presents.
- Click Add API Client.
- On the Client tab, enter a name (for example
AirMDR-Integration), a description, and set the status to active. Set an access token lifetime (between 1 minute and 24 hours). - For the client authentication method, choose Secret.
- On the Resources tab, assign a ZIA resource/role:
- a read role for the retrieval skills, or
- a role with write and activate permissions if you will use the containment skills.
- Save, then copy the Client ID and Client Secret.
3
Legacy — Create an API Key and API-capable admin
Use this method only if your tenant is not on the Authentication Service.
- In the ZIA admin portal, open Administration → API Key Management and create (or copy) the API key.
- Ensure the admin account you will use has API access and a role covering the ZIA resources the skills read and write.
- Note the Cloud Name — the part after
admin.in your ZIA console URL (for examplezscalertwo.net).
4
Enter the credentials in AirMDR
- In AirMDR, open the Zscaler connection form.
- Complete only the fields for your chosen method:
- OneAPI: Vanity Domain, Client ID, Client Secret.
- Legacy: Cloud Name, API Key, Username, Password.
- Leave Base URL empty unless Zscaler has given your tenant a dedicated API host.
- Save the connection, then run Verify Authentication (see below).
Zscaler Credential Reference Table
Complete only one method’s fields. AirMDR selects OneAPI whenever a Client ID and Client Secret are present; otherwise it uses the legacy fields.
Validate Connectivity
Run the check for the method you configured. A200 with a JSON body confirms the credential reaches the ZIA API.
OneAPI
The API client must be assigned a ZIA resource/role. A token with no ZIA resource authenticates but cannot read ZIA endpoints.
- Open a Bash terminal on an approved system.
- Run the following, replacing the Vanity Domain and entering the Client ID and Secret when prompted:
Request Sample
- Confirm the HTTP status is
200. A token response carrying anaccess_tokenplus a200on/statusmeans the credential is working.If the token request returnsinvalid_client, the Vanity Domain is correct but the Client ID/Secret do not belong to that tenant. If it returns a generic permission error instead of JSON, the Vanity Domain itself is wrong — recheck the sign-in URL.
Legacy ZIA API
- Because the legacy sign-in requires the API key to be obfuscated with a timestamp, the simplest check is to save the connection in AirMDR and run Verify Authentication, which performs the obfuscation, sign-in and an authenticated read for you.

