Azure IoT SDKs

The following tables list the various SDKs you can use to build IoT solutions.

Device SDKs

The Microsoft Azure IoT device SDKs contain code that facilitates building applications that connect to and are managed by Azure IoT Hub services. These SDKs can run on a general MPU-based computing device such as a PC, tablet, smartphone, or Raspberry Pi. The SDKs support development in C and in modern managed languages including in C#, Node.JS, Python, and Java.

The SDKs are available in multiple languages providing the flexibility to choose which best suits your team and scenario.

Language Package Source Quickstarts Samples Reference
.NET NuGet GitHub Connect to IoT Hub Samples Reference
Python pip GitHub Connect to IoT Hub Samples Reference
Node.js npm  GitHub Connect to IoT Hub Samples Reference
Java Maven GitHub Connect to IoT Hub Samples Reference
C packages GitHub Connect to IoT Hub Samples Reference

The Java device SDK includes samples for Android.

The C device SDK includes samples for iOS that use CocoaPods.

Warning

The Azure IoT C SDK isn't suitable for embedded applications due to its memory management and threading model. For embedded device SDK options, see the embedded device SDKs.

Use the device SDKs to develop code to run on IoT devices that connect to IoT Hub or IoT Central.

To learn more about how to use the device SDKs, see What is Azure IoT device and application development?.

Embedded device SDKs

These SDKs were designed and created to run on devices with limited compute and memory resources and are implemented using the C language.

The embedded device SDKs are available for multiple operating systems providing the flexibility to choose which best suits your scenario.

RTOS SDK Source Samples Reference
Azure RTOS Azure RTOS Middleware GitHub Quickstarts Reference
FreeRTOS FreeRTOS Middleware GitHub Samples Reference
Bare Metal Azure SDK for Embedded C GitHub Samples Reference

Use the embedded device SDKs to develop code to run on IoT devices that connect to IoT Hub or IoT Central.

To learn more about when to use the embedded device SDKs, see C SDK and Embedded C SDK usage scenarios.

Device SDK lifecycle and support

This section summarizes the Azure IoT Device SDK lifecycle and support policy. For more information, see Azure SDK Lifecycle and support policy.

Package lifecycle

Packages are released in the following categories. Each category has a defined support structure.

  1. Beta - Also known as Preview or Release Candidate. Available for early access and feedback purposes and is not recommended for use in production. The preview version support is limited to GitHub issues. Preview releases typically live for less than six months, after which they're either deprecated or released as active.

  2. Active - Generally available and fully supported, receives new feature updates, as well as bug and security fixes. We recommend that customers use the latest version because that version receives fixes and updates.

  3. Deprecated - Superseded by a more recent release. Deprecation occurs at the same time the new release becomes active. Deprecated releases address the most critical bug fixes and security fixes for another 12 months.

Get support

If you experience problems while using the Azure IoT SDKs, there are several ways to seek support:

  • Reporting bugs - All customers can report bugs on the issues page for the GitHub repository associated with the relevant SDK.

  • Microsoft Customer Support team - Users who have a support plan can engage the Microsoft Customer Support team by creating a support ticket directly from the Azure portal.

IoT Hub service SDKs

The Azure IoT service SDKs contain code to facilitate building applications that interact directly with IoT Hub to manage devices and security.

Platform Package Code Repository Samples Reference
.NET NuGet GitHub Samples Reference
Java Maven GitHub Samples Reference
Node npm GitHub Samples Reference
Python pip GitHub Samples Reference

To learn more about using the service SDKs to interact with devices through an IoT hub, see IoT Plug and Play service developer guide.

IoT Hub management SDKs

The IoT Hub management SDKs help you build backend applications that manage the IoT hubs in your Azure subscription.

Platform Package Code repository Reference
.NET NuGet GitHub Reference
Java Maven GitHub Reference
Node.js npm GitHub Reference
Python pip GitHub Reference

Alternatives to the management SDKs include the Azure CLI, PowerShell, and REST API.

DPS device SDKs

The DPS device SDKs provide implementations of the Register API and others that devices call to provision through DPS. The device SDKs can run on general MPU-based computing devices such as a PC, tablet, smartphone, or Raspberry Pi. The SDKs support development in C and in modern managed languages including in C#, Node.JS, Python, and Java.

Platform Package Code repository Samples Quickstart Reference
.NET NuGet GitHub Samples Quickstart Reference
C apt-get, MBED, Arduino IDE or iOS GitHub Samples Quickstart Reference
Java Maven GitHub Samples Quickstart Reference
Node.js npm GitHub Samples Quickstart Reference
Python pip GitHub Samples Quickstart Reference

