Continuuiti

API Documentation

Programmatic access to Continuuiti's geospatial intelligence platform

API Access

Programmatic access to Continuuiti's geospatial intelligence APIs is available for enterprise customers and integration partners.

Contact us at support@continuuiti.com to request API credentials.

Available APIs

Geocoder API

Convert addresses to geographic coordinates with quality validation and batch processing.

LULC+ API

Land use and land cover analysis with satellite imagery and change detection.

Climate Risk API

Physical climate hazard assessment with 12 risk factors across multiple scenarios.

Damage Estimation API

Flood damage estimates using HAZUS and JRC depth-damage curves for single or batch buildings.

Flood Depth API

Scenario-adjusted flood depths using JRC GloFAS and WRI Aqueduct climate projections.

Authentication

All API requests require an API key passed in the request header:

HTTP Header
Authorization: Bearer YOUR_API_KEY

API keys are issued to approved enterprise customers and partners. Contact support to request access.

Pricing

API calls consume credits from your account balance.

API Credits per Request
Geocoder 1 credit per address
LULC+ 1 credit per location
Climate Risk 1 credit per location
Damage Estimation 1 credit per building
Flood Depth 1 credit per location

Contact support for enterprise pricing and volume discounts.

Base URL

https://api.continuuiti.com/v1/

Geocoder API

Convert addresses to geographic coordinates

Overview

The Geocoder API converts text addresses to geographic coordinates (latitude/longitude). It includes built-in quality validation to reject garbage inputs, saving API quota and providing immediate feedback on data quality. Supports both single address geocoding and batch processing for up to 5,000 addresses.

Endpoints

POST /api/v1/geocode/

Geocode a single address to coordinates.

Request
{
  "address": "1600 Amphitheatre Parkway, Mountain View, CA"
}
Response (201 Created)
{
  "id": 1,
  "original_address": "1600 Amphitheatre Parkway, Mountain View, CA",
  "formatted_address": "Google Building 41, 1600, Amphitheatre Parkway...",
  "latitude": "37.4224857",
  "longitude": "-122.0855846",
  "quality": {
    "score": 0.72,
    "status": "PASSED",
    "issues": [],
    "match_type": "building"
  }
}
GET /api/v1/geocode/history/

List all previously geocoded addresses.

GET /api/v1/geocode/{id}/

Retrieve a specific geocoded address by ID.

POST /api/v1/geocode/batch/

Submit a batch of addresses for geocoding (max 5,000 addresses).

Request
{
  "addresses": [
    {"address": "1600 Amphitheatre Parkway, Mountain View, CA", "label": "Google HQ"},
    {"address": "1 Infinite Loop, Cupertino, CA", "label": "Apple HQ"}
  ]
}
Response (200 OK)
{
  "batch_id": "batch_geocode_a1b2c3d4",
  "status": "COMPLETED",
  "total_count": 2,
  "completed": 2,
  "failed": 0,
  "rejected": 0
}
GET /api/v1/geocode/batch/{batch_id}/

Get batch status and progress.

GET /api/v1/geocode/batch/{batch_id}/results/

Get paginated geocoding results.

Quality Validation

Addresses are validated before geocoding to reject clearly unusable inputs. Rejected addresses are marked with status: "REJECTED" and don't consume geocoding quota.

Need help? Contact us at support@continuuiti.com

LULC+ API

Land use and land cover analysis

Overview

The LULC+ API provides annual satellite composites and land cover classification for any geographic location. Processing is asynchronous - you submit a job, then poll for results. Returns RGB satellite imagery, land cover classification maps, and statistical analysis of land cover changes over time.

Imagery

Sentinel-2 Surface Reflectance

Classification

Dynamic World Land Cover

Endpoints

POST /api/v1/lulc/analyze/

Submit a new LULC analysis job.

Request
{
  "lat": 28.6139,
  "lon": 77.2090,
  "size_m": 1000,
  "start_year": 2020,
  "end_year": 2025
}
Parameter Type Description
lat number Latitude (-90 to 90)
lon number Longitude (-180 to 180)
size_m integer AOI size in meters (100-10000, default: 1000)
start_year integer Start year (min: 2016, default: 2020)
end_year integer End year (max: 2025, default: 2025)
Response (202 Accepted)
{
  "job_id": "lulc_a1b2c3d4e5f6",
  "status": "PENDING",
  "message": "Job queued for processing"
}
GET /api/v1/lulc/jobs/{job_id}/

Get the status of an LULC analysis job.

