# Class index — C# API (AR51.Net)

Every public type of the **`AR51.Net`** assembly, grouped by area. All types are in the one namespace `AR51.Net`.

:::note[Units]
Positions are in **meters**, in the AR 51 world: **left-handed, X right, Y up, Z forward** (the same axes as Unity). Rotations are `System.Numerics.Quaternion`. See [Data conventions](/docs/csharp-api/conventions/).
:::

## Connecting

<div className="apiTable">

| Type | Kind | |
|---|---|---|
| [**`AR51Client`**](/docs/sdk-api/csharp-api/classes/ar51client/) | `static class` | Creates `IAR51Client` instances. |
| [**`AR51ClientOptions`**](/docs/sdk-api/csharp-api/classes/ar51clientoptions/) | `record · sealed` | Settings for `AR51Client.Create`. |
| [`AR51ErrorCode`](/docs/sdk-api/csharp-api/classes/ar51exception/#ar51errorcode) | `enum` | What went wrong in a `AR51Exception`. |
| [**`AR51Exception`**](/docs/sdk-api/csharp-api/classes/ar51exception/) | `class · sealed` | Thrown when a call to the AR 51 system fails. |
| [`ConnectionState`](/docs/sdk-api/csharp-api/classes/iar51client/#connectionstate) | `enum` | The connection state of an `IAR51Client`. |
| [`ConnectionStateChangedEventArgs`](/docs/sdk-api/csharp-api/classes/iar51client/#connectionstatechangedeventargs) | `class · sealed` | Data for `IAR51Client.ConnectionStateChanged`. |
| [**`IAR51Client`**](/docs/sdk-api/csharp-api/classes/iar51client/) | `interface` | The AR 51 system: finds the server, connects, and gives you every service through one object. |

</div>

## Skeletons

<div className="apiTable">

| Type | Kind | |
|---|---|---|
| [`HandJoint`](/docs/sdk-api/csharp-api/classes/handpose/#handjoint) | `enum` | Hand joints reported in a `HandPose`. |
| [**`HandPose`**](/docs/sdk-api/csharp-api/classes/handpose/) | `class · sealed` | The joint positions of one hand, from a headset with hand tracking. |
| [**`ISkeletonClient`**](/docs/sdk-api/csharp-api/classes/iskeletonclient/) | `interface` | Live skeletons of the people the AR 51 system tracks. |
| [`Joint`](/docs/sdk-api/csharp-api/classes/skeleton/#joint) | `enum` | Body joints reported in a `Skeleton`. |
| [**`Skeleton`**](/docs/sdk-api/csharp-api/classes/skeleton/) | `class · sealed` | One tracked person at one moment: the 3D position and confidence of each body joint, the hands when a hand-tracking headset reports them, plus identity and timing. |
| [**`SkeletonClient`**](/docs/sdk-api/csharp-api/classes/skeletonclient/) | `class · sealed` | Receives live skeletons from the AR 51 skeleton service. |
| [`SkeletonEventArgs`](/docs/sdk-api/csharp-api/classes/iskeletonclient/#skeletoneventargs) | `class · sealed` | Data for `ISkeletonClient.SkeletonReceived`. |

</div>

## Object detection

<div className="apiTable">

| Type | Kind | |
|---|---|---|
| [**`IObjectDetectionClient`**](/docs/sdk-api/csharp-api/classes/iobjectdetectionclient/) | `interface` | Live tracked objects, for example props. |
| [**`ObjectDetectionClient`**](/docs/sdk-api/csharp-api/classes/objectdetectionclient/) | `class · sealed` | Receives live tracked objects from the AR 51 object detection service. |
| [**`TrackedObject`**](/docs/sdk-api/csharp-api/classes/trackedobject/) | `class · sealed` | One tracked object at one moment, for example a prop: its position and rotation, plus identity and timing. |
| [`TrackedObjectEventArgs`](/docs/sdk-api/csharp-api/classes/iobjectdetectionclient/#trackedobjecteventargs) | `class · sealed` | Data for `IObjectDetectionClient.ObjectReceived`. |

</div>

## Servers

<div className="apiTable">

| Type | Kind | |
|---|---|---|
| [**`IServerClient`**](/docs/sdk-api/csharp-api/classes/iserverclient/) | `interface` | The AR 51 server machines: see their status, launch or quit the AR 51 server program, and start or stop tracking. |
| [`ServerInfo`](/docs/sdk-api/csharp-api/classes/iserverclient/#serverinfo) | `record · sealed` | An AR 51 server machine. |
| [`ServersChangedEventArgs`](/docs/sdk-api/csharp-api/classes/iserverclient/#serverschangedeventargs) | `class · sealed` | Data for `IServerClient.ServersChanged`. |
| [`ServerState`](/docs/sdk-api/csharp-api/classes/iserverclient/#serverstate) | `enum` | Whether the AR 51 server program is running on a machine. |
| [`ServerStatus`](/docs/sdk-api/csharp-api/classes/iserverclient/#serverstatus) | `record · sealed` | The status of an AR 51 server machine. |
| [`TrackingState`](/docs/sdk-api/csharp-api/classes/iserverclient/#trackingstate) | `enum` | Whether the AR 51 server program is tracking. |

</div>

## Cameras

<div className="apiTable">

| Type | Kind | |
|---|---|---|
| [`AutoTuneEndedEventArgs`](/docs/sdk-api/csharp-api/classes/icameraclient/#autotuneendedeventargs) | `class · sealed` | Data for `ICameraClient.AutoTuneEnded`. |
| [`AutoTuneOptions`](/docs/sdk-api/csharp-api/classes/icameraclient/#autotuneoptions) | `record · sealed` | Options for `ICameraClient.StartAutoTuneAsync`. |
| [`AutoTuneOutcome`](/docs/sdk-api/csharp-api/classes/icameraclient/#autotuneoutcome) | `enum` | How an auto-tune ended. |
| [`AutoTuneStatus`](/docs/sdk-api/csharp-api/classes/icameraclient/#autotunestatus) | `record · sealed` | The status of an auto-tune across all camera servers. |
| [`AutoTuneStatusEventArgs`](/docs/sdk-api/csharp-api/classes/icameraclient/#autotunestatuseventargs) | `class · sealed` | Data for `ICameraClient.AutoTuneStarted` and `ICameraClient.AutoTuneProgressChanged`. |
| [`CameraAutoTuneStatus`](/docs/sdk-api/csharp-api/classes/icameraclient/#cameraautotunestatus) | `record · sealed` | The auto-tune status of one camera. |
| [`CameraCalibration`](/docs/sdk-api/csharp-api/classes/camerainfo/#cameracalibration) | `record · sealed` | A camera's calibration values, in the OpenCV convention. |
| [`CameraFrame`](/docs/sdk-api/csharp-api/classes/icameraclient/#cameraframe) | `record · sealed` | One preview image from a camera. |
| [**`CameraInfo`**](/docs/sdk-api/csharp-api/classes/camerainfo/) | `record · sealed` | An AR 51 camera. |
| [**`CameraSettings`**](/docs/sdk-api/csharp-api/classes/camerasettings/) | `record · sealed` | A camera's image settings. |
| [**`ICameraClient`**](/docs/sdk-api/csharp-api/classes/icameraclient/) | `interface` | The AR 51 cameras: list them with their calibration values, preview their video, change their image settings, and tune those settings automatically. |
| [`LensDistortion`](/docs/sdk-api/csharp-api/classes/camerainfo/#lensdistortion) | `record struct · readonly` | Lens distortion coefficients, in the OpenCV order (k1, k2, p1, p2, k3). |
| [`PreviewOptions`](/docs/sdk-api/csharp-api/classes/icameraclient/#previewoptions) | `record · sealed` | Options for `ICameraClient.StreamPreviewAsync`. |

</div>

## Calibration

<div className="apiTable">

| Type | Kind | |
|---|---|---|
| [`CalibrationEndedEventArgs`](/docs/sdk-api/csharp-api/classes/icalibrationclient/#calibrationendedeventargs) | `class · sealed` | Data for `ICalibrationClient.CalibrationEnded`. |
| [`CalibrationOutcome`](/docs/sdk-api/csharp-api/classes/icalibrationclient/#calibrationoutcome) | `enum` | How a calibration ended. |
| [`CalibrationResult`](/docs/sdk-api/csharp-api/classes/icalibrationclient/#calibrationresult) | `record · sealed` | The result of a calibration. |
| [`CalibrationStatus`](/docs/sdk-api/csharp-api/classes/icalibrationclient/#calibrationstatus) | `record · sealed` | The status of camera calibration. |
| [`CalibrationStatusEventArgs`](/docs/sdk-api/csharp-api/classes/icalibrationclient/#calibrationstatuseventargs) | `class · sealed` | Data for `ICalibrationClient.CalibrationStarted` and `ICalibrationClient.CalibrationProgressChanged`. |
| [**`CaptureBounds`**](/docs/sdk-api/csharp-api/classes/capturebounds/) | `record · sealed` | The tracked area: a box in the AR 51 world (meters; left-handed, X right, Y up, Z forward). |
| [**`ICalibrationClient`**](/docs/sdk-api/csharp-api/classes/icalibrationclient/) | `interface` | Camera calibration and the tracked area (capture bounds). |

</div>

## Recording

<div className="apiTable">

| Type | Kind | |
|---|---|---|
| [**`IRecordingClient`**](/docs/sdk-api/csharp-api/classes/irecordingclient/) | `interface` | Records camera video and tracking data on the AR 51 servers. |
| [`RecordingOptions`](/docs/sdk-api/csharp-api/classes/irecordingclient/#recordingoptions) | `record · sealed` | Options for `IRecordingClient.StartRecordingAsync`. |
| [`RecordingStateEventArgs`](/docs/sdk-api/csharp-api/classes/irecordingclient/#recordingstateeventargs) | `class · sealed` | Data for `IRecordingClient.RecordingStateChanged`. |

</div>

## Devices

<div className="apiTable">

| Type | Kind | |
|---|---|---|
| [`DeviceInfo`](/docs/sdk-api/csharp-api/classes/ideviceclient/#deviceinfo) | `record · sealed` | A device connected to the AR 51 system. |
| [`DevicePlatform`](/docs/sdk-api/csharp-api/classes/ideviceclient/#deviceplatform) | `enum` | The platform of a connected device. |
| [`DevicesChangedEventArgs`](/docs/sdk-api/csharp-api/classes/ideviceclient/#deviceschangedeventargs) | `class · sealed` | Data for `IDeviceClient.DevicesChanged`. |
| [`DeviceType`](/docs/sdk-api/csharp-api/classes/ideviceclient/#devicetype) | `enum` | The kind of a connected device. |
| [**`IDeviceClient`**](/docs/sdk-api/csharp-api/classes/ideviceclient/) | `interface` | The apps and devices connected to the AR 51 system: headsets, Unity and Unreal apps, phones and Mocap Studio. |

</div>
