Download OpenAPI specification:
REST API for running water resources simulations (SWMM, EPANET, HEC-RAS) on demand.
All endpoints except /, /health, and /openapi.yaml require a Bearer token in the Authorization header:
Authorization: Bearer <token>
Visit https://aip.neer.ai/user/keys or https://aip.neer.ai/teams/
Returns basic information about the API, including documentation links and available endpoints
{- "name": "Water Resources Modeling API",
- "version": "1.0.0",
- "contact": {
- "name": "NEER",
- "email": "support@neer.ai"
}, - "endpoints": {
- "health": "/health",
- "simulations": "/simulations"
}
}Retrieves a list of simulations accessible to the authenticated user or team. Results can be filtered by simulation type.
| type | string (SimulationType) Enum: "swmm" "epanet" "hec_ras" Example: type=swmm Filter by simulation type |
[- {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "user_id": "usr-123",
- "team_id": "team-456",
- "project_id": "proj-789",
- "label": "Storm water analysis",
- "type": "swmm",
- "version": "5.2.4",
- "context": {
- "rainfall": 100,
- "duration": 24
}, - "status": "pending",
- "created_at": "2026-01-17T10:30:00Z",
- "started_at": "2026-01-17T10:31:00Z",
- "ended_at": "2026-01-17T10:35:00Z"
}
]Creates a new simulation and submits it for execution.
For HEC-RAS simulations, hec_ras_plan_number is supported, along with optional floodplain controls:
generate_floodplain_maps (boolean)depth_threshold (number, feet)Choose your content type based on your input method:
application/json - For remote files (HTTPS or S3 URIs)
input_file_uri fieldmultipart/form-data - For local file uploads
file fieldInput file methods:
https://example.com/models/stormwater.inps3://my-bucket/models/project.zip| type required | string (SimulationType) Enum: "swmm" "epanet" "hec_ras" Type of water resources simulation:
|
| label | string Human-readable label for the simulation |
| input_file_uri | string <uri> URI to the input file. Supported schemes:
If omitted and using multipart/form-data, a file can be uploaded directly. |
| hec_ras_plan_number | string HEC-RAS plan number to execute. Required when |
| generate_floodplain_maps | boolean Optional for |
| depth_threshold | number <double> >= 0 Optional for |
| preprocess | boolean Optional for |
| source_model_id | string or null <uuid> Optional. UUID of the HydraulicModel this simulation was launched from
(Console-initiated sims). Persisted on the simulation row so a model's
full simulation history can be retrieved by |
| source_layer_id | string or null <uuid> Optional. UUID of the specific child Layer of a HydraulicModel that
triggered this simulation, when run directly from a layer in the
Console object panel. Like |
| data_json_uri | string <uri> Optional. S3 URI of an editable non-spatial overlay ( |
{- "type": "swmm",
- "label": "Storm water analysis - HTTPS",
}{- "id": "550e8400-e29b-41d4-a716-446655440000",
- "user_id": "usr-123",
- "team_id": "team-456",
- "project_id": "proj-789",
- "label": "Storm water analysis",
- "type": "swmm",
- "version": "5.2.4",
- "context": {
- "rainfall": 100,
- "duration": 24
}, - "status": "pending",
- "created_at": "2026-01-17T10:30:00Z",
- "started_at": "2026-01-17T10:31:00Z",
- "ended_at": "2026-01-17T10:35:00Z"
}Retrieves detailed information about a specific simulation
| id required | string <uuid> Example: 550e8400-e29b-41d4-a716-446655440000 Simulation ID (UUID) |
{- "id": "550e8400-e29b-41d4-a716-446655440000",
- "user_id": "usr-123",
- "team_id": null,
- "project_id": "proj-456",
- "label": "Storm water analysis",
- "type": "swmm",
- "version": "5.2.4",
- "context": {
- "rainfall": 100,
- "duration": 24
}, - "status": "running",
- "created_at": "2026-01-17T10:30:00Z",
- "started_at": "2026-01-17T10:31:00Z",
- "ended_at": null
}Retrieves all files associated with a simulation, including input files, output files, reports, and other simulation artifacts.
| id required | string <uuid> Example: 550e8400-e29b-41d4-a716-446655440000 Simulation ID (UUID) |
[- {
- "id": "file-001",
- "simulation_id": "550e8400-e29b-41d4-a716-446655440000",
- "type": "input",
- "uri": "s3://my-bucket/swmm/550e8400-e29b-41d4-a716-446655440000/input.inp",
- "size": 45000,
- "created_at": "2026-01-17T10:30:00Z"
}, - {
- "id": "file-002",
- "simulation_id": "550e8400-e29b-41d4-a716-446655440000",
- "type": "output",
- "uri": "s3://my-bucket/swmm/550e8400-e29b-41d4-a716-446655440000/output.out",
- "size": 120000,
- "created_at": "2026-01-17T10:35:00Z"
}, - {
- "id": "file-003",
- "simulation_id": "550e8400-e29b-41d4-a716-446655440000",
- "type": "auxiliary",
- "auxiliary": "rainfall",
- "uri": "s3://my-bucket/swmm/550e8400-e29b-41d4-a716-446655440000/sta15314.dat",
- "size": 30000,
- "created_at": "2026-01-17T10:36:00Z"
}
]Downloads all files associated with a simulation as a single ZIP archive. Files that cannot be retrieved are silently skipped.
| id required | string <uuid> Example: 550e8400-e29b-41d4-a716-446655440000 Simulation ID (UUID) |
{- "error": "missing authorization header"
}Retrieves logs for a simulation with pagination and sorting support. By default, logs are ordered by timestamp in descending order (newest first).
| id required | string <uuid> Example: 550e8400-e29b-41d4-a716-446655440000 Simulation ID (UUID) |
| limit | integer [ 1 .. 500 ] Default: 50 Example: limit=25 Maximum number of logs to return (default 50, max 500) |
| offset | integer >= 0 Default: 0 Number of logs to skip for pagination (default 0) |
| sort | string Default: "desc" Enum: "asc" "desc" "ascending" "descending" Example: sort=desc Sort order by timestamp (default desc for newest first) |
{- "logs": [
- {
- "simulation_id": "550e8400-e29b-41d4-a716-446655440000",
- "timestamp": "2026-01-17T10:35:00Z",
- "message": "Simulation completed successfully"
}, - {
- "simulation_id": "550e8400-e29b-41d4-a716-446655440000",
- "timestamp": "2026-01-17T10:34:30Z",
- "message": "Running SWMM simulation"
}, - {
- "simulation_id": "550e8400-e29b-41d4-a716-446655440000",
- "timestamp": "2026-01-17T10:31:00Z",
- "message": "Simulation started"
}
], - "total": 15,
- "limit": 25,
- "offset": 0,
- "has_more": false
}Submits an async job to generate a water resources model (HEC-RAS, SWMM, or EPANET)
from geospatial data. Returns a job record with status: pending and a job ID
that can be used to poll for progress via GET /models/generate/{id}.
| software required | string (ModelSoftware) Enum: "hec_ras" "swmm" "epanet" "gis_tool" "report" Modeling software or tool type:
|
| project_name required | string Human-readable project name |
| build_type | string (BuildType) Enum: "brownfield" "greenfield"
|
| huc_id | string HUC watershed identifier for the study area |
object (BoundingBox) Geographic bounding box in WGS84 coordinates | |
| units | string Default: "US" Unit system ( |
| dem_resolution | integer Default: 10 DEM resolution in meters (default 10) |
| tool_name | string GIS tool function name (required when software = |
object Parameters for the GIS tool (required when software = | |
| user_dem_url | string <uri> URL to user-provided DEM raster (overrides default data source) |
| user_boundary_url | string <uri> URL to user-provided study area boundary (GeoJSON or shapefile) |
| user_streams_url | string <uri> URL to user-provided stream network layer |
| user_landcover_url | string <uri> URL to user-provided land cover raster |
| user_soils_url | string <uri> URL to user-provided soils data layer |
| user_roads_url | string <uri> URL to user-provided roads layer |
| user_parcels_url | string <uri> URL to user-provided parcels layer (greenfield builds) |
| user_buildings_url | string <uri> URL to user-provided buildings layer (greenfield builds) |
| sub_type | string (ModelSubType) Enum: "1d" "2d" "1d2d" HEC-RAS model dimensionality (required when
|
| design_storms | Array of strings Design storm return periods (HEC-RAS), e.g. |
| xs_spacing_ft | number <double> Cross-section spacing in feet (HEC-RAS 1D) |
| xs_half_width_ft | number <double> Cross-section half-width in feet (HEC-RAS 1D) |
| xs_sample_interval_ft | number <double> DEM sample interval along cross-sections in feet (HEC-RAS 1D) |
| xs_max_points | integer Maximum points per cross-section (HEC-RAS 1D) |
| cell_size_default_ft | number <double> Default 2D mesh cell size in feet (HEC-RAS 2D) |
| cell_size_channel_ft | number <double> Channel zone 2D mesh cell size in feet (HEC-RAS 2D) |
| cell_size_urban_ft | number <double> Urban zone 2D mesh cell size in feet (HEC-RAS 2D) |
| stream_source | string Source dataset for stream network (HEC-RAS) |
| road_breakline_mode | string How roads are used as breaklines in terrain (HEC-RAS) |
| storm_duration_hr | number <double> Storm duration in hours (HEC-RAS) |
| precip_distribution_type | string Precipitation distribution type (HEC-RAS) |
| user_breaklines_url | string <uri> URL to user-provided terrain breaklines (HEC-RAS) |
| user_cross_sections_url | string <uri> URL to user-provided cross-section geometry (HEC-RAS 1D) |
| user_structures_url | string <uri> URL to user-provided hydraulic structures (HEC-RAS) |
| user_mannings_url | string <uri> URL to user-provided Manning's n roughness polygons (HEC-RAS) |
| user_flow_data_url | string <uri> URL to user-provided flow data (HEC-RAS) |
| burn_culverts | boolean Burn culverts into the terrain DEM (HEC-RAS) |
| culvert_depth_ft | number <double> Culvert burn depth in feet (HEC-RAS) |
| user_culvert_lines_url | string <uri> URL to user-provided culvert centerlines (HEC-RAS) |
| auto_inflow_bc | boolean Automatically generate upstream inflow boundary conditions (HEC-RAS) |
| min_inflow_drainage_area_sqmi | number <double> Minimum drainage area (sq mi) for auto-inflow BC (HEC-RAS) |
| inflow_bc_line_width_ft | number <double> Width in feet of generated inflow BC lines (HEC-RAS) |
| user_inflow_csv_url | string <uri> URL to user-provided inflow hydrograph CSV (HEC-RAS) |
| user_bc_lines_url | string <uri> URL to user-provided boundary condition lines (HEC-RAS) |
| user_downstream_stage_url | string <uri> URL to user-provided downstream stage time series (HEC-RAS) |
| user_rating_curve_url | string <uri> URL to user-provided downstream rating curve (HEC-RAS) |
| downstream_bc | string Downstream boundary condition type, e.g. |
| downstream_slope | number <double> Downstream channel slope for normal depth BC (HEC-RAS) |
| downstream_stage_ft | number <double> Fixed downstream stage in feet (HEC-RAS) |
| rainfall_source | string Source for rainfall data (SWMM) |
| design_storm_type | string Design storm type (SWMM) |
| storm_duration_hrs | number <double> Default: 24 Storm duration in hours (SWMM), defaults to 24 |
| storm_return_years | Array of integers Return period years for design storms (SWMM) |
| subcatchment_method | string Default: "auto" Subcatchment delineation method (SWMM), defaults to |
| user_junctions_url | string <uri> URL to user-provided junction nodes (SWMM brownfield) |
| user_outfalls_url | string <uri> URL to user-provided outfall nodes (SWMM brownfield) |
| user_storage_url | string <uri> URL to user-provided storage units (SWMM brownfield) |
| user_conduits_url | string <uri> URL to user-provided conduit links (SWMM brownfield) |
| user_pumps_url | string <uri> URL to user-provided pump links (SWMM brownfield) |
| user_weirs_url | string <uri> URL to user-provided weir links (SWMM brownfield) |
| user_orifices_url | string <uri> URL to user-provided orifice links (SWMM brownfield) |
| user_subcatchments_url | string <uri> URL to user-provided subcatchment polygons (SWMM) |
| user_raingages_url | string <uri> URL to user-provided rain gauge locations (SWMM) |
| default_conduit_roughness | number <double> Default: 0.013 Default Manning's n for conduits (SWMM), defaults to 0.013 |
| default_conduit_shape | string Default: "CIRCULAR" Default conduit cross-section shape (SWMM), defaults to |
| default_conduit_diameter | number <double> Default: 18 Default conduit diameter in inches (SWMM), defaults to 18 |
| infiltration_method | string Default: "GREEN_AMPT" Infiltration method for subcatchments (SWMM), defaults to |
| flow_routing | string Default: "DYNWAVE" Flow routing method (SWMM), defaults to |
| system_type | string Stormwater system type (SWMM) |
| use_rdii | boolean Enable rainfall-derived inflow and infiltration (SWMM) |
| precip_distribution | string Precipitation temporal distribution (SWMM) |
| precip_quartile | string SCS precipitation quartile (SWMM) |
| precip_percentile | string NOAA precipitation percentile (SWMM) |
| user_epanet_junctions_url | string <uri> URL to user-provided junction nodes (EPANET brownfield) |
| user_reservoirs_url | string <uri> URL to user-provided reservoirs (EPANET brownfield) |
| user_tanks_url | string <uri> URL to user-provided tanks (EPANET brownfield) |
| user_pipes_url | string <uri> URL to user-provided pipe links (EPANET brownfield) |
| user_epanet_pumps_url | string <uri> URL to user-provided pump links (EPANET brownfield) |
| user_valves_url | string <uri> URL to user-provided valve links (EPANET brownfield) |
| user_demands_url | string <uri> URL to user-provided demand data (EPANET) |
| default_pipe_diameter | number <double> Default: 12 Default pipe diameter in inches (EPANET), defaults to 12 |
| default_pipe_roughness | number <double> Default: 130 Default Hazen-Williams C roughness coefficient (EPANET), defaults to 130 |
| default_demand_gpm | number <double> Default: 5 Default node demand in GPM (EPANET), defaults to 5 |
| headloss_formula | string Default: "H-W" Headloss formula (EPANET), defaults to |
{- "software": "hec_ras",
- "project_name": "Austin Creek Flood Study",
- "sub_type": "2d",
- "huc_id": "12090205",
- "design_storms": [
- "100yr",
- "500yr"
]
}{- "id": "550e8400-e29b-41d4-a716-446655440001",
- "user_id": "usr-123",
- "team_id": "team-456",
- "project_name": "Austin Creek Flood Study",
- "model_type": "hec_ras_2d",
- "status": "pending",
- "config": { },
- "output_uri": "s3://neeraip-models/generated/550e8400-e29b-41d4-a716-446655440001/model.zip",
- "error": "string",
- "progress": 45,
- "current_step": "Generating 2D mesh",
- "created_at": "2026-01-17T10:30:00Z",
- "started_at": "2026-01-17T10:31:00Z",
- "ended_at": "2026-01-17T10:45:00Z"
}Returns all model generation jobs accessible to the authenticated user or team.
[- {
- "id": "550e8400-e29b-41d4-a716-446655440001",
- "user_id": "usr-123",
- "team_id": "team-456",
- "project_name": "Austin Creek Flood Study",
- "model_type": "hec_ras_2d",
- "status": "pending",
- "config": { },
- "output_uri": "s3://neeraip-models/generated/550e8400-e29b-41d4-a716-446655440001/model.zip",
- "error": "string",
- "progress": 45,
- "current_step": "Generating 2D mesh",
- "created_at": "2026-01-17T10:30:00Z",
- "started_at": "2026-01-17T10:31:00Z",
- "ended_at": "2026-01-17T10:45:00Z"
}
]Returns the status and details of a specific model generation job.
| id required | string <uuid> Example: 550e8400-e29b-41d4-a716-446655440001 Model generation job ID (UUID) |
{- "id": "550e8400-e29b-41d4-a716-446655440001",
- "user_id": "usr-123",
- "team_id": "team-456",
- "project_name": "Austin Creek Flood Study",
- "model_type": "hec_ras_2d",
- "status": "pending",
- "config": { },
- "output_uri": "s3://neeraip-models/generated/550e8400-e29b-41d4-a716-446655440001/model.zip",
- "error": "string",
- "progress": 45,
- "current_step": "Generating 2D mesh",
- "created_at": "2026-01-17T10:30:00Z",
- "started_at": "2026-01-17T10:31:00Z",
- "ended_at": "2026-01-17T10:45:00Z"
}