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

# Analytics and sync

> Analytics and sync: Set Aside Money developer API reference.

Aggregates the app already computes, plus control over refreshing bank data.

## Net worth

> **GET** `/v1/analytics/net-worth` · Required scope: `data.read`

Assets, liabilities, and the resulting total, in cents.

```bash theme={null}
curl https://api.setaside.money/v1/analytics/net-worth \
  -H "Authorization: Bearer $SETASIDE_API_KEY"
```

## Spending

> **GET** `/v1/analytics/spending` · Required scope: `data.read`

| Parameter | Type | Notes |
| - | - | - |
| `from` | date | Inclusive, `YYYY-MM-DD`. |
| `to` | date | Inclusive, `YYYY-MM-DD`. |
| `group_by` | string | `category`, `merchant`, or `month`. |

```bash theme={null}
curl "https://api.setaside.money/v1/analytics/spending?from=2026-01-01&to=2026-06-30&group_by=month" \
  -H "Authorization: Bearer $SETASIDE_API_KEY"
```

Computing this server-side is much cheaper than paging every transaction and aggregating locally,
and it will agree with what the app shows.

## Settings

> **GET** `/v1/settings` · Required scope: `data.read`

Account settings, including the timezone that governs which calendar day a transaction falls on.
Worth reading if your integration does anything date-sensitive.

## Sync status

> **GET** `/v1/sync/status` · Required scope: `data.read`

When each connection last synced and when it is next due. Check this before assuming data is
current.

## Trigger a sync

> **POST** `/v1/sync` · Required scope: `data.write`

Asks connected providers for new transactions.

```bash theme={null}
curl -X POST https://api.setaside.money/v1/sync \
  -H "Authorization: Bearer $SETASIDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

Optionally restrict it with `{"provider": "plaid"}` or `{"provider": "simplefin"}`.

You probably do not need this. Syncs already run on a schedule, and providers enforce their own
quotas, which are far tighter than our rate limits: exhausting one returns a 429 with
`provider_quota_exhausted` and delays your scheduled syncs too. Check `GET /v1/sync/status` to see
whether the data is already fresh before reaching for this.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.