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

# Creating accounts

> Create and execute an account proposal with the SDK.

## What is an account?

Accounts are on-chain wallets managed by your organization. They hold assets and
are the source for transactions. Accounts are created through proposals that
admins approve and execute.

## 1) Set up the client

Create the SDK client used to submit account proposals.

```typescript theme={null}
import { DenClient } from "@onchainden/mls-sdk-ts";

const client = new DenClient({
  apiKey: process.env.DEN_API_KEY!,
  baseUrl: process.env.DEN_API_BASE_URL!,
});
```

## 2) Create an account proposal

Define the account details and submit the proposal.

```typescript theme={null}
const { data: proposal } = await client.proposeAccountCreation({
  items: [
    {
      name: "Treasury",
      networkIds: [1, 137],
    },
  ],
});
```

## 3) Sign and execute the proposal

Collect the required approvals and execute the proposal.

```typescript theme={null}
await client.signAccountProposal(proposal.id, {
  type: "approve",
  signature: "0x...",
});

const { data: executed } = await client.executeAccountProposal(proposal.id, {
  type: "approve",
});
```

## 4) Get the account

Fetch the created account once the proposal is executed.

```typescript theme={null}
const { data: account } = await client.getAccount("acc_123");
```

## Full example

```typescript theme={null}
import { DenClient } from "@onchainden/mls-sdk-ts";

// 1) Set up the client.
const client = new DenClient({
  apiKey: process.env.DEN_API_KEY!,
  baseUrl: process.env.DEN_API_BASE_URL!,
});

// 2) Create an account proposal.
const { data: proposal } = await client.proposeAccountCreation({
  items: [
    {
      name: "Treasury",
      networkIds: [1, 137],
    },
  ],
});

// 3) Sign and execute the proposal.
await client.signAccountProposal(proposal.id, {
  type: "approve",
  signature: "0x...",
});

const { data: executed } = await client.executeAccountProposal(proposal.id, {
  type: "approve",
});

// 4) Get the account.
const { data: account } = await client.getAccount("acc_123");
```
