---
title: "SDK Interface"
url: https://develop.sentry.dev/sdk/foundations/transport/event-payloads/sdk/
---

# SDK Interface

The SDK Interface describes the Sentry SDK and its configuration used to capture and transmit an event.

## [Attributes](https://develop.sentry.dev/sdk/foundations/transport/event-payloads/sdk.md#attributes)

* `name`

  **Required**. The name of the SDK. The format is `entity.ecosystem[.flavor]`where *entity* identifies the developer of the SDK, *ecosystem* refers to theprogramming language or platform where the SDK is to be used and the optional*flavor* is used to identify standalone SDKs that are part of a majorecosystem. Official Sentry SDKs use the *entity* `sentry`. Examples:

- `sentry.python`
- `sentry.javascript.react-native`

For SDKs that are composed of more than one Sentry SDK. For example, [the Unity SDK](https://github.com/getsentry/sentry-unity/issues/616) which includes a .NET layer as well as different native layers. When events come out of the native layer, it's important to distinguish from the stand-alone native SDK. We do that by appending the top SDK to the end of the native SDK name. Examples:

Unity SDK:

* `sentry.dotnet.unity` on events coming from C#. As based on the spec above.

  * `sentry.java.android.unity` on for events of the Java layer on Android
  * `sentry.native.android.unity` on for events of the Native layer on Android
  * `sentry.cocoa.unity` on for events from iOS/macOS layer
  * `sentry.native.unity` on for events coming from `sentry.native` directly. Such as on Windows and Linux.

Android SDK

* `sentry.java.android` on events from the Java layer. Since the Android SDK is based on the Java SDK.
* `sentry.native.android` on events from NDK. It's `sentry.native` but it's bundled in the Android SDK with some customization.

- `version`

  **Required**. The version of the SDK. It should have the [SemanticVersioning](https://semver.org) format `MAJOR.MINOR.PATCH`, without any prefix(no `v` or anything else in front of the major version number). Examples:

* `0.1.0`
* `1.0.0`
* `4.3.12`

- `integrations`

  *Optional*. A list of names identifying enabled integrations. The list shouldhave all enabled integrations, including default integrations. Defaultintegrations are included because different SDK releases may contain differentdefault integrations.

- `features`

  *Optional*. A list of feature names identifying enabled SDK features. This listshould contain all enabled SDK features. On some SDKs, enabling a feature in theoptions also adds an integration. We encourage tracking such features with eitherintegrations or features but not both to reduce the payload size.

- `packages`

  *Optional*. A list of packages that were installed as part of this SDK or theactivated integrations. Each package consists of a `name` in the format`source:identifier` and `version`. If the source is a Git repository, the source should be `git`, the`identifier` should be a checkout link and the `version` should be a Gitreference (branch, tag or SHA).

- `settings`

  *Optional*. A collection of settings that are used to control behaviour.

* `infer_ip`: Controls the behaviour of IP address inference based on request information. Following values are allowed:

  * `auto`: infer the IP address based on available request information. This is equal to [setting the IP address to `{{auto}}`](https://develop.sentry.dev/sdk/foundations/transport/event-payloads/user.md#automatic-ip-addresses).
  * `never`: Do not infer the IP address from the request. This is the default if an invalid value for `infer_ip` was sent.
  * `legacy`: Infer the IP address only if the value is `{{auto}}`. For Javascript and Cocoa it will also infer if `ip_address` is empty. This is the default if no value was sent.

## [Example](https://develop.sentry.dev/sdk/foundations/transport/event-payloads/sdk.md#example)

The following example illustrates the SDK part of the [event payload](https://develop.sentry.dev/sdk/foundations/transport/event-payloads.md) and omits other attributes for simplicity.

```json
{
  "sdk": {
    "name": "sentry.javascript.react-native",
    "version": "1.0.0",
    "integrations": ["redux"],
    "features": ["capture_failed_requests"],
    "packages": [
      {
        "name": "npm:@sentry/react-native",
        "version": "0.39.0"
      },
      {
        "name": "git:https://github.com/getsentry/sentry-cocoa.git",
        "version": "4.1.0"
      }
    ],
    "settings": {
      "infer_ip": "auto"
    }
  }
}
```
