---
title: Choose an SDK
description: Official Sudomimus SDKs, how they map to the public APIs, and when
  to use each language package.
editUrl: true
head: []
template: doc
sidebar:
  order: 1
  hidden: false
  attrs: {}
pagefind: true
draft: false
---

import { CardGrid, LinkCard } from "@astrojs/starlight/components";

Sudomimus SDKs are strongly typed clients generated from the public OpenAPI 3.1 contracts in [`sudomimus/sudomimus-spec`](https://github.com/sudomimus/sudomimus-spec). They wrap the raw HTTPS APIs with request and response types, JSON serialization, client-auth signing, token parsing, Session JWKS caching, signature verification helpers, and structured API errors.

Use the SDK when you are building an application integration. Use the API reference when you need the exact wire contract for debugging, unsupported languages, or generated clients of your own.

## API Coverage

| API | SDK responsibility |
| --- | --- |
| Connect API | Start browser login inquiries, status-poll them, redeem them for tokens, and fetch application metadata. |
| Session API | Rotate refresh tokens, introspect sessions, log out one session, or revoke all sessions for a subject. |
| Device API | Start device-code authorization and exchange the device code after user approval. |
| Native API | Exchange Steam tickets or AccessKey credentials for ordinary Sudomimus tokens. |
| Token helpers | Parse and verify Sudomimus access and refresh JWTs. |

## Choose A Language

<CardGrid>
<LinkCard
    title="TypeScript / JavaScript"
    description="@sudomimus/connect, session, device, native, and token packages for Node.js and browser-capable runtimes."
    href="/en-us/sdk/typescript/"
/>
<LinkCard
    title="C#"
    description="Sudomimus.Connect, Session, Native, and Token packages for .NET applications."
    href="/en-us/sdk/csharp/"
/>
<LinkCard
    title="Java"
    description="JDK 17 modules under com.sudomimus, starting with the token verifier."
    href="/en-us/sdk/java/"
/>
</CardGrid>

## Package Model

Each SDK package follows one Sudomimus API surface. Install the package for the flow you start with, then add the Session package for refresh-token lifecycle work after tokens are issued.

- **Connect** is the usual web-application login flow. It needs your application's client-auth private key because `/establish` requires client-auth signing.
- **Device** is for public clients such as CLIs, launchers, TV apps, and terminals. It does not require a client secret.
- **Native** is for native credentials such as Steam Web API auth tickets and Sudomimus AccessKeys.
- **Session** is for everything that happens after initial issue: refresh, introspection, logout, and revoke-all.
- **Token** is for services that only verify access or refresh tokens and do not call an API.

The API walkthroughs still explain the underlying protocol:

<CardGrid>
<LinkCard title="Connect integration" href="/en-us/connect/flow/" description="Browser login, status polling, callback, and redeem." />
<LinkCard title="Device authorization" href="/en-us/device/flow/" description="Device-code login for public clients." />
<LinkCard title="Native integration" href="/en-us/native/overview/" description="Steam ticket and AccessKey direct-issue." />
<LinkCard title="Managing sessions" href="/en-us/guides/managing-sessions/" description="Refresh, introspection, logout, and revoke-all." />
</CardGrid>

## Source

<CardGrid>
<LinkCard
    title="SDK monorepo"
    description="Source, README files, issues, and release tags for every official SDK package."
    href="https://github.com/sudomimus/sudomimus"
/>
<LinkCard
    title="OpenAPI contracts"
    description="The authoritative public schemas the SDKs generate from."
    href="https://github.com/sudomimus/sudomimus-spec"
/>
</CardGrid>