Response (200 OK)
{
  "job_id": "lulc_a1b2c3d4e5f6",
  "status": "RUNNING",
  "progress": {
    "years_completed": 3,
    "years_total": 6
  }
}
GET /api/v1/lulc/results/{job_id}/

Get the full results of a completed LULC analysis including satellite imagery URLs, land cover classification maps, and statistics.

POST /api/v1/lulc/batch/analyze/

Submit a batch of locations for LULC analysis (max 5,000 locations).

Request
{
  "locations": [
    {"lat": 28.6139, "lon": 77.2090, "label": "Delhi"},
    {"lat": 19.0760, "lon": 72.8777, "label": "Mumbai"}
  ],
  "size_m": 1000,
  "start_year": 2022,
  "end_year": 2024
}
GET /api/v1/lulc/batch/{batch_id}/

Get batch status and progress.

GET /api/v1/lulc/batch/{batch_id}/results/

Get paginated LULC results.

Land Cover Classes

Water
Trees
Grass
Crops
Shrub
Built Area
Bare Ground
Snow & Ice
Flooded Veg

Need help? Contact us at support@continuuiti.com

Climate Risk API

Physical climate hazard assessment

Overview

The Climate Risk API provides forward-looking climate hazard assessments based on CMIP6 climate model data. It evaluates 12 distinct climate hazards across multiple SSP scenarios and time horizons (baseline, 2030, 2040, 2050). Processing is asynchronous - you submit a job, then poll for results.

Climate Data

NASA NEX-GDDP-CMIP6

Water Stress

WRI Aqueduct 4.0

Endpoints

POST /api/v1/climate-risk/analyze/

Submit a new climate risk assessment job.

Request
{
  "lat": 28.6139,
  "lon": 77.2090,
  "scenarios": ["ssp245", "ssp585"],
  "horizons": ["baseline", "2030", "2050"]
}
Parameter Type Description
lat number Latitude (-90 to 90)
lon number Longitude (-180 to 180)
scenarios array SSP scenarios: ssp245, ssp585
horizons array Time horizons: baseline, 2030, 2040, 2050
Response (202 Accepted)
{
  "job_id": "climate_a1b2c3d4e5f6",
  "status": "PENDING",
  "message": "Climate risk assessment queued for processing"
}
GET /api/v1/climate-risk/status/{job_id}/

Get the status of a climate risk assessment job.

Response (200 OK)
{
  "job_id": "climate_a1b2c3d4e5f6",
  "status": "RUNNING",
  "progress": {
    "hazards_completed": 7,
    "hazards_total": 12,
    "current_hazard": "severe_storm"
  }
}
GET /api/v1/climate-risk/results/{job_id}/

Get the full results of a completed climate risk assessment including composite scores, hazard ratings, location context, and water stress indicators.

Hazard Types

Temperature

Heat wave, Cold stress, Temperature change

Precipitation

Drought, Extreme rainfall, Precipitation change

Compound

Severe storm, Wildfire, Landslide

Hydrological

River flood, Sea level rise, Water stress

Risk Levels

1 = Low 2 = Moderate 3 = High 4 = Severe 5 = Extreme

Climate Scenarios (SSPs)

  • SSP2-4.5: Middle-of-road scenario with moderate mitigation efforts (~2.7C warming by 2100)
  • SSP5-8.5: High emissions scenario with fossil fuel development (~4.4C warming by 2100)

Need help? Contact us at support@continuuiti.com

Damage Estimation API

HAZUS & JRC flood damage curves

Overview

The Damage Estimation API computes building-level flood damage estimates using two independent, peer-reviewed depth-damage function datasets. Processing is synchronous — results are returned immediately. Both single-building and batch (up to 5,000 buildings) endpoints are available.

US Curves

FEMA HAZUS 4.0

Global Curves

JRC Huizinga et al. 2017

Endpoints

POST /api/v1/damage/estimate/

Compute flood damage for a single building. Both HAZUS and JRC are computed independently.

Request
{
  "depth_ft": 5.0,
  "occupancy": "RES1",
  "stories_int": "2",
  "basement": false,
  "flood_zone": "riverine",
  "replacement_value": 350000,
  "country_iso": "USA",
  "floor_area_m2": 150,
  "label": "Single Family Home"
}

Common Parameters (required)

Parameter Type Description
depth_ft float Flood depth above grade (0–30 ft)
occupancy string HAZUS occupancy code (33 types)
label string Optional building label

HAZUS Parameters (all 4 required together, or omit all)

Parameter Type Description
stories_int string Story group (varies by occupancy)
basement boolean Whether building has a basement
flood_zone string riverine, coastal_a, or coastal_v
replacement_value float Building replacement cost
content_value float Optional. Auto-computed if omitted
first_floor_height_ft float Optional. Auto-computed if omitted

