How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Nutanix v4 SDK: API Version Negotiation in Prism Central 7.5

calendar_today January 23, 2026 person Chris Rasmussen domain nutanix

Introduction

In today’s quick article we’re going to cover a new Nutanix v4 SDK and Prism Central 7.5 feature specifically aimed at providing “Version Negotiation”. This feature does not need to be manually enabled; it is enabled by default.

Scenario

In today’s mock scenario our initial configuration is as follows.

  • SDK client uses the Nutanix v4.0.1 Python SDK; this article will use the vmm Virtual Machine Management namespace
  • The API endpoint is Prism Central version 7.3.1

In this environment, a basic request would be as follows.

  • Client uses the appropriate SDK function to request a list of VMs i.e. ntnx_vmm_py_client.api.VmApi.list_vms()
  • The SDK sends the request to /api/vmm/v4.0/vms
  • Because the SDK and Prism Central versions are compatible, the server responds with a list of VMs

However, if the client upgrades to the latest SDK version without upgrading Prism Central, the exact same SDK function will fail with an HTTP 404 NOT FOUND error. The failure is caused by the new SDK version sending requests to an API endpoint that is not yet supported by Prism Central. In this scenario, the configuration is now as follows:

  • SDK client version 4.2.1 (upgraded)
  • Prism Central version 7.3.1 (unchanged)

In this environment, the request would be as follows:

  • Client uses the same SDK function to request a list of VMs i.e. ntnx_vmm_py_client.api.VmApi.list_vms()
  • The SDK, because it has been upgraded, sends the request to /api/vmm/v4.2/vms
  • Because the SDK and Prism Central versions are not compatible, the request fails with an HTTP 404 NOT FOUND error

The process of version negotiation is specifically designed to prevent this type of error.

What is Version Negotiation?

Version negotiation is a process that enables an SDK client such as the Nutanix v4 Python SDK to communicate with a server providing an API such as Prism Central and, at the same time, ensure the SDK uses API endpoints compatible with the deployed version of Prism Central.

Note: This feature applies to all Nutanix v4 SDKs – Python, Java, JavaScript and Go. Python has been used as an example.

With Version Negotiation available, the improved request process is as follows.

  • Client uses an SDK function or method to request a list of VMs
  • The SDK, because it has been upgraded, sends the request to /api/vmm/v4.2/vms
  • Prism Central 7.5 (upgraded) and the client SDK agree on a mutually supported API version
  • The agreed API version is then used to service the request, ensuring the response is as expected and, most importantly, does not result in an HTTP 404 NOT FOUND error.

Examples

Using the Nutanix v4 Python SDK, let’s test what we’ve learnt so far. Note this quick demo is being run on a Linux workstation.

Setup

To begin, a Python virtual environment has been created and activated.

# create the environment
python -m venv venv
# activate
. venv/bin/activate

Test 1: Expected Success

Environment:

  • Nutanix v4 Python SDK v4.0.1
  • Prism Central 7.3.1
  1. Install specific version dependencies.
# install Nutanix VMM Python SDK, specifically version 4.0.1
pip install ntnx_vmm_py_client==4.0.1
# enter Python REPL
python
  1. Run a quick test, noting the VM list is returned as expected.
# import dependencies
import ntnx_vmm_py_client
from ntnx_vmm_py_client import Configuration
from ntnx_vmm_py_client import ApiClient

# disable SSL certificate warnings; not recommended in production
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

# setup the configuration
config = Configuration()
config.host = "10.0.0.10"
config.port = "9440"
config.username = "admin"
config.password = "nutanix/4u"
config.verify_ssl = False
config.debug = False

client = ApiClient(configuration=config)
vmm_instance = ntnx_vmm_py_client.api.VmApi(api_client=client)

# list VMs
vm_list = vmm_instance.list_vms(async_req=False)
Quick Python script to list VMs in a supported SDK + Prism Central environment

As expected, this returns a list of VMs from our Prism Central instance and the response object confirms we have a list of VMs:

14 VMs are available in our demo environment

Test 2: Expected Failure

Environment:

  • Nutanix v4 Python SDK v4.2.1 (upgraded)
  • Prism Central 7.3.1 (unchanged)
  1. Exit the Python REPL with exit() and upgrade the ntnx_vmm_py_client SDK.
exit()
# Python VMM namespace version 4.2.1 is the latest at the time of writing
pip install ntnx_vmm_py_client==4.2.1
# re-enter the Python REPL
python
  1. Run the same script as before without making any changes, observing that the exact same script now fails with HTTP 404 NOT FOUND:
Expected failure due to SDK upgrade before Prism Central is upgraded to 7.5

However, note the error message also contains the following text:

2025-12-23 05:38:43,628Z WARNING [MainThread:ntnx_vmm_py_client.api_client:983] Server version v4.1 is below minimum supported version v4.2. Version negotiation will not be performed.

This is an indication that the new v4.2.1 version of the Python SDK is version negotiation aware, but Prism Central does not yet support that feature.

Current and future state

Because Prism Central 7.5 and Python SDK v4.2.1 (the latest at the time of writing) are both version negotiation aware, it is logical these these two versions are compatible with each other. SDK functions will function as normal.

However, if the SDK is upgraded to a later version at some point in the future without upgrading Prism Central at the same time, Prism Central will be able to use version negotiation to ensure the correct API version is consumed by the SDK.

This will remove the possibility of HTTP 404 NOT FOUND errors from occurring when using the Nutanix v4 SDKs and ensure a smoother, easier to debug experience when using the Nutanix v4 SDKs.

Thanks for reading.

Related Resources

open_in_new Read original post