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

# Configuration

> SDK initialization and configuration options

## Basic Configuration

```typescript theme={null}
import { ComplianceSDK } from "@artu-ai/compliance-sdk";

const sdk = new ComplianceSDK({
  apiKey: process.env.ARTU_API_KEY!,
  environment: "test",
});
```

## Configuration Options

<ParamField body="apiKey" type="string">
  Your Artu API key. Falls back to the `ARTU_API_KEY` environment variable if not provided.
</ParamField>

<ParamField body="environment" type="'test' | 'live'" default="test">
  Environment to connect to. Falls back to `ARTU_ENVIRONMENT` env var.
</ParamField>

<ParamField body="scope" type="Scope">
  Optional. Scope the SDK to a specific scope and/or activity using a
  colon-separated string (e.g., `"MX"`, `"MX:AV:AVI"`, `"MX:CNBV:TRANSMISOR"`).
</ParamField>

<ParamField body="baseUrl" type="string">
  Optional. Custom API base URL. Falls back to `ARTU_BASE_URL` env var, then the default production URL.
</ParamField>

<ParamField body="timeout" type="number" default="30000">
  Request timeout in milliseconds.
</ParamField>

## Environments

The SDK supports two environments:

| Environment | Description            | Use Case                    |
| ----------- | ---------------------- | --------------------------- |
| `test`      | Sandbox environment    | Development, testing, demos |
| `live`      | Production environment | Real data, production use   |

```typescript theme={null}
// Test environment (default for development)
const testSDK = new ComplianceSDK({
  apiKey: process.env.ARTU_API_KEY!,
  environment: "test",
});

// Live environment
const liveSDK = new ComplianceSDK({
  apiKey: process.env.ARTU_API_KEY!,
  environment: "live",
});
```

<Info>
  API keys have scoped permissions that control which environments they can
  access. See [API Keys](/concepts/api-keys) for details.
</Info>

## Authentication

### API Key

Authenticate with your Artu API key for server-side scripts, backend services, and CI:

```typescript theme={null}
const sdk = new ComplianceSDK({
  apiKey: process.env.ARTU_API_KEY!,
  environment: "test",
});
```

## Environment Variables

The SDK auto-resolves these environment variables when options are not explicitly provided:

| Environment Variable | Option        | Description                |
| -------------------- | ------------- | -------------------------- |
| `ARTU_API_KEY`       | `apiKey`      | API key for authentication |
| `ARTU_ENVIRONMENT`   | `environment` | `"test"` or `"live"`       |
| `ARTU_BASE_URL`      | `baseUrl`     | Custom API URL             |

```typescript theme={null}
// These are equivalent when env vars are set:
const sdk = new ComplianceSDK({ environment: "test" });
// Uses ARTU_API_KEY, ARTU_BASE_URL automatically
```

## Scoped SDKs

Scope your SDK to a scope for simplified operations:

```typescript theme={null}
import { ComplianceSDK } from "@artu-ai/compliance-sdk";

// Mexico-scoped SDK
const mexSDK = new ComplianceSDK({
  apiKey: process.env.ARTU_API_KEY!,
  environment: "test",
  scope: "MX",
});

// Create a client - scope defaults to Mexico
const client = await mexSDK.clients.create({
  type: ClientType.Individual,
  name: "Juan García",
});
```

For Mexican vulnerable activities:

```typescript theme={null}
import { ComplianceSDK } from "@artu-ai/compliance-sdk";

// AVI (Virtual Assets) scoped SDK
const aviSDK = new ComplianceSDK({
  apiKey: process.env.ARTU_API_KEY!,
  environment: "test",
  scope: "MX:AV:AVI",
});
```

For CNBV money transmitters:

```typescript theme={null}
import { ComplianceSDK } from "@artu-ai/compliance-sdk";

// CNBV Transmisor scoped SDK
const transmisorSDK = new ComplianceSDK({
  apiKey: process.env.ARTU_API_KEY!,
  environment: "test",
  scope: "MX:CNBV:TRANSMISOR",
});
```

<Info>
  Learn more about scoping in the [SDK Scoping](/scopes/overview) concept
  guide.
</Info>

## Scope Properties

The SDK exposes properties to check the current configuration:

```typescript theme={null}
// Environment checks
sdk.environment; // "test" | "live"
sdk.isTest; // true if test environment
sdk.isLive; // true if live environment

// Scope checks
sdk.scope; // "MX:AV:AVI" | undefined
sdk.isScoped; // true if scope is set
```

## Multiple SDK Instances

You can create multiple SDK instances for different configurations:

```typescript theme={null}
// Test environment for development
const testSDK = new ComplianceSDK({
  apiKey: process.env.ARTU_API_KEY!,
  environment: "test",
});

// Live environment for production
const liveSDK = new ComplianceSDK({
  apiKey: process.env.ARTU_API_KEY!,
  environment: "live",
});

// Activity-specific SDK
const aviSDK = new ComplianceSDK({
  apiKey: process.env.ARTU_API_KEY!,
  environment: "test",
  scope: "MX:AV:AVI",
});
```

## Sub-Exports

Import scoped SDKs directly for better TypeScript types:

```typescript theme={null}
// Mexico SDK with proper types
import { ComplianceSDK } from "@artu-ai/compliance-sdk/mx";

// Actividad Vulnerable SDKs
import { ComplianceSDK } from "@artu-ai/compliance-sdk/mx/av/ari";
import { ComplianceSDK } from "@artu-ai/compliance-sdk/mx/av/avi";
import { ComplianceSDK } from "@artu-ai/compliance-sdk/mx/av/inm";
import { ComplianceSDK } from "@artu-ai/compliance-sdk/mx/av/jys";
import { ComplianceSDK } from "@artu-ai/compliance-sdk/mx/av/mjr";
import { ComplianceSDK } from "@artu-ai/compliance-sdk/mx/av/mpc";
import { ComplianceSDK } from "@artu-ai/compliance-sdk/mx/av/tsc";
import { ComplianceSDK } from "@artu-ai/compliance-sdk/mx/av/veh";

// CNBV SDKs
import { ComplianceSDK } from "@artu-ai/compliance-sdk/mx/cnbv/transmisor";
```
