> ## Documentation Index
> Fetch the complete documentation index at: https://docs.snipp.gg/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK Overview

> Official API wrappers and integrations for Node.js, Python, Rust, and ShadowPlay.

Snipp provides official SDK packages so you can skip raw HTTP calls and focus on building. Each wrapper covers every API endpoint with idiomatic patterns for its language.

## Available SDKs

<CardGroup cols={2}>
  <Card title="Node.js" icon="js" href="/sdks/node">
    `@snipp-gg/snipp`. Zero dependencies, uses native `fetch`.

    [GitHub](https://github.com/snipp-gg/snipp-js)
  </Card>

  <Card title="Python" icon="python" href="/sdks/python">
    `snipp`. Built on `requests`.

    [GitHub](https://github.com/snipp-gg/snipp-py)
  </Card>

  <Card title="Rust" icon="rust" href="/sdks/rust">
    `snipp-rust`. Async, built on `reqwest`.

    [GitHub](https://github.com/snipp-gg/snipp-rust)
  </Card>

  <Card title="ShadowPlay" icon="gamepad" href="/sdks/shadowplay">
    `snipp-shadowplay`. Auto-upload NVIDIA ShadowPlay clips.

    [GitHub](https://github.com/snipp-gg/ShadowPlay)
  </Card>
</CardGroup>

## Installation

<Tabs>
  <Tab title="Node.js">
    ```bash theme={null}
    npm install @snipp-gg/snipp
    ```
  </Tab>

  <Tab title="Python">
    ```bash theme={null}
    pip install snipp
    ```
  </Tab>

  <Tab title="Rust">
    Add to your `Cargo.toml`:

    ```toml theme={null}
    [dependencies]
    snipp = "1"
    tokio = { version = "1", features = ["full"] }
    ```
  </Tab>
</Tabs>

## Quick Comparison

<CodeGroup>
  ```javascript Node.js theme={null}
  import { SnippClient } from "@snipp-gg/snipp";

  const snipp = new SnippClient({ apiKey: process.env.SNIPP_API_KEY });
  const me = await snipp.getUser("@me");
  console.log(me.user.username);
  ```

  ```python Python theme={null}
  from snipp import SnippClient

  client = SnippClient(api_key="YOUR_API_KEY")
  me = client.get_user("@me")
  print(me["user"]["username"])
  ```

  ```rust Rust theme={null}
  use snipp::SnippClient;

  #[tokio::main]
  async fn main() -> Result<(), Box<dyn std::error::Error>> {
      let client = SnippClient::new("YOUR_API_KEY");
      let me = client.get_user("@me", None).await?;
      println!("{}", me.user.username.unwrap_or_default());
      Ok(())
  }
  ```
</CodeGroup>
