Nexus Dashboard /nexus-dashboard/ Docs small-icon icon-nd Nexus Dashboard (4.1 and later) /docs/nexus-dashboard/latest/ small-icon icon-nd Nexus Dashboard Legacy (3.2 and earlier) small-icon icon-nd Platform /docs/nexus-dashboard/3-2-1/ small-icon icon-ndfc Fabric Controller /docs/nexus-dashboard-fabric-controller/12-2-3/ small-icon icon-insights Visibility & Analytics /docs/nexus-dashboard-insights/6-5-1/ small-icon icon-orchestrator Orchestrator /docs/nexus-dashboard-orchestrator/4-4-2/ Resources small-icon icon-nd Ansible Nexus Dashboard Ansible Collection https://galaxy.ansible.com/cisco/nd _blank Orchestrator Ansible Collection https://galaxy.ansible.com/cisco/mso _blank small-icon icon-nd Terraform Nexus Dashboard Terraform Provider https://registry.terraform.io/providers/CiscoDevNet/nd _blank Orchestrator Terraform Provider https://registry.terraform.io/providers/CiscoDevNet/mso _blank small-icon icon-nd Network as Code Network as Code ND https://netascode.cisco.com _blank
Management, Automation, and Analytics
Cisco Nexus One represents a paradigm shift — an open, unified management plane that integrates silicon, systems, software, operating model with security and observability at every layer. On-premises-managed Cisco Nexus Dashboard transforms data-center network operations with simplicity, automation, and analytics all using a single platform with a unified API.
What can you do with the Nexus Dashboard API?
Nexus Dashboard Infrastructure
Nexus Dashboard
Cisco Nexus Dashboard is a unified, single-pane-of-glass management platform designed to automate, orchestrate, and analyze modern data center across Cisco ACI, Data Center and Campus VXLAN EVPN, AI, Routed, and IP Fabric for Media (IPFM) fabrics. The platform enables the acceleration of NetOps and DevOps capabilities aligning seamlessly with third-party ecosystem tools from RedHat Ansible, HashiCorp Terraform, Splunk, and other integrations.
Getting started
1
Log in using a Python script or the cURL command to retrieve the authentication token.
Before sending requests to perform operations on the Nexus Dashboard cluster or services, log in with a POST request that includes a username, password, and login domain for an existing Nexus Dashboard user. The returned authorization token can be used in subsequent API calls. The domain value in the payload, for example "local", must match the configured authentication domain in your Nexus Dashboard environment.
Use Python requests to query the ND Authentication API and print the JSON response using the following code example:
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

base_url = 'https://<nd-node-ip>'
payload = {
    "userName": "admin",
    "userPasswd": "cisco.123",
    "domain": "local"
}

# Using a session to persist cookies across requests
with requests.Session() as session:
    # Use verify=False if you are sure the target system is the system you expect and it has a self-signed certificate.
    login_response = session.post(url=f"{base_url}/api/v1/infra/login", json=payload, verify=False)

    print('Login Response:')
    print(login_response.json())
    print('\n-----------------------------------\n')
    print('Session cookies after login:')
    print(session.cookies.get_dict())
Use the cURL command to query the ND Authentication API and print the JSON response using the following command line example:
curl --insecure --request POST 'https://<nd-node-ip>/api/v1/infra/login' \
  --data '{"domain": "local", "userName": "admin", "userPasswd": "cisco.123"}'
