# SDK API

{% hint style="info" %}
Related C++ Header in the Auterion SDK: `<auterion_sdk/auterion.hpp>`

Code documentation [here](https://auterion.github.io/auterion-sdk/).
{% endhint %}

## SDK life cycle

The `auterion::SDK` object is used to manage the life cycle of the SDK. The most common case is to instantiate the SDK at the start of the `main` function, and to let it go out of scope when the program exits.

```cpp
int main(int argc, char* argv[]) {
    auterion::SDK sdk(argc, argv, "my_application_name");

    MyMode my_mode(sdk);

    sdk.run();

    return 0;
}
```

The `sdk.run()` call starts all the asynchronous callback logic in the SDK. When you subscribe to callbacks, this is when those will start to be callled. `sdk.run()` only returns when the program is shut down.
