---
title: "Create AOI Monitor"
method: POST
path: "/earthcache/aoi-monitors"
tags: ["aoiMonitors"]
---

# Create AOI Monitor

`POST /earthcache/aoi-monitors`

Creates a new AOI monitor for an AOI. The monitor will check for imagery that matches the specified criteria (sources, resolution, cloud cover, etc.).

## Request body

- AOIMonitorCreate — Request body for creating a new AOI monitor.
  - `name` string, required — Display name for the monitor.
  - `description` string — Optional description.
  - `location` AOIMonitorLocation, required — GeoJSON Polygon representing the area of interest.
    - `type` 'Polygon', required — Must be "Polygon".
    - `coordinates` array[], required — Array of linear rings. The first ring is the exterior boundary.
      - array[]
        - number[] — [longitude, latitude] or [longitude, latitude, elevation]
    - `bbox` number[] — Optional bounding box [minLon, minLat, maxLon, maxLat].
  - `run_mode` 'auto' | 'manual' — "auto" runs on a schedule; "manual" requires explicit triggering. Defaults to "manual".
  - `start_date` string, date, required — Start of the monitoring period (ISO 8601 date, e.g. "2024-01-01").
  - `end_date` string, date, required — End of the monitoring period (ISO 8601 date, e.g. "2024-12-31").
  - `max_cloud_cover` number — Maximum acceptable cloud cover percentage (0–100).
  - `min_aoi_coverage` number — Minimum required AOI coverage percentage (0–100).
  - `notify_users` string[] — User IDs to notify when new imagery is found. MUA accounts only.
  - `sources` string[] — Satellite data sources to monitor.
  - `min_resolution` number — Minimum resolution filter in meters per pixel.
  - `max_resolution` number — Maximum resolution filter in meters per pixel.
  - `project_id` string — Project ID to associate with this monitor. MUA accounts only.
  - `sensor_type` string[] — Sensor type filter.
  - `off_nadir_angle` number[] — [min, max] off-nadir angle range in degrees. The first value must be strictly less than the second.

## Response `201`

AOI monitor created successfully.

- AOIMonitor — An AOI monitor tracking satellite imagery over a geographic region.
  - `id` string, uuid, required — Unique monitor identifier.
  - `name` string, required — Display name for the monitor.
  - `description` string, nullable — Optional description.
  - `location` AOIMonitorLocation, required — GeoJSON Polygon representing the area of interest.
    - `type` 'Polygon', required — Must be "Polygon".
    - `coordinates` array[], required — Array of linear rings. The first ring is the exterior boundary.
      - array[]
        - number[] — [longitude, latitude] or [longitude, latitude, elevation]
    - `bbox` number[] — Optional bounding box [minLon, minLat, maxLon, maxLat].
  - `run_mode` 'auto' | 'manual', required — "auto" runs the monitor on a recurring schedule; "manual" requires explicit triggering.
  - `start_date` string, date, required — Start of the monitoring period (ISO 8601 date).
  - `end_date` string, date, required — End of the monitoring period (ISO 8601 date).
  - `last_run_time` string, date-time, nullable — Timestamp of the last monitor run.
  - `max_cloud_cover` number, nullable — Maximum acceptable cloud cover percentage (0–100).
  - `min_aoi_coverage` number, nullable — Minimum required AOI coverage percentage (0–100).
  - `notify_users` string[], nullable — User IDs to notify when new imagery is found. MUA accounts only.
  - `sources` string[], nullable — Satellite data sources to monitor.
  - `min_resolution` number, nullable — Minimum resolution filter in meters per pixel.
  - `max_resolution` number, nullable — Maximum resolution filter in meters per pixel.
  - `off_nadir_angle` number[], nullable — [min, max] off-nadir angle range in degrees. The first value must be less than the second.
  - `project_id` string, nullable — Associated project ID. MUA accounts only.
  - `org_id` string, nullable — Organization identifier.
  - `user_id` string, required — ID of the user who created the monitor.
  - `sensor_type` string[], nullable — Sensor type filter.
  - `origin` string, nullable — Origin identifier for the monitor.
  - `created_at` string, date-time, nullable — Creation timestamp (ISO 8601).
  - `updated_at` string, date-time, nullable — Last update timestamp (ISO 8601).

## Other responses

- `400` — Bad request – business logic validation failed (e.g. area exceeds 5000 sq km, invalid project_id).
- `401` — Unauthorized
- `422` — Unprocessable entity – schema validation failed.
- `500` — Internal server error.

---

[API](https://skmtc.net/skywatch/apis/api-specification.md) · [All operations](https://skmtc.net/skywatch/apis/api-specification/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/skywatch/api-specification/revisions/51f7c5a8d15d/schema)