2
Extract the authentication token from the response payload. The token typically has a validity period of 20 minutes and may need to be refreshed or re-obtained for long-running sessions.
The login response includes the authentication token, account login information, and RBAC privileges. Use the returned token as the AuthCookie value, or retain the session cookie when using a requests session, for subsequent API calls.
{
    "jwttoken": "eyJhbGciOiJSUzI1NiIsImtpZCI6InFieXViN2hldndqM2o0YnZrdGp5NDY1c2NkcGRicmRzIiwidHlwIjoiSldUIn0.eyJhdnBhaXIiOiJzaGVsbDpkb21haW5zPWFsbC9zdXBlci1hZG1pbiIsImNsdXN0ZXIiOiI1NDRkNDUyZC00ZTQ0LTJkMzAtMzEwMC0wMDAwMDAwMDAwMDAiLCJleHAiOjE3NjE2MTQzMjEsImlhdCI6MTc2MTYxMzEyMSwiaWQiOiI0OGQxMDViZGZiYzQ5YTVmY2YzOWExMGI5NjEzODZlNjFkZmU0MDA4NWNiMDMxNWQ4MThiNzYxYzU3MzVkYWZhIiwiaXNzIjoibmQiLCJpc3MtaG9zdCI6IjEwLjE1LjAuMTQzIiwicmJhYyI6W3siZG9tYWluIjoiYWxsIiwicm9sZXNNYXAiOnsic3VwZXItYWRtaW4iOnt9fX1dLCJzZXNzaW9uaWQiOiIzb3h0OW5JcmJRcURmeVJOPWZVbENmYlAiLCJ1c2VyZmxhZ3MiOjAsInVzZXJpZCI6MjUwMDIsInVzZXJuYW1lIjoiYWRtaW4iLCJ1c2VydHlwZSI6ImxvY2FsIn0.P9C0fXsGsQjMDCdx4J_UdJAqAzSkSP7cTW4u-vDF-n0f8KgBDET_KUSC0HcBvx9ZRiKHlUoKpMG5n61sBYUB2moCLfPLXW14a0ThIGSJXYgtT5hoRDacLhFoMEya5L2gqG-q0sNf-5DUtsb7kHt1KwHzz8WYLpxrTD0-nyJlIOLROUYAm-HaT14Bn1hUDW-Eq7wUqVvghEwDffJKrj4OlkNztgYTR7Yi74WucydIdjjzqatW7u-CzAF3YHHMXNU3WpGzkEG_izuk5i-SfwzoDGKUsQMRNNe8t6MNiKzehW564b33AgWR8J3-RqR-bRuBth-tHRCdDcoaCsr8chh50g",
    "username": "admin",
    "usertype": "local",
    "rbac": "[{\"domain\":\"all\",\"rolesMap\":{\"super-admin\":{}}}]",
    "statusCode": 200,
    "token": "eyJhbGciOiJSUzI1NiIsImtpZCI6InFieXViN2hldndqM2o0YnZrdGp5NDY1c2NkcGRicmRzIiwidHlwIjoiSldUIn0.eyJhdnBhaXIiOiJzaGVsbDpkb21haW5zPWFsbC9zdXBlci1hZG1pbiIsImNsdXN0ZXIiOiI1NDRkNDUyZC00ZTQ0LTJkMzAtMzEwMC0wMDAwMDAwMDAwMDAiLCJleHAiOjE3NjE2MTQzMjEsImlhdCI6MTc2MTYxMzEyMSwiaWQiOiI0OGQxMDViZGZiYzQ5YTVmY2YzOWExMGI5NjEzODZlNjFkZmU0MDA4NWNiMDMxNWQ4MThiNzYxYzU3MzVkYWZhIiwiaXNzIjoibmQiLCJpc3MtaG9zdCI6IjEwLjE1LjAuMTQzIiwicmJhYyI6W3siZG9tYWluIjoiYWxsIiwicm9sZXNNYXAiOnsic3VwZXItYWRtaW4iOnt9fX1dLCJzZXNzaW9uaWQiOiIzb3h0OW5JcmJRcURmeVJOPWZVbENmYlAiLCJ1c2VyZmxhZ3MiOjAsInVzZXJpZCI6MjUwMDIsInVzZXJuYW1lIjoiYWRtaW4iLCJ1c2VydHlwZSI6ImxvY2FsIn0.P9C0fXsGsQjMDCdx4J_UdJAqAzSkSP7cTW4u-vDF-n0f8KgBDET_KUSC0HcBvx9ZRiKHlUoKpMG5n61sBYUB2moCLfPLXW14a0ThIGSJXYgtT5hoRDacLhFoMEya5L2gqG-q0sNf-5DUtsb7kHt1KwHzz8WYLpxrTD0-nyJlIOLROUYAm-HaT14Bn1hUDW-Eq7wUqVvghEwDffJKrj4OlkNztgYTR7Yi74WucydIdjjzqatW7u-CzAF3YHHMXNU3WpGzkEG_izuk5i-SfwzoDGKUsQMRNNe8t6MNiKzehW564b33AgWR8J3-RqR-bRuBth-tHRCdDcoaCsr8chh50g"
}
Optionally, you can extract the token into a variable to simplify future calls, for example:
token = login_response.json().get("jwttoken") or login_response.json().get("token")
3
Use the authentication token with service-specific calls.
You can learn more about using the authentication token with service-specific calls from the following link.
Visibility & Analytics
Visibility & Analytics
Proactively monitor, identify issues, and troubleshoot Cisco data-center networks running Cisco ACI, Cisco NX-OS, Cisco IOS-XE, and SONiC-based fabrics with smart analytics, and minimize risk with upcoming AgenticOps intelligence.
Getting started
1
In this Python 3 example, query the Nexus Dashboard Analyze API for advisory summaries.
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

