Fetch
curl --request POST \
--url https://api.example.com/v1/fetch \
--header 'Content-Type: application/json' \
--data '
{
"fields": [
"<string>"
],
"lat": 123,
"lng": 123,
"address": "<string>"
}
'import requests
url = "https://api.example.com/v1/fetch"
payload = {
"fields": ["<string>"],
"lat": 123,
"lng": 123,
"address": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({fields: ['<string>'], lat: 123, lng: 123, address: '<string>'})
};
fetch('https://api.example.com/v1/fetch', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/fetch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'fields' => [
'<string>'
],
'lat' => 123,
'lng' => 123,
'address' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/fetch"
payload := strings.NewReader("{\n \"fields\": [\n \"<string>\"\n ],\n \"lat\": 123,\n \"lng\": 123,\n \"address\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/v1/fetch")
.header("Content-Type", "application/json")
.body("{\n \"fields\": [\n \"<string>\"\n ],\n \"lat\": 123,\n \"lng\": 123,\n \"address\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/fetch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"fields\": [\n \"<string>\"\n ],\n \"lat\": 123,\n \"lng\": 123,\n \"address\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Fetch
POST /v1/fetch
Deterministic per-field data fetch with full provenance.
POST
/
v1
/
fetch
Fetch
curl --request POST \
--url https://api.example.com/v1/fetch \
--header 'Content-Type: application/json' \
--data '
{
"fields": [
"<string>"
],
"lat": 123,
"lng": 123,
"address": "<string>"
}
'import requests
url = "https://api.example.com/v1/fetch"
payload = {
"fields": ["<string>"],
"lat": 123,
"lng": 123,
"address": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({fields: ['<string>'], lat: 123, lng: 123, address: '<string>'})
};
fetch('https://api.example.com/v1/fetch', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/fetch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'fields' => [
'<string>'
],
'lat' => 123,
'lng' => 123,
'address' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/fetch"
payload := strings.NewReader("{\n \"fields\": [\n \"<string>\"\n ],\n \"lat\": 123,\n \"lng\": 123,\n \"address\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/v1/fetch")
.header("Content-Type", "application/json")
.body("{\n \"fields\": [\n \"<string>\"\n ],\n \"lat\": 123,\n \"lng\": 123,\n \"address\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/fetch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"fields\": [\n \"<string>\"\n ],\n \"lat\": 123,\n \"lng\": 123,\n \"address\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Fetch is free on every plan, including batch and asynchronous runs. No wallet
balance or licensed-data terms grant is required. Authentication, request rate,
concurrency and source capacity limits still apply.
Free Fetch excludes parcel identity, ownership, boundaries, zoning and calculations
that depend on licensed parcel records. Explicit mixed public/parcel selections are
rejected; public presets intentionally include only eligible fields. Use
Enrich for public and premium parcel evidence together.
Sending both a coordinate and an address, or neither, is a
The response is identical to a coordinate request, plus a
To add fields beyond a preset’s bundle, send both:
A The honesty pattern:
Two recoverability hints (present on both the
When to use this
Use/v1/fetch when:
- The caller knows exactly which fields they need.
- The workflow is deterministic and you don’t want LLM latency or variability on every call.
- You are powering a downstream model that needs raw structured values rather than synthesized prose.
- You want a preset bundle (e.g., everything needed for flood underwriting) in one round trip.
/v1/ask instead when the question is phrased
in natural language and the right answer requires combining values with
interpretation.
Request shape
The body needs a location — eitherlat + lng or an address, never both
— plus at least one of fields or preset (both is allowed — preset expands
first, then fields unions in). The HTTP limit is 50 distinct explicit fields
outside the chosen preset; preset members are exempt.
| Field | Type | Required | Notes |
|---|---|---|---|
lat | number | one of | US coverage: [18, 72]; Western Aleutian requests must also be within [51, 54]. Requires lng. |
lng | number | one of | Primary envelope [-180, -65]; Western Aleutians additionally accept [172, 180). Requires lat. |
address | string | one of | US street address, 1–256 chars. Resolved server-side; see below. |
fields | array of strings | one of | Catalog field names. See /api-reference/field-catalog. |
preset | string enum | one of | One of the preset names (see below). |
422.
Fetching by address
curl -s https://api.mireye.com/v1/fetch \
-H "Authorization: Bearer $MIREYE_API_TOKEN" \
-H 'content-type: application/json' \
-d '{"address": "350 5th Ave, New York, NY 10118", "fields": ["elevation"]}' | jq
geocode block:
{
"lat": 40.748377,
"lng": -73.984854,
"fields": { "elevation": { "value": 13.15, "…": "…" } },
"partial_failures": [],
"geocode": {
"accuracy": 1.0,
"accuracy_type": "rooftop",
"match_type": "building_centroid",
"normalized_address": "350 5th Ave, New York, NY 10118",
"provider": "commercial",
"source": "City of New York",
"parcel_grade": true,
"precision_note": null
},
"resolved_location": {"lat": 40.748377, "lng": -73.984854, "source": "address"}
}
resolved_location is on every response — coordinate requests too, where
source is "coordinate" and no geocode block exists. It states, on one
uniform key across all endpoints, which point the response actually answered
about: a wrong-place answer is only catchable if the place is stated.
Check parcel_grade before trusting parcel-specific fields. false means
the coordinate was estimated along a street centerline rather than matched to a
building — up to ~2,872 m out in rural areas, which is far enough to describe a
neighbouring property. precision_note carries that warning in prose, and
normalized_address is what the provider actually matched, so compare it
against what your user typed.
Budget an extra 5.5 s. An address request resolves the geocode before the
fan-out starts, and that resolution is worst-case 3 s (primary) + 2.5 s
(fallback) on top of the normal fetch time. A cached address adds effectively
nothing. If your client timeout is tight, geocode once via
/v1/geocode and reuse the coordinate.
Address failures use the same codes as
/v1/geocode — address_not_found,
address_too_coarse, geocode_timeout, and friends — one table across
/v1/geocode, /v1/fetch and /v1/ask.
Presets
Presets are use-case bundles. Pass"preset": "flood_risk" and you get
the floodplain-relevant fields without naming each one. The preset
expansions:
{
"terrain": [
"elevation",
"slope_degrees",
"aspect_cardinal",
"coast_distance_m",
"soil_drainage_class",
"bedrock_depth_cm"
],
"flood_risk": [
"elevation",
"coast_distance_m",
"within_floodplain_polygon",
"intersects_nhd_area",
"intersects_wetland",
"wetland_type",
"wetland_subtype",
"wetland_acres",
"nearest_wetland_distance_m",
"wetlands_within_100m_count",
"wetlands_within_500m_count",
"surface_water_permanence_pct",
"nearest_waterbody_name"
],
"wildfire_underwrite": [
"lcms_class",
"tree_canopy_pct",
"ndvi_current",
"ndvi_change_5y",
"slope_degrees",
"elevation",
"fire_hazard_severity_zone_class",
"fire_hazard_responsibility_area",
"nearest_fire_perimeter_distance_m",
"most_recent_burn_year"
],
"land_cover": [
"lcms_class",
"land_use_class",
"tree_canopy_pct",
"cdl_class",
"dominant_crop_5y"
],
"site_selection": [
"elevation",
"slope_degrees",
"annual_precipitation_normal_mm",
"lcms_class",
"within_floodplain_polygon",
"intersects_wetland",
"wetland_type",
"nearest_wetland_distance_m",
"wetlands_within_100m_count",
"nearest_major_road_distance_m",
"nearest_major_road_class",
"roads_within_500m_count",
"nearest_transmission_line_distance_m",
"nearest_transmission_line_voltage_kv",
"nearest_transmission_line_voltage_class",
"nearest_transmission_line_voltage_basis",
"max_transmission_line_voltage_kv_within_radius",
"max_transmission_line_voltage_class_within_radius",
"intersects_conservation_easement",
"intersects_protected_area",
"protected_area_gap_status",
"intersects_critical_habitat",
"critical_habitat_status",
"nearest_hospital_distance_m",
"nearest_fire_station_distance_m",
"nearest_school_distance_m",
"nearest_grocery_store_distance_m",
"nearest_lodging_distance_m",
"poi_count_1km",
"transmission_lines_within_radius_count",
"substations_within_radius_count",
"substations_radius_m",
"housing_units_within_1km",
"in_opportunity_zone",
"nearest_repowering_site_distance_m",
"nearest_urban_area_distance_m",
"within_sewer_service_area",
"sewer_service_area_provider",
"sewer_service_area_provenance",
"nearest_sewer_service_area_distance_m",
"within_water_service_area",
"water_system_name",
"nearest_water_service_area_distance_m",
"domestic_well_households_per_km2",
"domestic_well_household_density_class",
"water_service_area_provenance",
"nearest_wastewater_plant_distance_m",
"nearest_wastewater_plant_name",
"nearest_wastewater_plant_population_served",
"nearest_superfund_distance_m",
"superfund_sites_within_radius_count",
"nearest_brownfield_distance_m",
"brownfields_within_radius_count",
"nearest_rcra_tsd_distance_m",
"rcra_tsd_facilities_within_radius_count",
"nearest_ust_facility_distance_m",
"ust_facilities_within_1km_count",
"open_lust_sites_within_1km_count"
],
"building_lookup": [
"primary_building_overture_class",
"primary_building_height_m",
"primary_building_num_floors",
"primary_building_footprint_sqm"
],
"points_of_interest": [
"nearest_hospital_distance_m",
"nearest_hospital_name",
"nearest_fire_station_distance_m",
"nearest_fire_station_name",
"nearest_school_distance_m",
"nearest_school_name",
"nearest_grocery_store_distance_m",
"nearest_lodging_distance_m",
"nearest_restaurant_distance_m",
"nearest_restaurant_name",
"nearest_cafe_distance_m",
"nearest_cafe_name",
"nearest_bar_distance_m",
"nearest_bar_name",
"nearest_gas_station_distance_m",
"nearest_gas_station_name",
"nearest_pharmacy_distance_m",
"nearest_pharmacy_name",
"nearest_bank_distance_m",
"nearest_bank_name",
"nearest_shopping_center_distance_m",
"nearest_shopping_center_name",
"poi_count_1km"
],
"utilities": [
"nearest_osm_transmission_line_distance_m",
"nearest_osm_transmission_line_voltage_kv",
"nearest_osm_transmission_line_circuits",
"nearest_osm_transmission_line_operator",
"nearest_osm_transmission_line_lifecycle",
"nearest_osm_substation_distance_m",
"nearest_osm_substation_name",
"nearest_osm_substation_max_voltage_kv",
"nearest_osm_substation_operator",
"nearest_osm_substation_type",
"nearest_osm_transmission_transformer_distance_m",
"nearest_osm_transmission_transformer_primary_voltage_kv",
"nearest_osm_transmission_transformer_secondary_voltage_kv",
"nearest_osm_transmission_transformer_rating_mva",
"osm_grid_search_radius_m",
"nearest_power_plant_name",
"nearest_power_plant_distance_m",
"nearest_power_plant_primary_fuel",
"nearest_power_plant_capacity_mw",
"nearest_transmission_line_distance_m",
"nearest_transmission_line_voltage_kv",
"nearest_transmission_line_voltage_class",
"nearest_transmission_line_voltage_basis",
"nearest_transmission_line_status",
"nearest_transmission_line_owner",
"max_transmission_line_voltage_kv_within_radius",
"max_transmission_line_voltage_class_within_radius",
"transmission_lines_within_radius_count",
"nearest_gas_pipeline_distance_m",
"within_sewer_service_area",
"sewer_service_area_provider",
"sewer_service_area_provenance",
"nearest_sewer_service_area_distance_m",
"within_water_service_area",
"water_system_name",
"nearest_water_service_area_distance_m",
"domestic_well_households_per_km2",
"domestic_well_household_density_class",
"water_service_area_provenance",
"nearest_wastewater_plant_distance_m",
"nearest_wastewater_plant_name",
"nearest_wastewater_plant_population_served"
],
"boundaries": [
"political_region",
"political_county",
"political_locality",
"tract_geoid"
],
"solar_siting": [
"ghi_annual_kwh_m2_day",
"dni_annual_kwh_m2_day",
"pv_capacity_factor_pct",
"pv_specific_yield_kwh_per_kw",
"optimal_fixed_tilt_degrees",
"surface_albedo_annual",
"mean_annual_snow_cover_days",
"mean_annual_dry_bulb_temperature_degc",
"annual_precipitation_normal_mm",
"days_above_32c_annual_count",
"days_with_min_temp_below_0c_annual_avg",
"nearest_utility_solar_facility_distance_m",
"nearest_utility_solar_facility_capacity_mw",
"prime_farmland_classification",
"blm_solar_application_land_status",
"surface_management_agency",
"nearest_repowering_site_distance_m",
"slope_degrees",
"aspect_degrees",
"aspect_cardinal",
"is_cultivated",
"tree_canopy_pct",
"housing_units_within_1km",
"housing_units_density_per_km2",
"soil_hydrologic_group",
"soil_erodibility_k_factor",
"soil_available_water_capacity"
],
"wind_siting": [
"mean_wind_speed_100m_ms",
"mean_wind_speed_120m_ms",
"mean_wind_speed_160m_ms",
"wind_power_density_100m_wm2",
"prevailing_wind_direction_100m_cardinal",
"weibull_k_100m",
"wind_capacity_factor_pct",
"wind_least_cost_interconnect_distance_m",
"nearest_wind_turbine_distance_m",
"nearest_wind_turbine_hub_height_m",
"nearest_wind_turbine_total_height_m",
"nearest_wind_project_capacity_mw",
"special_use_airspace_type",
"golden_eagle_nest_density_index",
"prime_farmland_classification",
"surface_management_agency",
"nearest_repowering_site_distance_m",
"slope_degrees",
"elevation",
"nearest_airport_distance_m",
"bedrock_depth_cm",
"housing_units_within_1km",
"housing_units_density_per_km2",
"soil_restrictive_layer_depth_cm",
"soil_restrictive_layer_kind"
],
"storage_siting": [
"nearest_osm_transmission_line_distance_m",
"nearest_osm_transmission_line_voltage_kv",
"nearest_osm_transmission_line_circuits",
"nearest_osm_transmission_line_operator",
"nearest_osm_transmission_line_lifecycle",
"nearest_osm_substation_distance_m",
"nearest_osm_substation_name",
"nearest_osm_substation_max_voltage_kv",
"nearest_osm_substation_operator",
"nearest_osm_substation_type",
"nearest_osm_transmission_transformer_distance_m",
"nearest_osm_transmission_transformer_primary_voltage_kv",
"nearest_osm_transmission_transformer_secondary_voltage_kv",
"nearest_osm_transmission_transformer_rating_mva",
"osm_grid_search_radius_m",
"nearest_substation_distance_m",
"nearest_substation_max_voltage_kv",
"nearest_substation_status",
"electric_utility_service_territory",
"electric_utility_ownership_type",
"avg_retail_electricity_price_industrial_usd_per_kwh",
"egrid_co2_output_rate_kg_per_mwh",
"interconnection_queue_active_capacity_county_mw",
"wind_least_cost_interconnect_distance_m",
"nearest_proposed_generator_distance_m",
"nearest_proposed_generator_capacity_mw",
"nearest_proposed_generator_status",
"nearest_proposed_generator_technology",
"nearest_utility_solar_facility_distance_m",
"surface_management_agency",
"prime_farmland_classification",
"nearest_transmission_line_distance_m",
"nearest_power_plant_distance_m",
"slope_degrees",
"soil_hydrologic_group"
],
"data_center_siting": [
"nearest_osm_transmission_line_distance_m",
"nearest_osm_transmission_line_voltage_kv",
"nearest_osm_transmission_line_circuits",
"nearest_osm_transmission_line_operator",
"nearest_osm_transmission_line_lifecycle",
"nearest_osm_substation_distance_m",
"nearest_osm_substation_max_voltage_kv",
"nearest_osm_substation_operator",
"nearest_osm_substation_type",
"nearest_osm_transmission_transformer_distance_m",
"nearest_osm_transmission_transformer_primary_voltage_kv",
"nearest_osm_transmission_transformer_secondary_voltage_kv",
"nearest_osm_transmission_transformer_rating_mva",
"osm_grid_search_radius_m",
"nearest_substation_distance_m",
"nearest_substation_max_voltage_kv",
"nearest_substation_status",
"nearest_power_plant_operator",
"nearest_power_plant_technology",
"nearest_power_plant_sector",
"electric_utility_service_territory",
"electric_utility_ownership_type",
"avg_retail_electricity_price_industrial_usd_per_kwh",
"egrid_subregion",
"egrid_co2_output_rate_kg_per_mwh",
"interconnection_queue_active_capacity_county_mw",
"design_wet_bulb_temperature_0_4pct_degc",
"mean_annual_dry_bulb_temperature_degc",
"annual_precipitation_normal_mm",
"mean_annual_relative_humidity_pct",
"days_above_32c_annual_count",
"days_with_min_temp_below_0c_annual_avg",
"surface_water_supply_use_index_huc12",
"public_water_system_population_served",
"huc12_thermoelectric_consumptive_use_m3_per_day",
"nearest_groundwater_well_depth_to_water_m",
"nearest_usgs_gage_daily_discharge_cfs",
"fiber_provider_count",
"fiber_broadband_available",
"mobile_5g_coverage_class",
"nearest_submarine_cable_distance_m",
"nearest_submarine_cable_name",
"nearest_long_haul_rail_corridor_distance_m",
"nearest_rail_line_distance_m",
"nearest_urban_area_distance_m",
"soil_shrink_swell_class",
"surface_management_agency",
"nearest_gas_pipeline_distance_m",
"nearest_interstate_gas_pipeline_distance_m",
"surface_water_permanence_pct",
"nearest_dam_distance_m",
"nearest_dam_hazard_potential",
"high_hazard_dams_within_10km",
"nearest_hazardous_facility_distance_m",
"nearest_hazardous_facility_name",
"housing_units_within_1km",
"housing_units_density_per_km2",
"natural_gas_citygate_price_usd_per_mcf",
"natural_gas_industrial_price_usd_per_mcf",
"grid_price_usd_per_mwh",
"modeled_onsite_gas_generation_cost_usd_per_mwh",
"in_shale_play",
"nearest_shale_play_name",
"sedimentary_basin_name",
"nearest_gas_compressor_distance_m",
"nearest_gas_storage_distance_m",
"nearest_lng_terminal_distance_m",
"drought_category",
"in_opportunity_zone",
"opportunity_zone_tract_geoid",
"in_air_quality_nonattainment",
"air_quality_nonattainment_pollutants",
"in_air_quality_maintenance",
"air_quality_maintenance_pollutants",
"air_quality_worst_classification",
"air_district_name",
"nearest_brownfield_distance_m",
"brownfields_within_radius_count",
"nearest_superfund_distance_m",
"superfund_sites_within_radius_count",
"nearest_rcra_tsd_distance_m",
"rcra_tsd_facilities_within_radius_count",
"nearest_ust_facility_distance_m",
"ust_facilities_within_1km_count",
"open_lust_sites_within_1km_count",
"nearest_documented_orphaned_well_distance_m",
"documented_orphaned_wells_within_1km_count",
"nearest_class_i_area_distance_m",
"nearest_class_i_area_name",
"nearest_class_i_area_agency",
"slope_degrees",
"transmission_lines_within_radius_count",
"substations_within_radius_count",
"substations_radius_m",
"nearest_repowering_site_distance_m",
"within_floodplain_polygon",
"fema_flood_zone",
"soil_hydrologic_group",
"soil_restrictive_layer_depth_cm",
"soil_restrictive_layer_kind",
"soil_erodibility_k_factor",
"within_sewer_service_area",
"sewer_service_area_provider",
"sewer_service_area_provenance",
"nearest_sewer_service_area_distance_m",
"within_water_service_area",
"water_system_name",
"nearest_water_service_area_distance_m",
"domestic_well_households_per_km2",
"domestic_well_household_density_class",
"water_service_area_provenance",
"nearest_wastewater_plant_distance_m",
"nearest_wastewater_plant_name",
"nearest_wastewater_plant_population_served"
],
"grid_interconnect": [
"nearest_osm_transmission_line_distance_m",
"nearest_osm_transmission_line_voltage_kv",
"nearest_osm_transmission_line_circuits",
"nearest_osm_transmission_line_operator",
"nearest_osm_transmission_line_lifecycle",
"nearest_osm_substation_distance_m",
"nearest_osm_substation_name",
"nearest_osm_substation_max_voltage_kv",
"nearest_osm_substation_operator",
"nearest_osm_substation_type",
"nearest_osm_transmission_transformer_distance_m",
"nearest_osm_transmission_transformer_primary_voltage_kv",
"nearest_osm_transmission_transformer_secondary_voltage_kv",
"nearest_osm_transmission_transformer_rating_mva",
"osm_grid_search_radius_m",
"nearest_substation_distance_m",
"nearest_substation_max_voltage_kv",
"nearest_substation_status",
"electric_utility_service_territory",
"electric_utility_ownership_type",
"iso_rto",
"interconnection_queue_active_capacity_county_mw",
"wind_least_cost_interconnect_distance_m",
"nearest_proposed_generator_distance_m",
"nearest_proposed_generator_capacity_mw",
"nearest_proposed_generator_status",
"nearest_proposed_generator_technology",
"egrid_subregion",
"nearest_transmission_line_distance_m",
"nearest_power_plant_distance_m",
"nearest_power_plant_capacity_mw",
"nearest_power_plant_operator",
"nearest_power_plant_technology",
"nearest_power_plant_sector",
"transmission_lines_within_radius_count",
"substations_within_radius_count",
"substations_radius_m"
],
"natural_hazard": [
"seismic_pga_2pct_50yr_g",
"seismic_design_category",
"design_wind_speed_mph",
"wildfire_annual_frequency",
"tornado_annual_frequency",
"hail_annual_frequency",
"lightning_annual_flash_days",
"landslide_susceptibility_index",
"soil_shrink_swell_class",
"within_floodplain_polygon",
"slope_degrees",
"nearest_dam_distance_m",
"nearest_dam_hazard_potential",
"high_hazard_dams_within_10km",
"in_karst_area",
"karst_type",
"karst_exposure_class",
"fire_hazard_severity_zone_class",
"fire_hazard_responsibility_area",
"nearest_fire_perimeter_distance_m",
"most_recent_burn_year"
]
}
{
"lat": 29.7604,
"lng": -95.3698,
"preset": "flood_risk",
"fields": ["soil_drainage_class"]
}
Example 1: flat fields list in Manhattan
curl -s https://api.mireye.com/v1/fetch \
-H "Authorization: Bearer $MIREYE_API_TOKEN" \
-H 'content-type: application/json' \
-d '{
"lat": 40.7128,
"lng": -74.0060,
"fields": ["elevation", "coast_distance_m"]
}' | jq
{
"lat": 40.7128,
"lng": -74.006,
"fetched_at": "2026-06-12T07:27:35.840477+00:00",
"fields": {
"elevation": {
"value": 13.150006294,
"unit": "meters",
"source": "USGS_EPQS",
"source_url": "https://epqs.nationalmap.gov/v1/json?x=-74.006&y=40.7128&wkid=4326&units=Meters",
"confidence": "high",
"fetched_at": "2026-06-12T07:27:35.826959+00:00",
"dataset_vintage": "3DEP dynamic service",
"ttl_seconds": 31536000,
"notes": null
},
"coast_distance_m": {
"value": 764.2256402243065,
"unit": "meters",
"source": "NOAA_CUSP",
"source_url": "https://shoreline.noaa.gov/data/datasheets/cusp.html",
"confidence": "high",
"fetched_at": "2026-06-12T07:27:35.839783+00:00",
"dataset_vintage": null,
"ttl_seconds": 31536000,
"notes": null
}
},
"partial_failures": []
}
Example 2: preset on a coastal coordinate
Houston, downtown — flood-relevant features in the same call:curl -s https://api.mireye.com/v1/fetch \
-H "Authorization: Bearer $MIREYE_API_TOKEN" \
-H 'content-type: application/json' \
-d '{
"lat": 29.7604,
"lng": -95.3698,
"preset": "flood_risk"
}' | jq
{
"lat": 29.7604,
"lng": -95.3698,
"fetched_at": "2026-06-12T07:27:55.451492+00:00",
"fields": {
"elevation": {
"value": 14.376572609,
"unit": "meters",
"source": "USGS_EPQS",
"source_url": "https://epqs.nationalmap.gov/v1/json?x=-95.3698&y=29.7604&wkid=4326&units=Meters",
"confidence": "high",
"fetched_at": "2026-06-12T07:27:52.656898+00:00",
"dataset_vintage": "3DEP dynamic service",
"ttl_seconds": 31536000,
"notes": null
},
"coast_distance_m": {
"value": 2014.0760126281036,
"unit": "meters",
"source": "NOAA_CUSP",
"source_url": "https://shoreline.noaa.gov/data/datasheets/cusp.html",
"confidence": "high",
"fetched_at": "2026-06-12T07:27:51.795394+00:00",
"dataset_vintage": null,
"ttl_seconds": 31536000,
"notes": null
},
"within_floodplain_polygon": {
"value": false,
"unit": null,
"source": "FEMA_NFHL",
"source_url": "https://hazards.fema.gov/arcgis/rest/services/public/NFHL/MapServer/28/query?f=json&geometry=-95.3698%2C29.7604&geometryType=esriGeometryPoint&inSR=4326&spatialRel=esriSpatialRelIntersects&outFields=FLD_ZONE%2CZONE_SUBTY%2CSFHA_TF%2CFLD_AR_ID%2CDFIRM_ID%2CSOURCE_CIT&returnGeometry=false&resultRecordCount=5",
"confidence": "high",
"fetched_at": "2026-06-12T07:27:52.259816+00:00",
"dataset_vintage": "48201C_STUDY1",
"ttl_seconds": 86400,
"notes": "FEMA NFHL Flood Hazard Zones intersect, but not an SFHA: Zone X; AREA OF MINIMAL FLOOD HAZARD; SFHA_TF=F; FLD_AR_ID=48201C_9742; SOURCE_CIT=48201C_STUDY1."
},
"intersects_wetland": {
"value": false,
"unit": null,
"source": "USFWS_NWI",
"source_url": "https://fwspublicservices.wim.usgs.gov/wetlandsmapservice/rest/services/Wetlands/MapServer/0/query?f=json&geometry=-95.3698%2C29.7604&geometryType=esriGeometryPoint&inSR=4326&spatialRel=esriSpatialRelIntersects&distance=500&units=esriSRUnit_Meter&outFields=%2A&returnGeometry=true&outSR=4326",
"confidence": "high",
"fetched_at": "2026-06-12T07:27:52.654612+00:00",
"dataset_vintage": null,
"ttl_seconds": 31536000,
"notes": null
},
"wetland_type": {
"value": "Riverine Lower Perennial Unconsolidated Bottom Permanently Flooded",
"unit": null,
"source": "USFWS_NWI",
"source_url": "https://fwspublicservices.wim.usgs.gov/wetlandsmapservice/rest/services/Wetlands/MapServer/0/query?f=json&geometry=-95.3698%2C29.7604&geometryType=esriGeometryPoint&inSR=4326&spatialRel=esriSpatialRelIntersects&distance=500&units=esriSRUnit_Meter&outFields=%2A&returnGeometry=true&outSR=4326",
"confidence": "high",
"fetched_at": "2026-06-12T07:27:52.654652+00:00",
"dataset_vintage": null,
"ttl_seconds": 31536000,
"notes": null
},
"wetlands_within_500m_count": {
"value": 2,
"unit": null,
"source": "USFWS_NWI",
"source_url": "https://fwspublicservices.wim.usgs.gov/wetlandsmapservice/rest/services/Wetlands/MapServer/0/query?f=json&geometry=-95.3698%2C29.7604&geometryType=esriGeometryPoint&inSR=4326&spatialRel=esriSpatialRelIntersects&distance=500&units=esriSRUnit_Meter&outFields=%2A&returnGeometry=true&outSR=4326",
"confidence": "high",
"fetched_at": "2026-06-12T07:27:52.654684+00:00",
"dataset_vintage": null,
"ttl_seconds": 31536000,
"notes": null
}
/* …7 more flood_risk fields (wetland subtype/acres/distance/counts, NHD,
surface-water permanence) — run the call to see all 13 */
},
"partial_failures": []
}
Per-field response shape
Each value infields is a self-contained record:
| Field | Type | Notes |
|---|---|---|
value | varies | The actual value. Type matches the catalog type (float/int/bool/string). |
unit | string or null | SI unit. null for enums, booleans, strings. |
source | string | Short source name. Runtime provenance can be more specific than the catalog default (e.g. elevation normally reports USGS_EPQS, or USGS_3DEP_COG when the EPQS service was slow/unavailable and the static-DEM fallback answered — with a notes explanation; slope reports USGS_3DEP_COG). |
source_url | string | URL where the value can be re-fetched/verified. |
confidence | high/medium/low/unknown | Per-field confidence bucket. |
fetched_at | ISO 8601 string | When this value was retrieved from source. |
dataset_vintage | string or null | Upstream dataset vintage/release (e.g., a CDL year), when the source reports one. |
ttl_seconds | integer | Recommended cache lifetime — see the TTL table. |
notes | string or null | Source-specific caveats (e.g., “NDVI from cloudy scene; mean over 4-week window”). |
status | ok/absent/failed | Tri-state marker: ok = a real value present; absent = valid no-data (the source answered “nothing here”); failed = the fetch errored. |
failed entry additionally carries error (string) and retryable (bool);
its value is null. Read status to tell a real value from no-data from a
failure without parsing notes.
The honesty pattern: status + partial_failures
/v1/fetch always returns 200 unless the request itself is malformed. A field
that failed to fetch is surfaced two ways, so it can never be silently
dropped or misread as “not requested”:
- In
fields, with"status": "failed","value": null, and theerror+retryablehints inline — so every requested field is present infields, distinguished by itsstatus. - In
partial_failures, a flat list of just the failures (kept for back-compat).
{
"lat": 46.6, "lng": -93.7,
"fields": {
// … the requested fields that succeeded (status "ok") or had valid
// no-data (status "absent") …
"ndvi_current": {
"value": null,
"status": "failed",
"source": "COPERNICUS_S2_SR_HARMONIZED",
"error": "TimeoutError: Earth Engine compute exceeded 30s",
"retryable": true
// … plus the standard unit / source_url / ttl_seconds / notes keys …
}
},
"partial_failures": [
{
"field": "ndvi_current",
"source": "COPERNICUS_S2_SR_HARMONIZED",
"error": "TimeoutError: Earth Engine compute exceeded 30s",
"retryable": true
}
]
}
fields entry and the
partial_failures record):
retryable: true— transient and worth a retry with backoff: a timeout / connection reset, or a public-source compute budget that resets later.retryable: false— retrying won’t help: the upstream returned a structured error (a missing plan entitlement, an unsupported request).
fields with a status (ok / absent / failed). Read
status (or cross-check partial_failures) rather than assuming presence in
fields means success — a failed field is present too.
Never cache a
failed field. The HTTP status is 200, so a cache keyed on
“request succeeded” will freeze a transient upstream timeout as a permanent
answer. Cache ok and absent entries for up to their ttl_seconds; re-fetch
failed entries (with backoff when retryable: true).Missing and failed fields
Fetch has no usage charge.absent means valid no-data; failed means the source
could not complete. Preserve that distinction when interpreting a result.
Shared caching with Enrich and Search
Cacheable point-based fields use the same source cache as Enrich and Search. A successful source result can serve later requests through any of these endpoints, even when they select different fields from that source. Reuse follows the analysis coordinate, or a shared grid cell where supported. Each source keeps its own expiration policy; failed source results are retried. To reuse Enrich’s point values, pass its returnedanalysis_point.lat and analysis_point.lng to Fetch.
This reuse applies only to Fetch’s public fields. Parcel ownership, boundaries
and parcel-dependent calculations remain unavailable through Fetch, including
wetland and conservation-easement overlaps. Use Enrich
or Search’s optional enrichment for licensed parcel output. A cached source
result does not expand an endpoint’s field permissions. Fetch remains free;
source-cache reuse does not change Enrich or Search prices.
Limits
- 50 additional explicit fields maximum per HTTP request. Preset members
are exempt, and duplicates count once; the expanded result can exceed 50.
Exceeding the explicit-field limit returns
400 fields_too_many. The MCP tool’s explicitfieldsarray separately accepts at most 50 entries; usepresetto request a published bundle. - Batching: one location per request here; up to 25 locations in one
call via
POST /v1/fetch/batch, which returns index-aligned results in this endpoint’s exact response shape. - No caching headers on
/v1/fetch. The shared source cache uses local disk and a shared Redis tier in production. The response’sttl_secondshint is for the caller’s own cache layer.
Body
application/json
Available options:
terrain, flood_risk, wildfire_underwrite, land_cover, site_selection, building_lookup, points_of_interest, utilities, boundaries, solar_siting, wind_siting, storage_siting, data_center_siting, grid_interconnect, natural_hazard Required string length:
1 - 256Response
Successful Response