JRC Parameters (both required together, or omit both)

Parameter Type Description
country_iso string ISO 3166-1 alpha-3 code (e.g., USA, DEU)
floor_area_m2 float Building floor area in m²
Response (200 OK)
{
  "status": "COMPLETED",
  "hazus": {
    "damage_ratio": 0.20,
    "contents_ratio": 0.28,
    "structural_loss": 70000.00,
    "contents_loss": 49000.00,
    "total_loss": 119000.00,
    "depth_in_structure_ft": 4.0,
    "first_floor_height_ft": 1.0,
    "clamped": false
  },
  "jrc": {
    "damage_ratio": 0.6265,
    "total_loss_eur": 77901.57,
    "std_dev": 0.1503,
    "sector": "residential",
    "continent": "north_america",
    "depth_m": 1.2192,
    "fallback_used": false
  }
}

Response Status Values

  • COMPLETED — Both HAZUS and JRC returned results
  • PARTIAL — One source succeeded, the other failed (failed source is null)
  • FAILED — Both sources failed
POST /api/v1/damage/batch/estimate/

Estimate damage for up to 5,000 buildings in a single request.

Request
{
  "buildings": [
    {
      "depth_ft": 3.0, "occupancy": "RES1",
      "stories_int": "1", "basement": false,
      "flood_zone": "riverine", "replacement_value": 200000,
      "country_iso": "USA", "floor_area_m2": 100,
      "label": "Building A"
    },
    {
      "depth_ft": 5.0, "occupancy": "COM4",
      "stories_int": "<4", "basement": false,
      "flood_zone": "riverine", "replacement_value": 500000,
      "country_iso": "DEU", "floor_area_m2": 300,
      "label": "Building B"
    }
  ]
}
Response (200 OK)
{
  "total_count": 2,
  "succeeded": 2,
  "failed": 0,
  "results": [
    {
      "index": 0,
      "label": "Building A",
      "status": "COMPLETED",
      "result": { "hazus": { ... }, "jrc": { ... } }
    },
    {
      "index": 1,
      "label": "Building B",
      "status": "COMPLETED",
      "result": { "hazus": { ... }, "jrc": { ... } }
    }
  ]
}

Limit: Maximum 5,000 buildings per request. Each building uses the same field schema as the single /estimate/ endpoint.

GET /api/v1/damage/occupancy-types/

List all 33 HAZUS occupancy types with category and description.

Response (200 OK)
{
  "occupancy_types": [
    {"code": "RES1", "category": "Single Family", "description": "Single Family Dwelling"},
    {"code": "COM4", "category": "Professional/Technical", "description": "Professional/Technical Services"}
  ],
  "total_count": 33
}
GET /api/v1/damage/occupancy-types/{code}/

Get detail for one occupancy type, including valid story groups, basement options, and flood zones.

Response (200 OK)
{
  "code": "RES1",
  "category": "Single Family",
  "description": "Single Family Dwelling",
  "stories_options": [
    {"value": "1", "label": "1 Story"},
    {"value": "2", "label": "2 Story"},
    {"value": ">2", "label": "3+ Story"},
    {"value": "99", "label": "Split Level"}
  ],
  "basement_options": [true, false],
  "flood_zones_available": ["coastal_a", "coastal_v", "riverine"]
}
GET /api/v1/damage/countries/

List JRC countries with available damage data. Optional ?search= query param for filtering.

Response (200 OK)
{
  "countries": [
    {
      "iso_a3": "USA",
      "country_name": "United States",
      "sectors_available": ["residential", "commercial", "industrial", "agriculture"]
    },
    {
      "iso_a3": "DEU",
      "country_name": "Germany",
      "sectors_available": ["residential", "commercial", "industrial"]
    }
  ],
  "total_count": 196
}
GET /api/v1/damage/curves/hazus/

Get the raw HAZUS depth-damage curve (29 data points, −4 to +24 ft) for chart visualization.

Parameter Type Description
occupancy string HAZUS occupancy code
stories_int string Story group (URL-encode < and >)
basement string true or false
flood_zone string riverine, coastal_a, or coastal_v
Response (200 OK)
{
  "curve_id": "R12N",
  "occupancy": "RES1",
  "depth_points_ft": [-4, -3, -2, ..., 23, 24],
  "building_damage_pct": [0, 0, 0, ..., 63, 63],
  "content_damage_pct": [0, 0, 0, ..., 73, 73],
  "building_source": "FIA",
  "default_first_floor_height_ft": 1.0
}
GET /api/v1/damage/curves/jrc/

