---
source_path: "api/setting-keys/library-information.md"
canonical_url: "https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information/"
---

# Library information

These keys return information about the library. They require a valid
[Session](https://doc.sensory.com/tnl/7.8/api/inference.md#session) but are available before loading a task model.

Read information keys with the [Session](https://doc.sensory.com/tnl/7.8/api/inference.md#session) `get` function that matches the type of the
setting. For example, use [getString](https://doc.sensory.com/tnl/7.8/api/inference.md#getters) to retrieve the
_(string)_ value of [oss-components](https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information.md#oss-components).

<!-- Setting-key page conventions: shared admonition for all docs/api/setting-keys/*.md pages. -->
### Details: Page conventions

Settings are grouped by concern. Within each group they're listed
alphabetically. A setting that serves more than one concern appears once
under its primary group; secondary groups link to it.

The code tabs on each setting show one paste-able call site per language.
Adapt the placeholder names (`s` for the [Session](https://doc.sensory.com/tnl/7.8/api/inference.md#session), plus `value`,
`stream`, `on_event`, or `on_item` for the operand) to your code. Each
example assumes the language's standard prelude:

<!-- tab: c -->

**C/C++**

```c
#include <snsr.h>
```
<!-- /tab -->

<!-- tab: java -->

**Java**

```java
import com.sensory.speech.snsr.Snsr;
import com.sensory.speech.snsr.SnsrSession;
```
<!-- /tab -->

<!-- tab: py -->

**Python**

```python
import snsr
```
<!-- /tab -->

For the full Session lifecycle (`snsrNew`, `new SnsrSession()`,
`snsr.Session(...)`) see [Your first program](https://doc.sensory.com/tnl/7.8/getting-started/your-first-program.md#your-first-program).

## accel-info
- information
- string
- read-only

<!-- tab: c -->

**C/C++**

```c
const char * value;
snsrGetString(s, SNSR_ACCELERATION, &value);
```
<!-- /tab -->

<!-- tab: java -->

**Java**

```java
String value = s.getString(Snsr.ACCELERATION);
```
<!-- /tab -->

<!-- tab: py -->

**Python**

```python
value = s.get_string(snsr.ACCELERATION)
```
<!-- /tab -->

Type of acceleration used.

Returns text describing the type of vector acceleration the library uses.

**Also see these related items:** [library-info](https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information.md#library-info)

## library-info
- information
- string
- read-only

<!-- tab: c -->

**C/C++**

```c
const char * value;
snsrGetString(s, SNSR_LIBRARY_INFO, &value);
```
<!-- /tab -->

<!-- tab: java -->

**Java**

```java
String value = s.getString(Snsr.LIBRARY_INFO);
```
<!-- /tab -->

<!-- tab: py -->

**Python**

```python
value = s.get_string(snsr.LIBRARY_INFO)
```
<!-- /tab -->

SDK library information.

Human-readable summary of [NAME](https://doc.sensory.com/tnl/7.8/api/constants.md#name), [VERSION](https://doc.sensory.com/tnl/7.8/api/constants.md#version), [VERSION_DSP](https://doc.sensory.com/tnl/7.8/api/constants.md#version_dsp),
[accel-info](https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information.md#accel-info), [license-exp-message](https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information.md#license-exp-message), [license-exp-warn](https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information.md#license-exp-warn),
[stt-support](https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information.md#stt-support), [thread-support](https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information.md#thread-support), [LICENSE_SUPPORT](https://doc.sensory.com/tnl/7.8/api/library-config.md#config_license_support),
and [oss-components](https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information.md#oss-components).

## license-exp-date
- information
- double
- read-only

<!-- tab: c -->

**C/C++**

```c
double value;
snsrGetDouble(s, SNSR_LICENSE_EXPDATE, &value);
```
<!-- /tab -->

<!-- tab: java -->

**Java**

```java
double value = s.getDouble(Snsr.LICENSE_EXPDATE);
```
<!-- /tab -->

<!-- tab: py -->

**Python**

```python
value = s.get_double(snsr.LICENSE_EXPDATE)
```
<!-- /tab -->

 Library license expiration date.

 Returns the license expiration date of the TrulyNatural library in seconds
 since the [epoch][].
 For production keys, which do not expire, the expiration date is `0`.

## license-exp-message
- information
- string
- read-only

<!-- tab: c -->

**C/C++**

```c
const char * value;
snsrGetString(s, SNSR_LICENSE_EXPIRES, &value);
```
<!-- /tab -->

<!-- tab: java -->

**Java**

```java
String value = s.getString(Snsr.LICENSE_EXPIRES);
```
<!-- /tab -->

<!-- tab: py -->

**Python**

```python
value = s.get_string(snsr.LICENSE_EXPIRES)
```
<!-- /tab -->

Library license expiration message.

The returned string is of the form `"Library license expires on <date>"`, or
`NULL` for license keys that do not expire.

**Also see these related items:** [library-info](https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information.md#library-info)

## license-exp-warn
- information
- string
- read-only

<!-- tab: c -->

**C/C++**

```c
const char * value;
snsrGetString(s, SNSR_LICENSE_WARNING, &value);
```
<!-- /tab -->

<!-- tab: java -->

**Java**

```java
String value = s.getString(Snsr.LICENSE_WARNING);
```
<!-- /tab -->

<!-- tab: py -->

**Python**

```python
value = s.get_string(snsr.LICENSE_WARNING)
```
<!-- /tab -->

Library license expiration warning message.

This value is `NULL` for library license keys that do not expire,
or if the expiration date is more than 60 days into the future.
For license keys expiring in 60 days or fewer, the returned string
will be of the form `"License will expire in 37 days."`.

**Also see these related items:** [library-info](https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information.md#library-info)

## oss-components
- information
- string
- read-only

<!-- tab: c -->

**C/C++**

```c
const char * value;
snsrGetString(s, SNSR_OSS_COMPONENTS, &value);
```
<!-- /tab -->

<!-- tab: java -->

**Java**

```java
String value = s.getString(Snsr.OSS_COMPONENTS);
```
<!-- /tab -->

<!-- tab: py -->

**Python**

```python
value = s.get_string(snsr.OSS_COMPONENTS)
```
<!-- /tab -->

Open Source library acknowledgements.

List of Open Source third-party modules linked into the binary.

The returned string lists one module per newline-separated line.
Each line contains the name of the library, the license type and a URL
to the module license text, separated by tab characters.
The TrulyNatural SDK uses [permissive software licenses][oss-permissive] only.

If the binary uses no Open Source modules, the returned string is `NULL`.

**Also see these related items:** [library-info](https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information.md#library-info), [Open Source Licenses](https://doc.sensory.com/tnl/7.8/licenses/oss.md#open-source-licenses)

## stt-support
- information
- int
- read-only
<!-- tab: c -->

**C/C++**

```c
int value;
snsrGetInt(s, SNSR_STT_SUPPORT, &value);
```
<!-- /tab -->

<!-- tab: java -->

**Java**

```java
int value = s.getInt(Snsr.STT_SUPPORT);
```
<!-- /tab -->

<!-- tab: py -->

**Python**

```python
value = s.get_int(snsr.STT_SUPPORT)
```
<!-- /tab -->

Library Speech-To-Text support.

Returns `1` if the TrulyNatural SDK supports STT models,
or `0 `if STT support is not available.

This is functionally equivalent to calling [config](https://doc.sensory.com/tnl/7.8/api/library-config.md#config) with [CONFIG_STT_SUPPORT](https://doc.sensory.com/tnl/7.8/api/library-config.md#config_stt_support),
but is available across all API language bindings.

**Also see these related items:** [library-info](https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information.md#library-info), [CONFIG_STT_SUPPORT](https://doc.sensory.com/tnl/7.8/api/library-config.md#config_stt_support)

## thread-support
- information
- int
- read-only
<!-- tab: c -->

**C/C++**

```c
int value;
snsrGetInt(s, SNSR_THREAD_SUPPORT, &value);
```
<!-- /tab -->

<!-- tab: java -->

**Java**

```java
int value = s.getInt(Snsr.THREAD_SUPPORT);
```
<!-- /tab -->

<!-- tab: py -->

**Python**

```python
value = s.get_int(snsr.THREAD_SUPPORT)
```
<!-- /tab -->

Library multithreading support.

Returns `1` if the TrulyNatural SDK supports running multi-threaded
models, or `0` if thread support is not available.

This is functionally equivalent to calling [config](https://doc.sensory.com/tnl/7.8/api/library-config.md#config) with [CONFIG_THREAD_SUPPORT](https://doc.sensory.com/tnl/7.8/api/library-config.md#config_thread_support),
but is available across all API language bindings.

**Also see these related items:** [library-info](https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information.md#library-info), [CONFIG_THREAD_SUPPORT](https://doc.sensory.com/tnl/7.8/api/library-config.md#config_thread_support)

<!-- Reference definitions from includes/links.md -->
[epoch]: https://en.wikipedia.org/wiki/Unix_time "Unix time"
[oss-permissive]: https://en.wikipedia.org/wiki/Permissive_software_license "Grants use rights, forbids almost nothing"

<!-- Abbreviation definitions from includes/abbreviations.md -->
*[API]: Application Programming Interface
*[OSS]: Open-source software
*[SDK]: Software Development Kit
*[STT]: Speech To Text: transformers with language model and CTC decoding
*[TNL]: TrulyNatural, Sensory's large-vocabulary speech recognition technology