base_url = 'https://<nd-node-ip>'
payload = {
    "userName": "admin",
    "userPasswd": "cisco.123",
    "domain": "local"
}

# Using a session to persist cookies across requests
with requests.Session() as session:
    # Use verify=False if you are sure the target system is the system you expect and it has a self-signed certificate.
    login_response = session.post(url=f"{base_url}/api/v1/infra/login", json=payload, verify=False)

    print('Login Response:')
    print(login_response.json())
    print('\n-----------------------------------\n')

    print('Session cookies after login:')
    print(session.cookies.get_dict())
    # Reset AuthCookie without path/domain restrictions so it's sent to all endpoints
    token = session.cookies.get("AuthCookie")
    session.cookies.clear()
    session.cookies.set("AuthCookie", token)

    print('\n-----------------------------------\n')

    get_response = session.get(url=f"{base_url}/api/v1/analyze/advisories/summary", verify=False)

    print('Get Response:')
    print(get_response.json())
Same example using the cURL command:
curl --insecure --request GET 'https://<nd-node-ip>/api/v1/analyze/advisories/summary' \
  --header 'Cookie: AuthCookie=<auth-cookie-token>'
2
The advisory summary response payload contains advisory categories, counts, and scores.
{
    "totalAdvisoryScore": 83,
    "advisoryScore": 83,
    "advisories": [
        {
            "category": "hardwareEndOfLife",
            "advisoryCount": 1,
            "advisoryScore": 83
        },
        {
            "category": "security",
            "advisoryCount": 1,
            "advisoryScore": 61
        }
    ],
    "totalAdvisoryCount": 2
}
3
You can now extract the required advisory summary information and store it in variables for reuse.
You can learn more about using the Nexus Dashboard Analyze API from the following link.
Orchestrator
Orchestrator
Automate inter-fabric connectivity between Cisco ACI environments, and implement consistent configuration and network policy for data centers with a “configure once, deploy anywhere” model.
Getting started
1
In this Python 3 example, query the Nexus Dashboard Orchestrator tenants.
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

base_url = 'https://<nd-node-ip>'
payload = {
    "userName": "admin",
    "userPasswd": "cisco.123",
    "domain": "local"
}

# Using a session to persist cookies across requests
with requests.Session() as session:
    # Caution: Only use verify=False in trusted lab environments or after validating the target system and its self-signed certificate.
    login_response = session.post(url=f"{base_url}/api/v1/infra/login", json=payload, verify=False)

    print('Login Response:')
    print(login_response.json())
    print('\n-----------------------------------\n')

    print('Session cookies after login:')
    print(session.cookies.get_dict())

    auth_cookie = session.cookies.get("AuthCookie")
    session.cookies.clear()
    session.cookies.set("AuthCookie", auth_cookie)

    get_response = session.get(url=f"{base_url}/mso/api/v1/tenants", verify=False)

    tenants = get_response.json()
    print(tenants)
Same example using the cURL command:
curl -k --request GET 'https://<nd-node-ip>/mso/api/v1/tenants' \
  -H 'Cookie: AuthCookie=<auth-cookie-token>'
