Skip to main content
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.
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.
AirMDR chooses the method automatically from the fields you complete; there is no mode selector.

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:
The returned bearer token is sent on every ZIA call as 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.
Role and permission considerations
  • 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.
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

  1. Sign in to the Zscaler Authentication Service admin portal.
  2. Look at the browser address bar. The host is https://<vanity-domain>.zslogin.net.
  3. 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 is zidentitygov.net or zidentitygov.us; set Cloud Name to gov or govus so AirMDR builds the correct token URL.
2

OneAPI — Create an API Client

  1. Open Administration → API Configuration → OneAPI → API Clients.
    Some tenants show this under Integration → API Clients. Use whichever path your tenant presents.
  2. Click Add API Client.
  3. 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).
  4. For the client authentication method, choose Secret.
  5. 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.
  6. Save, then copy the Client ID and Client Secret.
    The Client Secret is displayed only once.
    Copy and securely store it in your designated password manager or vault before leaving the screen.
3

Legacy — Create an API Key and API-capable admin

Use this method only if your tenant is not on the Authentication Service.
  1. In the ZIA admin portal, open Administration → API Key Management and create (or copy) the API key.
  2. Ensure the admin account you will use has API access and a role covering the ZIA resources the skills read and write.
  3. Note the Cloud Name — the part after admin. in your ZIA console URL (for example zscalertwo.net).
    Store the API key and the admin password securely in your designated password manager or vault.
4

Enter the credentials in AirMDR

  1. In AirMDR, open the Zscaler connection form.
  2. Complete only the fields for your chosen method:
    • OneAPI: Vanity Domain, Client ID, Client Secret.
    • Legacy: Cloud Name, API Key, Username, Password.
  3. Leave Base URL empty unless Zscaler has given your tenant a dedicated API host.
  4. 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. A 200 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.
  1. Open a Bash terminal on an approved system.
  2. Run the following, replacing the Vanity Domain and entering the Client ID and Secret when prompted:
  3. Confirm the HTTP status is 200. A token response carrying an access_token plus a 200 on /status means the credential is working.
    If the token request returns invalid_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

  1. 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.

Verify Authentication in AirMDR

After saving the connection, run the Verify Authentication skill. It makes a real authenticated read of the activation status and the organization over whichever method the fields selected, so a credential that is wrong, revoked or missing a role is distinguished from a query that simply matched nothing. Reading the organization needs its own role, and a denial there alone does not fail the check.

Troubleshooting