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

# Getting Started

### Interchain SDK

Interchain SDK
The main Avalanche client SDK for interacting with Avalanche nodes and building blockchain applications.

Features:

* Type-safe ICM client for sending cross-chain messages
* Works seamlessly with wallet clients
* Built-in support for Avalanche C-Chain and custom subnets
* Built-in support for Avalanche C-Chain and custom subnets

The SDK is currently available in TypeScript, with more languages coming soon. If you are interested in a language that is not listed, please reach out to us in the [#dev-tools](https://discord.com/channels/578992315641626624/1280920394236297257) channel in the [Avalanche Discord](https://discord.gg/avax).

<CardGroup cols={1}>
  <Card title="Client SDK TypeScript" icon="npm">
    [https://www.npmjs.com/package/@avalanche-sdk/interchain](https://www.npmjs.com/package/@avalanche-sdk/interchain)
  </Card>
</CardGroup>

<CardGroup cols={1}>
  <Card title="Client SDK TypeScript" icon="github">
    [https://github.com/ava-labs/avalanche-sdk-typescript](https://github.com/ava-labs/avalanche-sdk-typescript)
  </Card>
</CardGroup>

### SDK Installation

<CodeGroup>
  ```npm NPM theme={null}
  npm add @avalanche-sdk/interchain
  ```

  ```pnpm PNPM theme={null}
  pnpm add @avalanche-sdk/interchain
  ```

  ```bun Bun theme={null}
  bun add @avalanche-sdk/interchain
  ```

  ```yarn Yarn theme={null}
  yarn add @avalanche-sdk/interchain zod

  # Note that Yarn does not install peer dependencies automatically. You will need

  # to install zod as shown above.

  ```
</CodeGroup>

### SDK Example Usage

```javascript theme={null}
import { createWalletClient, http } from "viem";
import { createICMClient } from "@avalanche-sdk/interchain";
import { privateKeyToAccount } from "viem/accounts";
import * as dotenv from 'dotenv';

// Load environment variables
dotenv.config();

// these will be made available in a separate SDK soon
import { avalancheFuji, dispatch } from "@avalanche-sdk/interchain/chains";

// Get private key from environment
const privateKey = process.env.PRIVATE_KEY;
if (!privateKey) {
  throw new Error("PRIVATE_KEY not found in environment variables");
}

// Load your signer/account
const account = privateKeyToAccount(privateKey as `0x${string}`);

// Create a viem wallet client connected to Avalanche Fuji
const wallet = createWalletClient({
  transport: http('https://api.avax-test.network/ext/bc/C/rpc'),
  account,
});

// Initialize the ICM client
const icmClient = createICMClient(wallet);

// Send a message across chains
async function main() {
  try {
    const hash = await icmClient.sendMsg({
      sourceChain: avalancheFuji,
      destinationChain: dispatch,
      message: 'Hello from Avalanche Fuji to Dispatch Fuji!',
    });
    console.log('Message sent with hash:', hash);
  } catch (error) {
    console.error('Error sending message:', error);
    process.exit(1);
  }
}

main();

```

Refer to the code samples provided for each route to see examples of how to use them in the SDK. Explore routes here [Data API](/data-api/health-check/get-the-health-of-the-service),
[Metrics API](/metrics-api/health-check/get-the-health-of-the-service) & [Webhooks API](/webhooks-api/webhooks/list-webhooks).
