# insights.map.export

Generate a private PNG of the permitted Insights Map filters and supplied viewport, with native map attribution. Return a short-lived private download URL; no accounting records change.

`GET | POST /api/v1/accounting/insights.map.export`

Permissions: `accounting:read` · Roles: admin, finance

MCP tool: `accounting_insights_map_export`

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `filters` | object | Yes | No other fields. |
| `filters.layers` | array of enum values |  | One of: `transactions`, `trips`, `stays`, `events`, `other`. 1–5 items. |
| `filters.query` | string |  | Text to search for. 1–120 characters. |
| `filters.from` | string |  | The first date to include, as YYYY-MM-DD. Date as YYYY-MM-DD. |
| `filters.to` | string |  | The last date to include, as YYYY-MM-DD. Date as YYYY-MM-DD. |
| `filters.currency` | string |  | Three-letter currency code, such as CAD or USD. |
| `filters.entryTypes` | array of enum values |  | One of: `expense`, `income`, `income_refund`, `refund`, `transfer`, `fee`, `suspense`. 1–7 items. |
| `filters.country` | string |  | 1–120 characters. |
| `filters.region` | string |  | 1–120 characters. |
| `filters.city` | string |  | 1–120 characters. |
| `filters.bounds` | object |  | No other fields. |
| `filters.bounds.south` | number | Yes | -90 to 90. |
| `filters.bounds.north` | number | Yes | -90 to 90. |
| `filters.bounds.west` | number | Yes | -180 to 180. |
| `filters.bounds.east` | number | Yes | -180 to 180. |
| `filters.zoom` | number |  | 0 to 22. |
| `filters.groupBy` | enum |  | One of: `auto`, `region`, `city`, `grid`. |
| `viewport` | object | Yes | No other fields. |
| `viewport.center` | object | Yes | No other fields. |
| `viewport.center.lat` | number | Yes | -90 to 90. |
| `viewport.center.lon` | number | Yes | -180 to 180. |
| `viewport.zoom` | number | Yes | 0 to 22. |
| `viewport.bounds` | object |  | No other fields. |
| `viewport.bounds.south` | number | Yes | -90 to 90. |
| `viewport.bounds.north` | number | Yes | -90 to 90. |
| `viewport.bounds.west` | number | Yes | -180 to 180. |
| `viewport.bounds.east` | number | Yes | -180 to 180. |
| `width` | 640 or 1280 |  | One of: `640`, `1280`. |
| `height` | 360 or 720 |  | One of: `360`, `720`. |

## Example request

```bash
curl https://app.getoatmilk.com/api/v1/accounting/insights.map.export \
  -H "Authorization: Bearer $OATMILK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "filters": {},
  "viewport": {
    "center": {
      "lat": 1,
      "lon": 1
    },
    "zoom": 1
  }
}'
```

Reference page: https://app.getoatmilk.com/docs/api/insights.map.export