Get the raw JRC depth-damage curve (9 data points, 0–6 m) for chart visualization.

Parameter Type Description
sector string residential, commercial, industrial, agriculture, transport, infrastructure
country_iso string ISO A3 code. Derives continent. Takes priority over continent param.
continent string Alternative to country_iso: europe, north_america, asia, etc.
Response (200 OK)
{
  "sector": "residential",
  "continent": "north_america",
  "country_iso": "USA",
  "fallback_used": false,
  "depth_points_m": [0, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 6.0],
  "damage_ratios": [0.20, 0.44, 0.58, 0.68, 0.78, 0.85, 0.92, 0.96, 1.0],
  "std_dev": [0.17, 0.14, 0.14, 0.17, 0.14, 0.13, 0.10, 0.06, 0.0],
  "max_damage": {
    "structure_per_m2": 552.65,
    "content_per_m2": 276.32,
    "total_per_m2": 828.97,
    "currency": "EUR_2010"
  }
}

Occupancy Categories

Residential (12)

RES1–RES6: Single family, multi-family, mobile home, hotel, dormitory, nursing home

Commercial (10)

COM1–COM10: Retail, wholesale, office, bank, hospital, clinic, entertainment, parking

Industrial (6)

IND1–IND6: Heavy, light, food/drugs, metals, high-tech, construction

Other (5)

AGR1, REL1, GOV1–2, EDU1–2: Agriculture, religious, government, education

HAZUS vs JRC

  • HAZUS: US-focused, 33 building types, separate structural + contents curves, 196 curves, monetary loss in input currency
  • JRC: Global (214 countries), 6 sectors, combined damage ratio, monetary loss in EUR 2010

Both are returned independently in every response and are not directly comparable.

Need help? Contact us at support@continuuiti.com

Flood Depth API

Scenario-adjusted riverine & coastal flood depths

Overview

The Flood Depth API computes scenario-adjusted flood depths for any geographic coordinate using JRC GloFAS (riverine baseline at 90m resolution) and WRI Aqueduct (climate projections). It returns depths for 4 return periods (RP10, RP50, RP100, RP500) under two SSP scenarios (SSP2-4.5 and SSP5-8.5) at three future horizons (2030, 2050, 2080). Single analysis is synchronous (~2 seconds). Batch processing supports up to 5,000 locations asynchronously.

Riverine Baseline

JRC CEMS GloFAS v2.1

Climate Projections

WRI Aqueduct Flood Hazard Maps V2

Endpoints

POST /api/v1/flood-depth/analyze/

Submit a single flood depth analysis. Processes synchronously (~2 seconds).

Request
{
  "lat": 13.599,
  "lon": 100.5998,
  "label": "Samut Prakan / Bangkok",
  "coastal_projection": 50,
  "coastal_subsidence": "wtsub"
}
Parameter Type Required Description
lat decimal Yes Latitude (-90 to 90)
lon decimal Yes Longitude (-180 to 180)
label string No User-provided label (e.g., property ID)
coastal_projection integer No SLR percentile: 5, 50 (default), or 95
coastal_subsidence string No "nosub" (without) or "wtsub" (with subsidence, default)
Response (200 OK)
{
  "job_id": "fd_abc123def456",
  "status": "COMPLETED",
  "message": "Flood depth analysis completed"
}
GET /api/v1/flood-depth/jobs/{job_id}/

Get the status of a flood depth analysis job.

Response (200 OK)
{
  "job_id": "fd_abc123def456",
  "status": "COMPLETED",
  "lat": "13.5990000",
  "lon": "100.5998000",
  "label": "Samut Prakan / Bangkok",
  "created_at": "2026-03-07T06:44:06Z",
  "completed_at": "2026-03-07T06:44:24Z",
  "error": null
}

Status values: PENDING, QUEUED, RUNNING, COMPLETED, FAILED

GET /api/v1/flood-depth/results/{job_id}/

Get full results including riverine depths, coastal depths, and metadata.

