> ## Documentation Index
> Fetch the complete documentation index at: https://sjd333-organization.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Welcome to Monzoh - A Python library for the Monzo Developer API

## What is Monzoh?

Monzoh is a Python library that makes it easy to work with the [Monzo Developer API](https://docs.monzo.com/). It enables developers to build applications that interact with their Monzo bank account.

<CardGroup cols={2}>
  <Card title="Type-Safe" icon="shield-check" href="/guides/type-safety">
    Built with Pydantic models for complete type safety and validation
  </Card>

  <Card title="Full API Coverage" icon="list-check" href="/api-reference/introduction">
    Comprehensive coverage of all Monzo API endpoints and features
  </Card>

  <Card title="OAuth2 Authentication" icon="key" href="/authentication">
    Simple OAuth2 flow with automatic token management
  </Card>

  <Card title="Error Handling" icon="triangle-exclamation" href="/guides/error-handling">
    Comprehensive error handling with custom exception types
  </Card>
</CardGroup>

## Features

* **Full Monzo API Coverage**: Access all Monzo API endpoints including accounts, transactions, pots, attachments, receipts, webhooks, and feed items
* **Type-Safe**: Built with Pydantic models for complete type safety and runtime validation
* **Simple OAuth2**: Easy-to-use OAuth2 authentication flow with automatic token management
* **Comprehensive Error Handling**: Custom exception types for different API error conditions
* **Mock Mode**: Built-in mock data for testing without API calls
* **Well-Tested**: Comprehensive test suite with high code coverage

## Quick Example

```python theme={null}
from monzoh import MonzoClient

# Initialize client with OAuth2 authentication
client = MonzoClient()

# List all accounts
accounts = client.accounts.list()
print(f"Found {len(accounts)} accounts")

# Get account balance
balance = client.accounts.get_balance(account_id=accounts[0].id)
print(f"Balance: {balance.balance / 100:.2f} {balance.currency}")

# List recent transactions
transactions = client.transactions.list(
    account_id=accounts[0].id,
    limit=10
)
for transaction in transactions:
    print(f"{transaction.description}: {transaction.amount / 100:.2f}")
```

## API Coverage

Monzoh provides comprehensive coverage of the Monzo API:

| Feature               | Status | Description                                      |
| --------------------- | ------ | ------------------------------------------------ |
| OAuth2 Authentication | ✅      | Complete OAuth2 flow with token management       |
| Accounts              | ✅      | List accounts and get balance information        |
| Transactions          | ✅      | List, retrieve, and annotate transactions        |
| Pots                  | ✅      | Manage savings pots and transfers                |
| Attachments           | ✅      | Upload and manage transaction attachments        |
| Receipts              | ✅      | Add detailed receipt information to transactions |
| Webhooks              | ✅      | Register and manage webhook endpoints            |
| Feed Items            | ✅      | Create custom feed items                         |

## Installation

Install Monzoh using your preferred package manager:

<CodeGroup>
  ```bash pip theme={null}
  pip install monzoh
  ```

  ```bash uv theme={null}
  uv add monzoh
  ```

  ```bash poetry theme={null}
  poetry add monzoh
  ```
</CodeGroup>

## Requirements

* Python 3.9 or higher
* A Monzo developer account and OAuth2 credentials
* Internet connection for API calls (unless using mock mode)

## Get Started

Ready to start building with Monzoh? Check out our [quickstart guide](/quickstart) to get up and running in minutes.
