diff --git a/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfServiceHazardCurves.java b/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfServiceHazardCurves.java
index fb78a99665f0bd5eeef9c2fdf01e44dba7dd35f0..4fd1f428aa0bd50ed81ba68aa26014425cae0805 100644
--- a/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfServiceHazardCurves.java
+++ b/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfServiceHazardCurves.java
@@ -23,7 +23,7 @@ import io.micronaut.http.HttpRequest;
  *
  * @author U.S. Geological Survey
  */
-public class NetcdfServiceHazardCurves extends NetcdfService {
+public class NetcdfServiceHazardCurves extends NetcdfService<HazardQuery> {
 
   static final String SERVICE_DESCRIPTION = "Get static hazard curves from a NetCDF file";
   static final String SERVICE_NAME = "Static Hazard Curves";
@@ -46,6 +46,17 @@ public class NetcdfServiceHazardCurves extends NetcdfService {
         .build();
   }
 
+  @Override
+  public Service getService(HazardQuery query) {
+    if (query.imt != null) {
+      return Service.CURVES_BY_IMT;
+    } else if (query.siteClass != null) {
+      return Service.CURVES_BY_SITE_CLASS;
+    } else {
+      return Service.CURVES;
+    }
+  }
+
   @Override
   String getServiceName() {
     return SERVICE_NAME;
@@ -114,7 +125,7 @@ public class NetcdfServiceHazardCurves extends NetcdfService {
   }
 
   @Override
-  ResponseBody<?, ?> processRequest(HttpRequest<?> httpRequest, Query query, Service service) {
+  ResponseBody<?, ?> processRequest(HttpRequest<?> httpRequest, HazardQuery query, Service service) {
     var site = Location.create(query.longitude, query.latitude);
     var url = httpRequest.getUri().toString();