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

# SDKs

> Official TypeScript and Rust SDKs for the Shuriken API.

Official SDKs handle authentication, typed responses, WebSocket connection management, and automatic reconnection — so you can focus on your trading logic instead of protocol details.

<CardGroup cols={2}>
  <Card title="TypeScript SDK" icon="js" href="https://github.com/ShurikenTrade/shuriken-sdk-ts">
    REST + WebSocket client with typed events. Install via `npm install @shuriken/sdk-ts`.
  </Card>

  <Card title="Rust SDK" icon="rust" href="https://github.com/ShurikenTrade/shuriken-sdk-rs">
    Async REST + WebSocket with `futures::Stream` support. Add `shuriken-sdk` to your `Cargo.toml`.
  </Card>
</CardGroup>

## TypeScript

```bash theme={null}
npm install @shuriken/sdk-ts
```

```ts theme={null}
import { createShurikenClient } from '@shuriken/sdk-ts'

const client = createShurikenClient({
  apiKey: process.env.SHURIKEN_API_KEY!,
})

const me = await client.account.getMe()
console.log(me.userId, me.displayName)
```

## Rust

```toml theme={null}
[dependencies]
shuriken-sdk = "0.9"
tokio = { version = "1", features = ["full"] }
```

```rust theme={null}
use shuriken_sdk::ShurikenHttpClient;

#[tokio::main]
async fn main() {
    let api_key = std::env::var("SHURIKEN_API_KEY").expect("SHURIKEN_API_KEY not set");
    let client = ShurikenHttpClient::new(&api_key).unwrap();
    let me = client.account().get_me().await.unwrap();
    println!("{} {:?}", me.user_id, me.display_name);
}
```

<Tip>
  To enable real-time WebSocket streams in the Rust SDK, opt in to the `ws` feature: `shuriken-sdk = { version = "0.9", features = ["ws"] }`.
</Tip>

## Quickstart repos

Each SDK has a companion quickstart repo with 25+ runnable examples covering account lookups, token analytics, swaps, trigger orders, perp trading, WebSocket streams, and composite strategies (snipers, copy traders, hedgers).

<CardGroup cols={2}>
  <Card title="TypeScript Quickstart" icon="github" href="https://github.com/ShurikenTrade/shuriken-quickstart-ts">
    `shuriken-quickstart-ts` — examples runnable with `npx tsx`.
  </Card>

  <Card title="Rust Quickstart" icon="github" href="https://github.com/ShurikenTrade/shuriken-quickstart-rs">
    `shuriken-quickstart-rs` — examples runnable with `cargo run --example`.
  </Card>
</CardGroup>

### Running a TypeScript example

```bash theme={null}
git clone https://github.com/ShurikenTrade/shuriken-quickstart-ts.git
cd shuriken-quickstart-ts
npm install
cp .env.example .env       # add your SHURIKEN_API_KEY
npx tsx examples/01-account-info.ts
```

### Running a Rust example

```bash theme={null}
git clone https://github.com/ShurikenTrade/shuriken-quickstart-rs.git
cd shuriken-quickstart-rs
cp .env.example .env       # add your SHURIKEN_API_KEY
cargo run --example 01_account_info
```

<Note>
  Trading examples (`07`–`09`) default to a `DRY_RUN` mode in the Rust quickstart — set `DRY_RUN=false` in `.env` to send real transactions. The TypeScript versions execute against the live API by default, so review the script and check the amounts before running.
</Note>
