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": {}
}
]
}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, and the combined list is capped at 50).
| 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": "geocodio",
"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",
"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",
"parcel_id",
"parcel_zoning",
"parcel_area_m2",
"parcel_geometry_wkt",
"parcel_boundary_geojson",
"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",
"wetland_acres_on_parcel",
"transmission_redundancy_flag",
"grading_difficulty_class",
"residential_context_class_1km",
"developable_acres_proxy",
"tax_incentive_stack",
"near_epa_repowering_site",
"onsite_solar_potential_mwac_low",
"onsite_solar_potential_mwac_high",
"nearest_urban_area_distance_m",
"nearest_urban_area_rtt_floor_ms",
"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",
"days_above_32c_annual_count",
"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",
"grading_difficulty_class",
"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",
"grading_difficulty_class",
"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",
"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_utility_solar_facility_distance_m",
"surface_management_agency",
"prime_farmland_classification",
"nearest_transmission_line_distance_m",
"nearest_power_plant_distance_m",
"slope_degrees",
"grading_difficulty_class",
"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",
"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",
"mean_annual_relative_humidity_pct",
"days_above_32c_annual_count",
"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",
"air_quality_ozone_status",
"air_quality_ozone_classification",
"air_quality_pm25_status",
"air_quality_pm25_classification",
"air_quality_pm10_status",
"air_quality_pm10_classification",
"air_quality_co_status",
"air_quality_co_classification",
"air_quality_so2_status",
"air_quality_so2_classification",
"air_quality_no2_status",
"air_quality_no2_classification",
"air_quality_lead_status",
"air_quality_lead_classification",
"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",
"estimated_annual_power_cost_usd_per_mw",
"transmission_redundancy_flag",
"grading_difficulty_class",
"residential_context_class_1km",
"btm_gas_candidacy_flag",
"tax_incentive_stack",
"near_epa_repowering_site",
"free_cooling_hours_per_year_15c",
"free_cooling_hours_per_year_10c",
"nearest_urban_area_rtt_floor_ms",
"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",
"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",
"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",
"transmission_redundancy_flag"
],
"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 metered quota that resets later (e.g. a Regrid billing-period exhaustion).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).Failed fields are refunded
Fields that resolve withstatus: "failed" — an upstream outage on our side —
are automatically refunded: the per-field credit price of each failed field
is handed back after the response is assembled, and a parcel-record charge is
refunded when every parcel field in the selection failed. absent fields are
real answers (“the authoritative source has no data here”) and bill normally.
The refund is bookkeeping only — the response body is unchanged, and your
month-to-date usage on GET /v1/users/me/usage reflects it within seconds.
Limits
- 50 fields maximum per request (after preset expansion). Exceeding
this returns
400 fields_too_many. - 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. Each call hits the underlying layer orchestrators, which keep their own 24-hour response cache (local disk, plus a shared Redis tier in production). Thettl_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