# Redeeming Stablecoins

ERC20 aTerra tokens (e.g. aUST) can be redeemed to ERC20 stablecoins using the below endpoints:

| Endpoint                                                                                                                          | Method | Description                                             |
| --------------------------------------------------------------------------------------------------------------------------------- | ------ | ------------------------------------------------------- |
| [`init_redeem_stable`](/anchor-2/developers-ethereum/ethanchor-api/redeeming-stablecoins.md#initiate-stablecoin-redemption)       | POST   | Initiates the redemption of ERC20 aTerra                |
| [`finish_redeem_stable`](/anchor-2/developers-ethereum/ethanchor-api/redeeming-stablecoins.md#finish-stablecoin-redemption)       | POST   | Claims redeemed ERC20 stablecoins                       |
| [`redeem_stable_status`](/anchor-2/developers-ethereum/ethanchor-api/redeeming-stablecoins.md#check-stablecoin-redemption-status) | GET    | Gets status of an ongoing stablecoin redemption request |

## Initiate stablecoin redemption

<mark style="color:green;">`POST`</mark> `https://eth-api.anchorprotocol.com/api/v1/init_redeem_stable`

`POST /api/v1/init_redeem_stable` allows you to fabricate an unsigned Ethereum Tx payload that initiates a stablecoin redemption request. The client can sign and broadcast the resulting Tx payload with their Ethereum account key, or use a custodian API that supports the signing of a raw Tx payload.\
\
Note that only **one** `init_redeem_stable` operation can take place at the same time; even if you successfully broadcast the resulting Tx to the network, the EthAnchor Account contract will block any subsequent operations until an ongoing stablecoin redemption is finished with `finish_redeem_stable`.

#### Headers

| Name           | Type   | Description        |
| -------------- | ------ | ------------------ |
| Authentication | string | Anchor client key. |

#### Request Body

| Name              | Type   | Description                                                                                                |
| ----------------- | ------ | ---------------------------------------------------------------------------------------------------------- |
| underlying\_denom | string | <p>Underlying stablecoin denomination of aTerra to redeem from Anchor.<br>Example: <code>"uusd"</code></p> |
| a\_terra\_amount  | string | (uint256) amount of aTerra to redeem from Anchor in 18 decimals. If empty, redeems all aTerra holdings.    |

{% tabs %}
{% tab title="200 init\_redeem\_stable unsigned Tx hash." %}

```
{
    "success": true,
    "tx_hash": "0x......",
    "action": "anchor/init_redeem_stable",
    "underlying_denom": "uusd", 
    "a_terra_amount": "500000000"
}
```

{% endtab %}

{% tab title="401 You are not authorized to call this endpoint; client not registered." %}

```
{
    "success": false,
    "error": "unauthorized; client not registered"
}
```

{% endtab %}
{% endtabs %}

## Finish stablecoin redemption

<mark style="color:green;">`POST`</mark> `https://eth-api.anchorprotocol.com/api/v1/finish_redeem_stable`

`POST /api/v1/finish_redeem_stable` allows you to finish a previously requested `redeem_stable` operation.\
\
This endpoint returns an unsigned Ethereum transaction payload. You can sign this transaction yourself and send to the network, or broadcast using any custodian API that supports signing a raw Tx payload.

#### Headers

| Name           | Type   | Description        |
| -------------- | ------ | ------------------ |
| Authentication | string | Anchor client key. |

{% tabs %}
{% tab title="200 finsish\_redeem\_stable unsigned Tx hash." %}

```
{
    "success": true,
    "tx_hash": "0x......",
    "action": "anchor/finish_redeem_stable"
}
```

{% endtab %}

{% tab title="401 You are not authorized to call this endpoint; client not registered." %}

```
{
    "success": false,
    "error": "unauthorized; client not registered"
}
```

{% endtab %}
{% endtabs %}

## Check stablecoin redemption status

<mark style="color:blue;">`GET`</mark> `https://eth-api.anchorprotocol.com/api/v1/redeem_stable_status`

`GET /api/v1/redeem_stable_status` allows you to check the status of an ongoing `redeem_stable` operation.\
\
You may want to periodically check the progress of your `redeem_stable` request, since an operation may take up to minutes to finish due to congestion on either side of the networks.\
\
Note that status being `"finished"` does **NOT** mean you have run a full cycle of `redeem_stable` operation; you still need to send another transaction from `POST /api/v1/finish_redeem_stable` to finalize your operation.This endpoint responds with HTTP 204 when there is no ongoing operation.

#### Headers

| Name           | Type   | Description               |
| -------------- | ------ | ------------------------- |
| Authentication | string | Anchor client access key. |

{% tabs %}
{% tab title="200 Current status of ongoing redeem\_stable operation." %}

```
{
    // Phase
    // 0 - (Ethereum) wrapper contract has received aTerra tokens (e.g. aUST) and 
    //     dispatched through Shuttle
    // 1 - (Terra) terra-side client account has received aTerra tokens
    //     triggering RedeemStable soon
    // 2 - (Terra) RedeemStable action is processed and stablecoins (e.g. UST) have
    //     been received
    // 3 - (Terra) stablecoins are sent to the ether-side wrapper contract
    //     through Shuttle
    // 4 - (Ethereum) contract has received stablecoins; operation finished
    "phase": 0,

    // LastUpdated
    // Unix timestamp at which the last update to this response has been made
    "last_updated": 1608662606,

    // Status
    // Operation status
    // pending   - operation in flight
    // failed    - operation failed; last known tx has been recorded
    // finished  - operation finished; you can call /finish_redeem_stable
    "status": "pending",

    // UnderlyingDenom
    // Underlying denomination of aTerra tokens to be redeemed
    "underlying_denom": "uusd", 

    // aTerraAmount
    // amount of aTerra tokens to be redeemed
    "a_terra_amount": :20000000:,

    // TxHash
    // List of known tx hashes and the corresponding network name
    "tx_hash": [
        {
            "network": "ethereum",
            "tx_hash": "0x...."
        },
        {
            "network": "terra",
            "tx_hash": "00ABCD..."
        },
        ...
    ]
}
```

{% endtab %}

{% tab title="204 No ongoing redeem\_stable operation." %}

```
{
    "status": "idle"
}
```

{% endtab %}
{% endtabs %}


---

# 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.anchorprotocol.com/anchor-2/developers-ethereum/ethanchor-api/redeeming-stablecoins.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.
