Skip to main content

Focused unofficial Monarch Money Python client.

Project description

monarch_api

Focused unofficial Monarch Money Python client.

The package stays close to recovered REST and GraphQL operations instead of adding a heavy abstraction layer. Public methods are organized by domain and generally map one endpoint or operation to one Python method.

Install

After publishing to PyPI:

pip install monarch-api

For local development:

pip install -e .[dev]

The installable CLI now lives in a separate sibling package/repo: monarch_api_cli.

Scope

Implemented domains:

  • auth: POST /auth/login/, token-backed sessions, /users/me/
  • household: household reads, members, preferences
  • accounts: page/filter reads, balances/snapshots, institution metadata/settings, refresh status/control
  • transactions: list, filter metadata, detail, create, update, delete
  • merchants: search, household merchants, recommendations, update
  • attachments: upload info, add, get, delete
  • retail_sync: settings, detail/list, create/start/complete/delete, match/unmatch, order/vendor updates
  • rules: list, preview, create, update, delete, ordering, delete-all
  • reports: cash-flow dashboard/aggregates and general report data
  • investments: accounts, dashboard card, portfolio, security history
  • planning: budget and joint-planning reads
  • goals: savings goals, balances, goal-linked accounts, dashboard card, legacy migration
  • recurring: streams, aggregates, upcoming items, paused-banner state
  • subscription: billing, invoices, plans, trial state, entitlements, referrals
  • settings: profile flags, dashboard/sidebar config, security, notifications, business entities, activity, deletion-date reads

Notes:

  • The client is sync-only.
  • Methods keep raw GraphQL-shaped inputs where that was the cleanest endpoint mapping.
  • The implemented surface is intentionally limited to operations backed by captured requests or recovered documents.

Example

from monarch_api import MonarchClient

client = MonarchClient()
client.auth.login(
    username="you@example.com",
    password="secret",
    totp="123456",
)

transactions = client.transactions.list(limit=10)
detail = client.transactions.get(transactions["results"][0]["id"])
accounts = client.accounts.page()
institution_settings = client.accounts.institution_settings()
institution_notices = client.accounts.active_institution_notices()
institution_detail = client.accounts.institution("75115054048600997")
account_filters = client.accounts.filters()
account_types = client.accounts.account_types()
latest_refresh = client.accounts.latest_force_refresh_operation()
snapshots = client.accounts.aggregate_snapshots(
    filters={"startDate": "2026-03-13", "useAdaptiveGranularity": True}
)
subscription = client.subscription.subscription()
referral_settings = client.subscription.referral_settings(
    statistics_start_date="2026-01-01T00:00:00.000-06:00",
    statistics_end_date="2026-12-31T23:59:59.999-06:00",
    v1_payout_method="v1_subscription_credit",
    v2_payout_method="v2_gift_card",
)
security = client.settings.security_settings()
business_entities = client.settings.business_entities()
budget = client.planning.budget_data(start_date="2026-04-01", end_date="2026-04-30")
goals = client.goals.savings_goals()
upcoming_recurring = client.recurring.dashboard_upcoming_items(
    start_date="2026-04-13",
    end_date="2026-04-30",
    include_liabilities=True,
    filters={"isCompleted": False},
)
investment_accounts = client.investments.accounts()
portfolio = client.investments.portfolio(
    portfolio_input={"startDate": "2026-03-13", "endDate": "2026-04-13"}
)
preferences = client.household.preferences()
rules = client.rules.list()
rule_preview = client.rules.preview(
    {
        "merchantNameCriteria": {
            "operator": "contains",
            "value": "Aldi",
        }
    }
)
report = client.reports.data(
    filters={"categoryType": "expense"},
    group_by=["category"],
    include_category=True,
)
unmatched_retail_syncs = client.retail_sync.list(
    filters={"status": "pending_matches"},
    limit=3,
)

Layout

  • src/monarch_api/: client code
  • tests/: mocked verification for request shapes and client behavior

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

monarch_api-0.1.0.tar.gz (37.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

monarch_api-0.1.0-py3-none-any.whl (41.7 kB view details)

Uploaded Python 3

File details

Details for the file monarch_api-0.1.0.tar.gz.

File metadata

  • Download URL: monarch_api-0.1.0.tar.gz
  • Upload date:
  • Size: 37.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for monarch_api-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8de28ae5c8c4d9c78c7a37d26fc361eed007bda45946e1f03db83ebb81566bcc
MD5 317b7a6795735dc914359ba3e24fe78d
BLAKE2b-256 13ad9515390b317262a1cc53cc8df82c59b181e29bd3680b374463e4bba715d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for monarch_api-0.1.0.tar.gz:

Publisher: publish-pypi.yml on erikrubstein/monarch-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file monarch_api-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: monarch_api-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 41.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for monarch_api-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fe9c1105206021d4a7004c74044c448c7dea9030ff3f6d4e09f70f560e974046
MD5 1a94aca1c151f858b82286f5196e28c0
BLAKE2b-256 8aeeec0e0cd21d20ac42df0d2adc8aa5e00287a56bc3fa89476f98f1ba056f9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for monarch_api-0.1.0-py3-none-any.whl:

Publisher: publish-pypi.yml on erikrubstein/monarch-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page