Warning

The C SDK listed above is not suitable for embedded applications due to its memory management and threading model. For embedded devices, refer to the Embedded device SDKs.

DPS embedded device SDKs

These SDKs were designed and created to run on devices with limited compute and memory resources and are implemented using the C language.

RTOS SDK Source Samples Reference
Azure RTOS Azure RTOS Middleware GitHub Quickstarts Reference
FreeRTOS FreeRTOS Middleware GitHub Samples Reference
Bare Metal Azure SDK for Embedded C GitHub Samples Reference

Learn more about the device and embedded device SDKs in the IoT Device Development documentation.

DPS service SDKs

The DPS service SDKs help you build backend applications to manage enrollments and registration records in DPS instances.

Platform Package Code repository Samples Quickstart Reference
.NET NuGet GitHub Samples Quickstart Reference
Java Maven GitHub Samples Quickstart Reference
Node.js npm GitHub Samples Quickstart Reference

DPS management SDKs

The DPS management SDKs help you build backend applications that manage the DPS instances and their metadata in your Azure subscription.

Platform Package Code repository Reference
.NET NuGet GitHub Reference
Java Maven GitHub Reference
Node.js npm GitHub Reference
Python pip GitHub Reference

Azure Digital Twins control plane APIs

The control plane APIs are ARM APIs used to manage your Azure Digital Twins instance as a whole, so they cover operations like creating or deleting your entire instance. You'll also use these APIs to create and delete endpoints.

To call the APIs directly, reference the latest Swagger folder in the control plane Swagger repo. This folder also includes a folder of examples that show the usage.

Here are the SDKs currently available for the Azure Digital Twins control plane APIs.

SDK language Package link Reference documentation Source code
.NET (C#) Azure.ResourceManager.DigitalTwins on NuGet Reference for Azure DigitalTwins SDK for .NET Microsoft Azure Digital Twins management client library for .NET on GitHub
Java azure-resourcemanager-digitaltwins on Maven Reference for Resource Management - Digital Twins Azure Resource Manager AzureDigitalTwins client library for Java on GitHub
JavaScript AzureDigitalTwinsManagement client library for JavaScript on npm AzureDigitalTwinsManagement client library for JavaScript on GitHub
Python azure-mgmt-digitaltwins on PyPI Microsoft Azure SDK for Python on GitHub
Go azure-sdk-for-go/services/digitaltwins/mgmt Azure SDK for Go on GitHub

Azure Digital Twins data plane APIs

The data plane APIs are the Azure Digital Twins APIs used to manage the elements within your Azure Digital Twins instance. They include operations like creating routes, uploading models, creating relationships, and managing twins, and can be broadly divided into the following categories:

  • DigitalTwinModels - The DigitalTwinModels category contains APIs to manage the models in an Azure Digital Twins instance. Management activities include upload, validation, retrieval, and deletion of models authored in DTDL.
  • DigitalTwins - The DigitalTwins category contains the APIs that let developers create, modify, and delete digital twins and their relationships in an Azure Digital Twins instance.
  • Query - The Query category lets developers find sets of digital twins in the twin graph across relationships.
  • Event Routes - The Event Routes category contains APIs to route data, through the system and to downstream services.
  • Import Jobs - The Import Jobs API lets you manage a long running, asynchronous action to import models, twins, and relationships in bulk.
  • Delete Jobs - The Delete Jobs API lets you manage a long running, asynchronous action to delete all models, twins, and relationships in an instance.

To call the APIs directly, reference the latest Swagger folder in the data plane Swagger repo. This folder also includes a folder of examples that show the usage. You can also view the data plane API reference documentation.

Here are the SDKs currently available for the Azure Digital Twins data plane APIs.

SDK language Package link Reference documentation Source code
.NET (C#) Azure.DigitalTwins.Core on NuGet Reference for Azure IoT Digital Twins client library for .NET Azure IoT Digital Twins client library for .NET on GitHub
Java com.azure:azure-digitaltwins-core on Maven Reference for Azure Digital Twins SDK for Java Azure IoT Digital Twins client library for Java on GitHub
JavaScript Azure Azure Digital Twins Core client library for JavaScript on npm Reference for @azure/digital-twins-core Azure Azure Digital Twins Core client library for JavaScript on GitHub
Python Azure Azure Digital Twins Core client library for Python on PyPI Reference for azure-digitaltwins-core Azure Azure Digital Twins Core client library for Python on GitHub

Next steps

Suggested next steps include: