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

# initAmplifySDK

> Initialize the Amplify SDK with your API key before using any functions

All Amplify SDK functions require initialization before use. Call `initAmplifySDK()` once at application startup.

## Import

```ts theme={null}
import { initAmplifySDK } from "@paxoslabs/amplify-sdk";
```

## Usage

```ts theme={null}
await initAmplifySDK("pxl_your_api_key");
```

## Parameters

| Parameter | Type             | Required | Description                                     |
| --------- | ---------------- | -------- | ----------------------------------------------- |
| `apiKey`  | `string`         | Yes      | Your Paxos Labs API key (format: `pxl_...`)     |
| `options` | `SDKInitOptions` | No       | Configuration options for telemetry and logging |

### SDKInitOptions

```ts theme={null}
interface SDKInitOptions {
  /** Enable/disable PostHog telemetry (default: true) */
  telemetry?: boolean;

  /** Log level for SDK operations (default: LogLevel.ERROR) */
  logLevel?: LogLevel;

  /** Custom logger implementation */
  logger?: Logger;
}
```

| Option      | Type       | Default                 | Description                   |
| ----------- | ---------- | ----------------------- | ----------------------------- |
| `telemetry` | `boolean`  | `true`                  | Enable PostHog error tracking |
| `logLevel`  | `LogLevel` | `LogLevel.ERROR`        | Minimum log level to output   |
| `logger`    | `Logger`   | Built-in console logger | Custom logger implementation  |

## Return Type

```ts theme={null}
Promise<void>
```

## Examples

<Tabs>
  <Tab title="Basic">
    ```ts theme={null}
    import { initAmplifySDK } from "@paxoslabs/amplify-sdk";

    await initAmplifySDK("pxl_your_api_key");
    ```
  </Tab>

  <Tab title="With Options">
    ```ts theme={null}
    import { initAmplifySDK, LogLevel } from "@paxoslabs/amplify-sdk";

    await initAmplifySDK("pxl_your_api_key", {
      telemetry: false,
      logLevel: LogLevel.DEBUG,
    });
    ```
  </Tab>

  <Tab title="Custom Logger">
    ```ts theme={null}
    import { initAmplifySDK, LogLevel } from "@paxoslabs/amplify-sdk";

    await initAmplifySDK("pxl_your_api_key", {
      logLevel: LogLevel.DEBUG,
      logger: {
        debug: (msg, ctx) => console.debug(`[SDK] ${msg}`, ctx),
        info: (msg, ctx) => console.info(`[SDK] ${msg}`, ctx),
        warn: (msg, ctx) => console.warn(`[SDK] ${msg}`, ctx),
        error: (msg, ctx) => console.error(`[SDK] ${msg}`, ctx),
      },
    });
    ```
  </Tab>
</Tabs>

## Behavior

* **Validates API key** - Ensures key follows expected format (`pxl_...`)
* **Pre-populates cache** - Fetches vaults and assets during initialization
* **Configures telemetry** - Sets up PostHog if enabled
* **Configures logging** - Sets log level and optional custom logger
* **Idempotent** - Multiple calls with same key are no-ops
* **Re-initialization** - Different key clears cache and reconfigures

## Error Handling

```ts theme={null}
try {
  await initAmplifySDK("pxl_your_api_key");
} catch (error) {
  if (error.code === "INVALID_API_KEY") {
    console.error("Invalid API key format");
  }
}
```

| Error Code            | Description                        | Resolution                    |
| --------------------- | ---------------------------------- | ----------------------------- |
| `SDK_NOT_INITIALIZED` | SDK used before `initAmplifySDK()` | Call `initAmplifySDK()` first |
| `INVALID_API_KEY`     | API key validation failed          | Check API key format          |

## Related

* [Logging Guide](/v0.3.0/intro/products/earn/developers/guides/logging) - Configure logging levels
* [Project Setup](/v0.3.0/intro/products/earn/developers/guides/project-setup) - SDK initialization patterns