2
The tenants API response payload contains a list of tenants with details for each tenant.
{
    "tenants": [
        {
            "id": "0000ffff0000000000000010",
            "name": "common",
            "displayName": "common",
            "siteAssociations": [
                {
                    "siteId": "620cbd2711395f0e2cb35a7d",
                    "securityDomains": [],
                    "cloudAccount": null,
                    "azureAccount": null,
                    "awsAccount": null,
                    "gcpAccount": null,
                    "gatewayRouter": null
                },
                {
                    "siteId": "620fd85611395f0e2cb35a80",
                    "securityDomains": [],
                    "cloudAccount": null,
                    "azureAccount": null,
                    "awsAccount": null,
                    "gcpAccount": null,
                    "gatewayRouter": null
                }
            ],
            "userAssociations": [
                {
                    "userId": "48d105bdfbc49a5fcf39a10b961386e61dfe40085cb0315d818b761c5735dafa"
                }
            ],
            "description": "Common tenant for use with all other tenants",
            "_updateVersion": 0,
            "_versionDefaulted": false
        },
        {
            "id": "0000ffff0000000000000012",
            "name": "ndfc-default-tn",
            "displayName": "ndfc-default-tn",
            "siteAssociations": [],
            "userAssociations": [
                {
                    "userId": "48d105bdfbc49a5fcf39a10b961386e61dfe40085cb0315d818b761c5735dafa"
                }
            ],
            "description": "Default tenant for Fabric Controller sites",
            "_updateVersion": 0,
            "_versionDefaulted": false
        },
        {
            "id": "0000ffff0000000000000011",
            "name": "infra",
            "displayName": "infra",
            "siteAssociations": [
                {
                    "siteId": "620fd85611395f0e2cb35a80",
                    "securityDomains": [],
                    "cloudAccount": null,
                    "azureAccount": null,
                    "awsAccount": null,
                    "gcpAccount": null,
                    "gatewayRouter": null
                }
            ],
            "userAssociations": [
                {
                    "userId": "48d105bdfbc49a5fcf39a10b961386e61dfe40085cb0315d818b761c5735dafa"
                }
            ],
            "description": "Infra tenant for use with all other tenants",
            "_updateVersion": 0,
            "_versionDefaulted": false
        }
    ]
}
3
You can now extract the required information from the tenants and store it in variables for reuse.
You can learn more about using the Nexus Dashboard Orchestrator API from the following link.
Manage & Automate
Manage & Automate
Automate and provision VXLAN-EVPN, AI infrastructure, classic Ethernet, data broker, IP Fabric for Media, and storage fabrics. Manage Cisco Nexus, Cisco MDS, and Cisco Catalyst switches and third-party devices.
Getting started
1
In this Python 3 example, query the Nexus Dashboard Manage API for fabrics:
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

base_url = 'https://<nd-node-ip>'
payload = {
    "userName": "admin",
    "userPasswd": "cisco.123",
    "domain": "local"
}

# Using a session to persist cookies across requests
with requests.Session() as session:
    # Use verify=False if you are sure the target system is the system you expect and it has a self-signed certificate.
    login_response = session.post(url=f"{base_url}/api/v1/infra/login", json=payload, verify=False)

    print('Login Response:')
    print(login_response.json())
    print('\n-----------------------------------\n')

    print('Session cookies after login:')
    print(session.cookies.get_dict())
    # Reset AuthCookie without path/domain restrictions so it's sent to all endpoints
    token = session.cookies.get("AuthCookie")
    session.cookies.clear()
    session.cookies.set("AuthCookie", token)

    print('\n-----------------------------------\n')

    get_response = session.get(url=f"{base_url}/api/v1/manage/fabrics", verify=False)

    print('Get Response:')
    print(get_response.json())
Same example using the cURL command:
curl --insecure --request GET 'https://<nd-node-ip>/api/v1/manage/fabrics' \
  --header 'Cookie: AuthCookie=<auth-cookie-token>'
2
The fabrics API response payload contains a list of fabrics with details for each fabric.
{
    "fabrics": [
        {
            "category": "fabric",
            "name": "tme-fabric",
            "securityDomain": "all",
            "licenseTier": "essentials",
            "management": {
                "type": "vxlanIbgp",
                "bgpAsn": "65999",
                "siteId": "65999"
            },
            "telemetryCollection": false
        }
    ]
}
3
You can now extract the required information from the fabrics and store it in variables for reuse.
You can learn more about using the Nexus Dashboard Manage API from the following link.
Cisco Nexus Dashboard Integrations Easy to learn, simple to use, and constantly updated with powerful new capabilities.
Ansible Automation Start your automation journey with Ansible. These Ansible tutorials give you the flexibility to turn your laptops into an Ansible control station to automate basic tasks, or to use Ansible as an orchestration tool for the rollout of application updates while ensuring minimal downtime. Learn more Terraform Automation Apply Infrastructure as Code (IaC) methodologies to leverage the same agile practices that application developers use. Use Terraform with Cisco Intersight, Multi-Site Orchestrator, ACI, Cisco DNA Center, and Tetration to increase productivity while reducing risks for your organization. Learn more Infrastructure as Code Cisco helps you embrace DevOps, APIs, and Automation to manage networks efficiently, control risk, and optimize for growth and innovation. Learn more