# Mint and Redeem support

## Pre-read

Review the [Authentication Guide](https://docs.alluvial.finance/guides/supplemental_guides/authentication) for the Alluvial API.

## Onboarding wallets

### Create an Account object

First create an account object for each of your users.

**Request:**

{% tabs %}
{% tab title="cURL" %}

```shell
curl -X 'POST' \
  'https://api.staging.alluvial.finance/v0/platform/accounts' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer eyJhbGci…CVm5g' \
  -H 'Content-Type: application/json' \
  -d '{
  "key": "FO123"
}'
```

{% endtab %}
{% endtabs %}

**Response:**

```json
{
  "id": "da36a6fa-070d-4cd1-b99a-f2da4f4ccb20",
  "key": "FO123",
  "org_id": "org_WaYHN06ay6WoTjcz",
  "status": "ACTIVE",
  "created_at": "2023-03-17T17:24:18.031434748Z",
  "wallets": []
}
```

### Create Wallet objects

#### Add wallet to Allowlist

Attach a wallet object to each account. You can add the wallet to the Allowlist (on-chain) or the On-Platform list (off-chain).

The first example below shows how to add a wallet address to the Allowlist (which be default is added to the On-Platform list).

{% hint style="info" %}
Use the Alluvial account in UUID in the uri Path
{% endhint %}

**Request:**

{% tabs %}
{% tab title="cURL" %}

```shell
curl -X 'POST' \
  'https://api.staging.alluvial.finance/v0/platform/accounts/da36a6fa-070d-4cd1-b99a-f2da4f4ccb20/wallets' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer eyJhbGci…CVm5g' \
  -H 'Content-Type: application/json' \
  -d '{
  "address": "0x5210d328bC5651F92F4557EfDE08dd97A36A935c",
  "type": "ETH"
}'
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
The status of the Wallet object upon creation will be `NOT_READY`. This is because the wallet information will be sent to the Allowlist smart contract to update the Registry. Once the Registry contract is updated, the status will change to `ALLOWLISTED`.

Once the wallet address is added to the Allowlist it will also automatically be added to the On-Platform list.
{% endhint %}

**Response:**

```json
{
  "id": "a41c520e-fadd-4c0c-a1ce-d574ee731cee",
  "type": "ETH",
  "address": "0x5210d328bC5651F92F4557EfDE08dd97A36A935c",
  "account_id": "993327a3-1d48-4eff-a9ee-7ec769ec1f64",
  "status": "ALLOWLISTED",
  "allowlisted": true,
  "on_platform": true,
  "created_at": "2024-03-25T18:38:31.427654433Z"
}
```

#### Add wallet to On-Platform list

Platforms that enable mint/redeem may also need to add a wallet address to the On-Platform list separately. The following request is for a Platform that enables mint/redeem to add a wallet to the On-Platform list.

**Request:**

{% tabs %}
{% tab title="cURL" %}

```shell
curl -X 'POST' \
  'https://api.staging.alluvial.finance/v0/platform/accounts/da36a6fa-070d-4cd1-b99a-f2da4f4ccb20/wallets' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer eyJhbGci…CVm5g' \
  -H 'Content-Type: application/json' \
  -d '{
  "address": "0x5210d328bC5651F92F4557EfDE08dd97A36A935c",
  "type": "ETH",
  "allowlisted": "false"
}'
```

{% endtab %}
{% endtabs %}

**Request:**

```json
{
  "address": "0x5210d328bC5651F92F4557EfDE08dd97A36A935c",
  "created_at": "string",
  "id": "string",
  "status": "NOT_ALLOWLISTED",
  "type": "ETH",
  "on_platform": "true"
}
```

Now that you have an Account object created and Wallet objects associated, the user can stake ETH and mint LsETH. Before depositing, ensure that the Wallet object(s) have a status = `ALLOWLISTED`.

## Stake ETH

To complete the staking process, review [this guide](https://docs.alluvial.finance/guides/supplemental_guides/staking).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.alluvial.finance/guides/platform-mint_burn.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
