Welcome to the Nymi SDK 4.1

This release contains significant improvements and functionality changes. NEA developers are advised to read and understand these changes before updating their projects to this release of the Nymi SDK. NEA code updates are required to consume these changes.

Note: If you choose not to upgrade to version 4.1, documentation for 4.0 is still available here.

New in SDK 4.1

In SDK 4.1, the Nymi API (NAPI) is provided as a dynamic library on Windows, and a framework on macOS.

This version of the SDK targets Nymi firmware version 1.9.7. and later.



Known Issues

If there are operations in progress when terminate() is called, there may be a delay of up to 30 seconds before it completes.

Starting Points



Migrating to NAPI 4.1

If you have developed an NEA using the Nymi SDK 4.0, you must update your NEA before attempting to use SDK 4.1. This section describes the high-level steps required for migrating a project from NAPI 4.0 to 4.1.

  1. Rename entry points
  2. Link the dynamic library or framework
  3. Update configuration
  4. Update provision handling

Rename Entry Points

Open your project and do a Search and Replace on the following names:

nymi:: napi::
JsonPutOutcome PutOutcome
JsonGetOutcome GetOutcome
JsonConfigOutcome ConfigOutcome

NAPI is now available as a dynamic library for Windows, and as a framework for macOS. Link your project against the new library or framework as required.


Note: Both Debug and Release versions of NAPI are available in the SDK package.

macOS/OS X:

Update Configuration


API ConfigOutcome configure( const char* neaName,
    const char* logDirectory,
    const char* provisions = "{}",
    LogLevel logLevel = LogLevel::normal,
    int port = -1,
    const char* host = "" );


def configure(

Update the function to configure and initialize NAPI (napi::configure):

This function replaces the config.json and the provisions.json files. Instead of those two files, you must provide the NEA name and the list of any existing provisions to NAPI when it is initialized.

The default values are shown in the example code on the right.

Update Provision Handling

Add code to your NEA to manage the saving/storing of provisions. Your NEA must take on the task of managing provisions. It is up to you to decide how to implement this. Use the NAPI commands for putting and getting provisions to change the list of provisions that NAPI knows about.

Note: The provisions must be kept secret to the NEA.

Important: Provisions created on Windows PCs can only be shared across Windows devices. Provisions created on macOS/OS X are specific to the device they are created on and cannot be shared with any other devices, regardless of platform.

Although NAPI itself no long requires the provisions.json file, you can still make use of it in your NEA. In general, the standard method for handling provisions is as follows:

  1. On first run, configure NAPI with an empty list of provisions.
  2. Provision Nymi Bands as you have previously done.
  3. Before quitting the NEA, save the provision information to the provisions.json file.

For details see NAPI JSON Examples.

For an example of this behaviour, see the apy sample app.