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

# Introduction

> Middleware API that lets banks authenticate via API key and obtain transaction payloads for their own wallets; banks sign and submit transactions from their end.

# A+ API

<CardGroup cols={2}>
  <Card title="API Reference" icon="book" href="/api-reference">
    Browse all endpoints: mint, burn, and transfer.
  </Card>

  <Card title="Try the API" icon="square-terminal" href="/api-reference">
    Use the interactive playground to send requests (requires an API token).
  </Card>
</CardGroup>

## Mint, Burn, and Transfer flows

The API supports three flows: mint (fiat → token), burn (token → fiat), and transfer (token only). Note that the wallet provider will add the `nonce`, `from`, `gasPrice` and `gasLimit`.

### Mint route

1. Issuing bank determines they have sufficient funds (e.g. from an incoming wire) to mint USDA+ to a specified address
2. Bank calls our API to get the `mint()` payload (amount and recipient based on those funds, minus fees)
3. Bank calls their wallet provider to do the transaction using the `mint()` payload

### Burn route

1. Bank determines they have sufficient redemption capacity (e.g. from an outgoing wire for redemption) to burn USDA+
2. Bank calls our API for the `burn()` payload equal to the redemption amount less fees
3. Bank executes transaction from their wallet provider using the `burn()` payload

### Transfer route

1. Bank wants to transfer USDA+ on-chain to another on-chain address
2. Bank calls our API for the `transferFrom()` payload
3. Bank executes transaction with their wallet provider using the `transferFrom()` payload

Transfer is for the bank to manage its own balances, pay others in the stablecoin, or move funds between addresses they control.

## Authentication

All API requests require **Bearer token** authentication. Include your API token in the `Authorization` header:

```
Authorization: Bearer YOUR_API_TOKEN
```

Obtain an API token from your A+ integration contact.

## Base URLs

| Environment | Base URL                |
| ----------- | ----------------------- |
| **Local**   | `http://localhost:3000` |

Use the [API Reference](/api-reference) playground to send requests.

## Next steps

* Go to **API Reference** to see request/response schemas and try each endpoint.
* Use the **Try it** panel on any endpoint page to send live requests (with your API token).
