By William Lam, Sr. Technical Marketing Engineer

If you are not a developer or programmer, the term API and SDK maybe foreign words to you. If you have heard of either of these words, often times they are miss-used or used interchangeably with one or another which can cause confusion. So what is an API and SDK?

Wikipedia’s defines an API as:
An application programming interface (API) is a source code based specification intended to be used as an interface by software components to communicate with each other. An API may include specifications for routines, data structures, object classes, and variables.

Wikpedia’s defines an SDK as:
A software development kit (SDK or “devkit”) is typically a set of software development tools that allows for the creation of applications for a certain software package, software framework, hardware platform, computer system, video game console, operating system, or similar platform.

Basically, an API provides an interface for users to access the underlying platform capabilities and features. An SDK may provide a set of tools, helper classes (e.g. additional code that simplifies the access of an API), specific language bindings and sample code to help users develop and use the API. In general, you could have a single API exposing a set of functionality and have multiple SDKs to access that API. An SDK may not always exists for an API, but it is helpful when one is provided.

Let’s take a look at an example using one of VMware’s common API and SDK, the vSphere API and vSphere SDK.


The underlying platform in this case is VMware vSphere which consists of VMware vCenter Server and VMware ESX(i). The vSphere API exposes the various functionalities of the platform such as host management, virtual machine provisioning, monitoring, etc. as a Web services API. VMware provides several SDKs that target particular programming/scripting languages such as Java, .NET, and Perl to name a few, that helps users get started and develop against the vSphere API. Users may bypass the vSphere SDK and use the vSphere web Service API directly, but the SDKs are much friendly from a development standpoint.

Hopefully this gave you a better understanding between an API and an SDK. In the next post, we will dive into an introduction of the vSphere API and the various components that make up the API. Stay tuned!

Get notification of new blog postings and more by following lamw on Twitter:  @lamw