Download OpenAPI specification:Download
This service provides access to high-resolution aerial imagery through a tile server. It offers both historical and latest mosaic tiles. Users can query surveys by geographic area (using WKT), time ranges, and coverage parameters. The service supports standard XYZ tile coordinates, multiple image formats (PNG, JPEG), and includes capabilities for retrieving survey metadata, coverage information, and mosaic updates. The API enables dynamic tile serving, making it suitable for web mapping applications and geospatial analysis. All endpoints support standard HTTP responses and include proper error handling for authentication, authorization, and resource availability.
| z required | integer Zoom level of the tile |
| x required | integer X coordinate of the tile |
| y required | integer Y coordinate of the tile |
| ext required | string Default: "png" File extension of the tile (e.g., png, jpeg) |
| survey | string Default: "NSL_BASEMAP_v7" Survey name for the tile |
| z required | integer Zoom level of the tile |
| x required | integer X coordinate of the tile |
| y required | integer Y coordinate of the tile |
| ext required | string Default: "png" File extension of the tile (e.g., png, jpeg) |
| survey | string Default: "NSL_BASEMAP_v7" Survey name for the tile |
You can retrieve a JSON-formatted list of all available surveys through our survey endpoint:
[- [
- {
- "capture_date_end": "2023-08-29 15:07:24 UTC",
- "capture_date_start": "2023-06-25 16:11:50 UTC",
- "footprint": "MULTIPOLYGON (((-82.33154296875 27.64460638194332, ...[truncated]",
- "id": "2023Q3-FL-TPA",
- "spectral_range": "visible"
}, - {
- "capture_date_end": "2023-04-10 19:58:30 UTC",
- "capture_date_start": "2023-04-10 13:49:17 UTC",
- "footprint": "MULTIPOLYGON (((-85.97900390625 39.23225314171489, ...[truncated]",
- "id": "2023Q2-IN-COL",
- "spectral_range": "visible"
}
]
]Search for available surveys by geographic area and capture date using the survey coverage endpoint. Metadata timestamps are returned as YYYY-MM-DD HH:MM:SS UTC.
| wkt required | string WKT string defining the area of interest. The area cannot exceed 696,000 square kilometers |
| observed_start | string <date> Start date for observations (YYYY-MM-DD) |
| observed_end | string <date> End date for observations (YYYY-MM-DD) |
[- [
- {
- "capture_date_end": "2023-04-10 19:58:30 UTC",
- "capture_date_start": "2023-04-10 13:49:17 UTC",
- "footprint": "POLYGON ((-85.97454071044922 39.0969620016489, -85.97514152526855 39.0969620016489, -85.97514152526855 39.09689539729267, -85.97702980041504 39.09689539729267, -85.97702980041504 39.09682879293644, -85.97900390625 39.09682879293644, -85.97908973693848 39.09682879293644, -85.97908973693848 39.096762188580215, -85.97943305969238 .... -85.98175048828125 39.10342262420297, -85.98175048828125 39.105820381027165, -85.98183631896973 39.105820381027165, -85.98183631896973 39.10595358973962 -85.85978507995605 39.31716755149665, -85.85995674133301 39.31716755149665, -85.85995674133301 39.31710114060946, -85.85892677307129 39.31710114060946))",
- "id": "2023Q2-IN-COL",
- "spectral_range": "visible"
}
]
]This endpoint returns a paginated list of surveys ordered by their most recent update timestamp. (ISO 8601 timestamps)
| page | string >= 1 Default: 1 The 1-based page index to retrieve. Each page contains the number of surveys specified by |
| page_size | string >= 1 Default: 25 Number of surveys to include per page (minimum of 1, defaults to 25) |
{- "has_next": false,
- "page": 1,
- "page_size": 25,
- "results": [
- {
- "capture_date_end": "2025-10-29T18:53:43.502357Z",
- "capture_date_start": "2025-10-25T18:01:11.705819Z",
- "id": "2025-P01-CO-DEN",
- "last_updated": "2025-12-02T17:32:02Z",
- "spectral_range": "visible"
}, - {
- "capture_date_end": "2025-10-19T19:16:25.778189Z",
- "capture_date_start": "2025-09-22T19:27:03.636264Z",
- "id": "2025-P1-MN-MSP",
- "last_updated": "2025-11-28T19:50:21Z",
- "spectral_range": "visible"
}, - {
- "capture_date_end": "2024-12-08T17:44:12.804971Z",
- "capture_date_start": "2024-12-04T16:24:55.440096Z",
- "id": "2024Q4-SC-CAE",
- "last_updated": "2025-11-09T00:12:22Z",
- "spectral_range": "visible"
}, - {
- "capture_date_end": "2024-11-01T18:43:25.875208Z",
- "capture_date_start": "2024-10-29T15:32:08.790178Z",
- "id": "2024Q4-FL-PTCH",
- "last_updated": "2025-11-08T23:29:27Z",
- "spectral_range": "visible"
}, - {
- "capture_date_end": "2024-11-08T19:44:40.628561Z",
- "capture_date_start": "2024-11-05T19:28:29.204699Z",
- "id": "2024Q4-CA-RVSD",
- "last_updated": "2025-11-08T23:24:51Z",
- "spectral_range": "visible"
}
], - "total_pages": 1,
- "total_results": 5
}| wkt required | string WKT string defining the area of interest |
| observed_start | string <date> Filter surveys with observations after this date (YYYY-MM-DD) |
| observed_end | string <date> Filter surveys with observations before this date (YYYY-MM-DD) |
[- {
- "capture_date_end": "2023-04-10T19:58:30Z",
- "capture_date_start": "2023-04-10T13:49:17Z",
- "footprint": "POLYGON ((-85.97454071044922 39.0969620016489, ... ))",
- "id": "2023Q2-IN-COL",
- "spectral_range": "visible"
}
]| mosaic_id required | string Unique identifier for the mosaic |
| zoom | integer Default: 14 Zoom level (default 14) |
| wkt required | string WKT string defining the area of interest |
| overlap | string Default: "intersects" Overlap type (intersects, contains, within) |
| tc | integer Tile coverage threshold |
[- [
- {
- "capture_date_end": "2024-11-01T18:21:26Z",
- "capture_date_start": "2024-11-01T18:17:51Z",
- "file_format": "png",
- "geospatial_extent": [
- -115.29052734375,
- 36.17335693522159,
- -115.2685546875,
- 36.191092021824524
], - "mosaic_stac_id": "20241101T181751_20241101T182126_20241101T193155_02301310020223",
- "percent_covered": null,
- "published_date": "2024-11-01T19:31:55Z",
- "spatial_resolution_class": "7.5cm",
- "spectral_range": "visible",
}, - {
- "capture_date_end": "2024-10-23T08:01:22Z",
- "capture_date_start": "2024-10-23T07:59:28Z",
- "file_format": "png",
- "geospatial_extent": [
- -115.29052734375,
- 36.17335693522159,
- -115.2685546875,
- 36.191092021824524
], - "mosaic_stac_id": "20241023T075928_20241023T080122_20241023T082549_02301310020223",
- "percent_covered": null,
- "published_date": "2024-10-23T08:25:49Z",
- "spatial_resolution_class": "7.5cm",
- "spectral_range": "visible",
}
]
]| mosaic_id required | string Unique identifier for the mosaic/survey |
{- "footprint": "POLYGON ((-115.29052734375 36.17335693522159, -115.2685546875 36.191092021824524, -115.2685546875 36.20824829635762, -115.29052734375 36.20824829635762, -115.29052734375 36.17335693522159))",
- "status": 200,
- "survey_id": "2024Q2-NV-LAS"
}| mosaic_id required | string Unique identifier for the mosaic |
| since | string <date-time> ISO 8601 timestamp indicating the start of the update window |
| until | string <date-time> ISO 8601 timestamp indicating the end of the update window |
| include_percent_covered | boolean Default: false Whether to include percent_covered in the response |
[- [
- {
- "capture_date_end": "2023-05-04T16:01:29Z",
- "capture_date_start": "2023-05-04T16:00:16Z",
- "file_format": "png",
- "geospatial_extent": [
- -82.353515625,
- 34.452218472826544,
- -82.33154296875,
- 34.47033512121749
], - "mosaic_stac_id": "20230504T160016_20230504T160129_20231016T101153_03200303231322",
- "percent_covered": 100,
- "published_date": "2023-10-16T10:11:53Z",
- "spatial_resolution_class": "10.0cm",
- "spectral_range": "visible",
}, - {
- "capture_date_end": "2023-05-04T15:37:04Z",
- "capture_date_start": "2023-05-04T15:35:30Z",
- "file_format": "png",
- "geospatial_extent": [
- -82.8369140625,
- 34.633207911379586,
- -82.81494140625,
- 34.65128519895414
], - "mosaic_stac_id": "20230504T153530_20230504T153704_20231016T101041_03200303202312",
- "percent_covered": 95,
- "published_date": "2023-10-16T10:10:41Z",
- "spatial_resolution_class": "10.0cm",
- "spectral_range": "visible",
}
]
]| mosaic_id required | string Unique identifier for the mosaic |
| mosaic_stac_id required | string STAC ID of the mosaic |
| z required | integer Zoom level of the tile |
| x required | integer X coordinate of the tile The following code sample demonstrates how to translate latitude/longitude to XYZ using the Mercantile python package
|
| y required | integer Y coordinate of the tile |
| ext required | string Default: "png" File extension of the tile (e.g., png, jpeg) |
| metadata | string If provided, returns metadata instead of the tile |
[- {
- "capture_date_end": "2024-11-01T18:21:26Z",
- "capture_date_start": "2024-11-01T18:17:51Z",
- "file_format": "png",
- "geospatial_extent": [
- -115.29052734375,
- 36.17335693522159,
- -115.2685546875,
- 36.191092021824524
], - "mosaic_stac_id": "20241101T181751_20241101T182126_20241101T193155_02301310020223",
- "percent_covered": 38,
- "published_date": "2024-11-01T19:31:55Z",
- "spatial_resolution_class": "7.5cm",
- "spectral_range": "visible",
}
]| mosaic_id required | string Unique identifier for the mosaic |
| mosaic_stac_id required | string STAC ID of the mosaic |
| z required | integer Zoom level of the tile |
| x required | integer X coordinate of the tile The following code sample demonstrates how to translate latitude/longitude to XYZ using the Mercantile python package
|
| y required | integer Y coordinate of the tile |
| ext required | string Default: "png" File extension of the tile (e.g., png, jpeg) |
| metadata | string If provided, returns metadata instead of the tile |
[- {
- "capture_date_end": "2024-11-01T18:21:26Z",
- "capture_date_start": "2024-11-01T18:17:51Z",
- "file_format": "png",
- "geospatial_extent": [
- -115.29052734375,
- 36.17335693522159,
- -115.2685546875,
- 36.191092021824524
], - "mosaic_stac_id": "20241101T181751_20241101T182126_20241101T193155_02301310020223",
- "percent_covered": 38,
- "published_date": "2024-11-01T19:31:55Z",
- "spatial_resolution_class": "7.5cm",
- "spectral_range": "visible",
}
]| mosaic_id required | string Unique identifier for the mosaic |
| z required | integer Zoom level |
| x required | integer Tile X coordinate |
| y required | integer Tile Y coordinate |
| ext required | string Image extension (png or jpg) |
| metadata | boolean When true, returns JSON metadata instead of the tile binary |
[- {
- "capture_date_end": "2022-08-28T18:10:21Z",
- "capture_date_start": "2022-01-29T18:06:15Z",
- "file_format": "png",
- "geospatial_extent": [
- -97.74124145507812,
- 30.274486436999457,
- -97.7398681640625,
- 30.27567243159789
], - "mosaic_stac_id": "20220129T1806_20220828T1805_20230413T0956_02313012033113",
- "percent_covered": 100,
- "published_date": "2023-04-13T09:54:52Z",
- "spatial_resolution_class": "10cm",
- "spectral_range": "visible",
}
]| mosaic_id required | string Unique identifier for the mosaic |
| z required | integer Zoom level |
| x required | integer Tile X coordinate |
| y required | integer Tile Y coordinate |
| ext required | string Image extension (png or jpg) |
| metadata | boolean When true, returns JSON metadata instead of the tile binary |
[- {
- "capture_date_end": "2022-08-28T18:10:21Z",
- "capture_date_start": "2022-01-29T18:06:15Z",
- "file_format": "png",
- "geospatial_extent": [
- -97.74124145507812,
- 30.274486436999457,
- -97.7398681640625,
- 30.27567243159789
], - "mosaic_stac_id": "20220129T1806_20220828T1805_20230413T0956_02313012033113",
- "percent_covered": 100,
- "published_date": "2023-04-13T09:54:52Z",
- "spatial_resolution_class": "10cm",
- "spectral_range": "visible",
}
]| mosaic_id required | string Unique identifier for the mosaic |
| zoom | integer Default: 14 Zoom level (default 14) |
| wkt required | string WKT string defining the area of interest |
| overlap | string Default: "intersects" Overlap type (intersects, contains, within) |
| tc | integer Tile coverage threshold |
[- [
- {
- "capture_date_end": "2024-11-01 18:21:26 UTC",
- "capture_date_start": "2024-11-01 18:17:51 UTC",
- "file_format": "png",
- "geospatial_extent": [
- -115.29052734375,
- 36.17335693522159,
- -115.2685546875,
- 36.191092021824524
], - "mosaic_stac_id": "20241101T181751_20241101T182126_20241101T193155_02301310020223",
- "percent_covered": null,
- "published_date": "2024-11-01 19:31:55 UTC",
- "spatial_resolution_class": "7.5cm",
- "spectral_range": "visible",
}, - {
- "capture_date_end": "2024-10-23 08:01:22 UTC",
- "capture_date_start": "2024-10-23 07:59:28 UTC",
- "file_format": "png",
- "geospatial_extent": [
- -115.29052734375,
- 36.17335693522159,
- -115.2685546875,
- 36.191092021824524
], - "mosaic_stac_id": "20241023T075928_20241023T080122_20241023T082549_02301310020223",
- "percent_covered": null,
- "published_date": "2024-10-23 08:25:49 UTC",
- "spatial_resolution_class": "7.5cm",
- "spectral_range": "visible",
}
]
]| mosaic_id required | string Unique identifier for the mosaic/survey |
{- "footprint": "POLYGON ((-115.29052734375 36.17335693522159, -115.2685546875 36.191092021824524, -115.2685546875 36.20824829635762, -115.29052734375 36.20824829635762, -115.29052734375 36.17335693522159))",
- "status": 200,
- "survey_id": "2024Q2-NV-LAS"
}| mosaic_id required | string Unique identifier for the mosaic |
| since | string <date-time> Start datetime for filtering updates (ISO 8601 format). Default behavior:
|
| until | string <date-time> End datetime for filtering updates (ISO 8601 format). Default behavior:
|
| include_percent_covered | boolean Default: false Flag to include percent covered in the response |
[- [
- {
- "capture_date_end": "2023-05-04 16:01:29 UTC",
- "capture_date_start": "2023-05-04 16:00:16 UTC",
- "file_format": "png",
- "geospatial_extent": [
- -82.353515625,
- 34.452218472826544,
- -82.33154296875,
- 34.47033512121749
], - "mosaic_stac_id": "20230504T160016_20230504T160129_20231016T101153_03200303231322",
- "percent_covered": 100,
- "published_date": "2023-10-16 10:11:53 UTC",
- "spatial_resolution_class": "10.0cm",
- "spectral_range": "visible",
}, - {
- "capture_date_end": "2023-05-04 15:37:04 UTC",
- "capture_date_start": "2023-05-04 15:35:30 UTC",
- "file_format": "png",
- "geospatial_extent": [
- -82.8369140625,
- 34.633207911379586,
- -82.81494140625,
- 34.65128519895414
], - "mosaic_stac_id": "20230504T153530_20230504T153704_20231016T101041_03200303202312",
- "percent_covered": 95,
- "published_date": "2023-10-16 10:10:41 UTC",
- "spatial_resolution_class": "10.0cm",
- "spectral_range": "visible",
}
]
]| mosaic_id required | string Unique identifier for the mosaic |
| mosaic_stac_id required | string STAC ID of the mosaic |
| z required | integer Zoom level of the tile |
| x required | integer X coordinate of the tile The following code sample demonstrates how to translate latitude/longitude to XYZ using the Mercantile python package
|
| y required | integer Y coordinate of the tile |
| ext required | string Default: "png" File extension of the tile (e.g., png, jpeg) |
| metadata | string If provided, returns metadata instead of the tile |
| cache | boolean Default: false Cache flag to control tile caching behavior |
[- {
- "capture_date_end": "2024-11-01 18:21:26 UTC",
- "capture_date_start": "2024-11-01 18:17:51 UTC",
- "file_format": "png",
- "geospatial_extent": [
- -115.29052734375,
- 36.17335693522159,
- -115.2685546875,
- 36.191092021824524
], - "mosaic_stac_id": "20241101T181751_20241101T182126_20241101T193155_02301310020223",
- "percent_covered": 38,
- "published_date": "2024-11-01 19:31:55 UTC",
- "spatial_resolution_class": "7.5cm",
- "spectral_range": "visible",
}
]| mosaic_id required | string Unique identifier for the mosaic |
| mosaic_stac_id required | string STAC ID of the mosaic |
| z required | integer Zoom level of the tile |
| x required | integer X coordinate of the tile The following code sample demonstrates how to translate latitude/longitude to XYZ using the Mercantile python package
|
| y required | integer Y coordinate of the tile |
| ext required | string Default: "png" File extension of the tile (e.g., png, jpeg) |
| metadata | string If provided, returns metadata instead of the tile |
| cache | boolean Default: false Cache flag to control tile caching behavior |
[- {
- "capture_date_end": "2024-11-01 18:21:26 UTC",
- "capture_date_start": "2024-11-01 18:17:51 UTC",
- "file_format": "png",
- "geospatial_extent": [
- -115.29052734375,
- 36.17335693522159,
- -115.2685546875,
- 36.191092021824524
], - "mosaic_stac_id": "20241101T181751_20241101T182126_20241101T193155_02301310020223",
- "percent_covered": 38,
- "published_date": "2024-11-01 19:31:55 UTC",
- "spatial_resolution_class": "7.5cm",
- "spectral_range": "visible",
}
]| z required | integer Zoom level of the tile |
| x required | integer X coordinate of the tile The following code sample demonstrates how to translate latitude/longitude to XYZ using the Mercantile python package
|
| y required | integer Y coordinate of the tile |
| ext required | string Default: "png" File extension of the tile (e.g., png, jpeg) |
| survey | string Default: "NSL_BASEMAP_v7" Survey name for the tile |
[- {
- "capture_date_end": "2022-08-28 18:10:21 UTC",
- "capture_date_start": "2022-01-29 18:06:15 UTC",
- "file_format": "png",
- "geospatial_extent": [
- -97.74124145507812,
- 30.274486436999457,
- -97.7398681640625,
- 30.27567243159789
], - "mosaic_stac_id": "20220129T1806_20220828T1805_20230413T0956_02313012033113",
- "percent_covered": 100,
- "published_date": "2023-04-13 09:54:52 UTC",
- "spatial_resolution_class": "10cm",
- "spectral_range": "visible",
}
]| z required | integer Zoom level of the tile |
| x required | integer X coordinate of the tile The following code sample demonstrates how to translate latitude/longitude to XYZ using the Mercantile python package
|
| y required | integer Y coordinate of the tile |
| ext required | string Default: "png" File extension of the tile (e.g., png, jpeg) |
| survey | string Default: "NSL_BASEMAP_v7" Survey name for the tile |
[- {
- "capture_date_end": "2022-08-28 18:10:21 UTC",
- "capture_date_start": "2022-01-29 18:06:15 UTC",
- "file_format": "png",
- "geospatial_extent": [
- -97.74124145507812,
- 30.274486436999457,
- -97.7398681640625,
- 30.27567243159789
], - "mosaic_stac_id": "20220129T1806_20220828T1805_20230413T0956_02313012033113",
- "percent_covered": 100,
- "published_date": "2023-04-13 09:54:52 UTC",
- "spatial_resolution_class": "10cm",
- "spectral_range": "visible",
}
]