Response (200 OK) — abbreviated
{
  "job_id": "fd_abc123def456",
  "status": "COMPLETED",
  "input": { "lat": 13.599, "lon": 100.5998, "label": "Bangkok" },
  "riverine": {
    "baseline": {
      "RP10":  { "jrc_depth_m": 0.854, "aq_historical_m": 0.039 },
      "RP50":  { "jrc_depth_m": 0.690, "aq_historical_m": 0.101 },
      "RP100": { "jrc_depth_m": 0.710, "aq_historical_m": 0.154 },
      "RP500": { "jrc_depth_m": 0.707, "aq_historical_m": 0.272 }
    },
    "scenarios": {
      "ssp245_2030": {
        "RP100": {
          "aq_future_m": 0.209,
          "ratio": 1.354,
          "projected_depth_m": 0.962,
          "flag": "normal",
          "model_count": 5,
          "model_spread": 0.227
        }
      }
    }
  },
  "coastal": {
    "baseline": {
      "RP10":  { "depth_m": 0.0 },
      "RP100": { "depth_m": 0.322 }
    },
    "scenarios": {
      "ssp245_2030": {
        "RP100": {
          "depth_m": 0.420,
          "ratio": 1.304,
          "change_pct": 30.4,
          "flag": "normal"
        }
      }
    }
  },
  "metadata": {
    "method_version": "flood_depth_v1.0",
    "processing_time_sec": 14.89,
    "riverine_model_mode": "median_5gcm",
    "coastal_projection": 50,
    "coastal_subsidence": "wtsub",
    "datasets": {
      "jrc": "JRC/CEMS_GLOFAS/FloodHazard/v2_1",
      "aqueduct": "WRI/Aqueduct_Flood_Hazard_Maps/V2"
    }
  }
}

Riverine scenario fields:

Field Description
projected_depth_m JRC baseline x ratio (meters)
ratio Aqueduct future / historical
aq_future_m Median Aqueduct future depth (meters)
model_count Number of GCMs with data (0-5)
model_spread Max - min across models (meters)
flag Data quality flag (see below)

Coastal scenario fields:

Field Description
depth_m Aqueduct coastal depth (meters)
ratio Future / historical ratio
change_pct Percentage change from baseline
flag Data quality flag (see below)
POST /api/v1/flood-depth/batch/analyze/

Submit a batch of locations for flood depth analysis. Processes asynchronously.

Request
{
  "locations": [
    { "lat": 13.599, "lon": 100.5998, "label": "Bangkok" },
    { "lat": 19.05, "lon": 72.85, "label": "Mumbai" },
    { "lat": 51.92, "lon": 4.48, "label": "Rotterdam" }
  ],
  "coastal_projection": 50,
  "coastal_subsidence": "wtsub"
}
Response (202 Accepted)
{
  "batch_id": "batch_fd_abc123def456",
  "status": "PROCESSING",
  "total_count": 3,
  "status_url": "/api/v1/flood-depth/batch/batch_fd_abc123def456/",
  "results_url": "/api/v1/flood-depth/batch/batch_fd_abc123def456/results/"
}

Maximum 5,000 locations per batch. Coastal parameters apply to all locations in the batch.

GET /api/v1/flood-depth/batch/{batch_id}/

Get batch progress and status.

Response (200 OK)
{
  "batch_id": "batch_fd_abc123def456",
  "status": "PROCESSING",
  "progress": {
    "total": 3,
    "completed": 1,
    "failed": 0,
    "running": 1,
    "pending": 1,
    "percent_complete": 33.3
  },
  "created_at": "2026-03-07T06:44:06Z",
  "completed_at": null
}

Batch status values: PROCESSING, COMPLETED, PARTIAL, FAILED

GET /api/v1/flood-depth/batch/{batch_id}/results/

Get paginated batch results. Each result contains the full riverine + coastal + metadata structure.

Parameter Default Description
page 1 Page number
page_size 100 Items per page (max 500)
status Optional filter: COMPLETED, FAILED

Quality Flags

Each data point includes a quality flag indicating the data status. Listed in priority order:

no_data Location outside all flood model coverage
jrc_artifact JRC tiling artifact (identical depths across return periods)
no_flood No flooding at this location and return period
new_flood_zone Currently dry, but floods under climate change
no_jrc_data JRC coverage gap — Aqueduct-only fallback
flood_disappears Historical flooding ceases under climate change
normal Standard ratio computation — no data quality issues

Return Periods

RP10 — 10% annual chance RP50 — 2% annual chance RP100 — 1% annual chance RP500 — 0.2% annual chance

Climate Scenarios (SSPs)

  • SSP2-4.5: Middle-of-road scenario with moderate mitigation efforts (~2.7C warming by 2100)
  • SSP5-8.5: High emissions scenario with fossil fuel development (~4.4C warming by 2100)

Horizons: 2030, 2050, 2080 — projected using median of 5 CMIP5 GCMs

Coastal Parameters

Projection percentile: 5 (optimistic), 50 (median, default), 95 (pessimistic)
Subsidence: "nosub" (without land subsidence), "wtsub" (with subsidence, default)

Need help? Contact us at support@continuuiti.com