Skip to content

Climate Dashboard API

Retrieve climate risk analysis data for projects and sites.


Project Climate Summary

Retrieves the Climate Analysis summary for a specific project.

HTTP request

GET https://api.darukaa.com/api/v1/projects/{project_id}/climate/summary

Path parameters

Parameter Type Required Description
project_id string (UUID) Yes Unique project identifier to fetch climate analysis summary

Headers

Header Value Required
Authorization Bearer Yes

Example request

curl -X GET "https://api.darukaa.com/api/v1/projects/3fa8-xxxx-xxxx-xxxx-afa6/climate/summary" \
  -H "Authorization: Bearer <your_access_token>"
response = requests.get(
    f"https://api.darukaa.com/api/v1/projects/{project_id}/climate/summary",
    headers=headers
)
climate_summary = response.json()
const response = await fetch(`https://api.darukaa.com/api/v1/projects/${projectId}/climate/summary`, {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${accessToken}`
  }
});

const climateSummary = await response.json();

Status codes

Code Description
200 Success - Climate summary retrieved successfully
401 Unauthorized - Invalid or missing access token
404 Not Found - Project with the specified ID does not exist

Response body

Success (200)

{
  "overall_risk_score": 6.5,
  "overall_risk_category": "Medium",
  "value_at_risk": 2500000.0,
  "chronic_risks": {
    "risk_scenarios": [
      {
        "scenario": "RCP4.5-2030",
        "years": {
          "2030": {
            "sectors": {
              "agriculture": {
                "heat": {
                  "days>20C": 120,
                  "days>25C": 85,
                  "days>30C": 45,
                  "days>35C": 15,
                  "absolute_loss_days": 12.5,
                  "additional_loss_days": 3.2,
                  "asset_damage_var_percent": 5.5,
                  "productivity_var_percent": -8.2,
                  "risk_category": "Medium",
                  "risk_increase_percent": 15.3
                },
                "drought": {
                  "days>1.0SPEI": 45,
                  "days>1.5SPEI": 25,
                  "days>2.0SPEI": 10,
                  "absolute_loss_days": 8.5,
                  "additional_loss_days": 2.1,
                  "asset_damage_var_percent": 3.2,
                  "productivity_var_percent": -5.8,
                  "risk_category": "Low",
                  "risk_increase_percent": 8.5
                },
                "pluvial_flood_rain": {
                  "max_1day_ppt_mm": 125.5,
                  "pluvial_flood_depth_m": 0.35,
                  "absolute_loss_days": 5.2,
                  "additional_loss_days": 1.5,
                  "asset_damage_var_percent": 2.8,
                  "productivity_var_percent": -4.2,
                  "risk_category": "Low",
                  "risk_increase_percent": 6.2
                }
              }
            }
          }
        }
      }
    ]
  },
  "acute_risks": {},
  "calculated_at": "2025-12-04T13:30:00Z",
  "project_id": "3fa8-xxxx-xxxx-xxxx-afa6"
}

Failure (401)

{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or missing access token",
    "details": "Please provide a valid Bearer token in the Authorization header",
    "request_id": "req_abc123",
    "timestamp": "2025-12-04T13:30:00Z"
  }
}

Failure (404)

{
  "error": {
    "code": "PROJECT_NOT_FOUND",
    "message": "Project not found",
    "details": "No project exists with the ID: 3fa8-xxxx-xxxx-xxxx-afa6",
    "request_id": "req_abc123",
    "timestamp": "2025-12-04T13:30:00Z"
  }
}
Field Type Description
overall_risk_score number Aggregate numeric risk score for the project (higher = greater risk)
overall_risk_category string Human-readable category (e.g., Low, Medium, High)
value_at_risk number Monetary or other quantified value exposed to climate hazards
chronic_risks object Object containing chronic (long-term) risk scenario results
chronic_risks.risk_scenarios array[object] Array of scenario objects (one per scenario / RCP / timeframe, etc.)
chronic_risks.risk_scenarios[].scenario string Scenario name/identifier (e.g., RCP4.5-2030)
chronic_risks.risk_scenarios[].years object Map keyed by year or time-bucket → sector risk summary
chronic_risks.risk_scenarios[].years..sectors object Map keyed by sector name → hazard breakdown object
chronic_risks...sectors..heat object Heat hazard metrics for that sector & year
heat.days>20C integer Number of days in period exceeding 20°C
heat.days>25C integer Number of days >25°C
heat.days>30C integer Number of days >30°C
heat.days>35C integer Number of days >35°C
heat.absolute_loss_days number Estimated absolute loss days due to heat (units: days)
heat.additional_loss_days number Additional loss days attributable to scenario change
heat.asset_damage_var_percent number Percent variance in asset damage vs baseline
heat.productivity_var_percent number Percent productivity variance (loss) vs baseline
heat.risk_category string Risk category for heat (Low/Medium/High)
heat.risk_increase_percent number Percent increase in heat risk vs baseline
chronic_risks...sectors..drought object Drought hazard metrics (same pattern as heat but with SPEI thresholds)
drought.days>1.0SPEI integer Number of days below SPEI -1.0 (moderate drought threshold)
drought.days>1.5SPEI integer Number of days below SPEI -1.5 (severe)
drought.days>2.0SPEI integer Number of days below SPEI -2.0 (extreme)
drought.absolute_loss_days number Absolute loss days due to drought
drought.additional_loss_days number Additional loss days attributable to scenario change
drought.asset_damage_var_percent number Percent variance in asset damage from drought
drought.productivity_var_percent number Percent productivity variance due to drought
drought.risk_category string Risk category for drought
drought.risk_increase_percent number Percent increase in drought risk vs baseline
chronic_risks...sectors..pluvial_flood_rain object Pluvial flood metrics for intense rainfall & depth
pluvial_flood_rain.max_1day_ppt_mm number Maximum 1-day precipitation (mm)
pluvial_flood_rain.pluvial_flood_depth_m number Estimated flood depth (meters)
pluvial_flood_rain.absolute_loss_days number Absolute loss days due to pluvial flood
pluvial_flood_rain.additional_loss_days number Additional loss days attributable to scenario change
pluvial_flood_rain.asset_damage_var_percent number Percent asset damage variance from pluvial flooding
pluvial_flood_rain.productivity_var_percent number Percent productivity variance from pluvial flooding
pluvial_flood_rain.risk_category string Risk category for pluvial flooding
pluvial_flood_rain.risk_increase_percent number Percent increase in pluvial flood risk vs baseline
acute_risks object Object containing acute (short-term) risk scenario results
calculated_at datetime Timestamp when the climate summary was calculated
project_id UUID string Echo of the project identifier for which the summary applies

Site Climate Analysis

Retrieves Climate Analysis details for a specific site.

HTTP request

GET https://api.darukaa.com/api/v1/sites/{site_id}/climate

Path parameters

Parameter Type Required Description
site_id string (UUID) Yes Unique site identifier to retrieve climate analysis

Headers

Header Value Required
Authorization Bearer Yes

Example request

curl -X GET "https://api.darukaa.com/api/v1/sites/aac71ba6-bd8d-4xx-b4xx-8edxxxx0b9/climate" \
  -H "Authorization: Bearer <your_access_token>"
site_id = "aac71ba6-bd8d-4xx-b4xx-8edxxxx0b9"
response = requests.get(
    f"https://api.darukaa.com/api/v1/sites/{site_id}/climate",
    headers=headers
)
site_climate = response.json()
const siteId = "aac71ba6-bd8d-4xx-b4xx-8edxxxx0b9";
const response = await fetch(`https://api.darukaa.com/api/v1/sites/${siteId}/climate`, {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${accessToken}`
  }
});

const siteClimate = await response.json();

Status codes

Code Description
200 Success - Site climate analysis retrieved successfully
401 Unauthorized - Invalid or missing access token
404 Not Found - Site with the specified ID does not exist

Response body

Success (200)

{
  "overall_risk_score": 6.5,
  "overall_risk_category": "Medium",
  "value_at_risk": 2500000.0,
  "chronic_risks": {
    "risk_scenarios": [
      {
        "scenario": "RCP4.5-2030",
        "years": {
          "2030": {
            "sectors": {
              "agriculture": {
                "heat": {
                  "days>20C": 120,
                  "days>25C": 85,
                  "days>30C": 45,
                  "days>35C": 15,
                  "absolute_loss_days": 12.5,
                  "additional_loss_days": 3.2,
                  "asset_damage_var_percent": 5.5,
                  "productivity_var_percent": -8.2,
                  "risk_category": "Medium",
                  "risk_increase_percent": 15.3
                },
                "drought": {
                  "days>1.0SPEI": 45,
                  "days>1.5SPEI": 25,
                  "days>2.0SPEI": 10,
                  "absolute_loss_days": 8.5,
                  "additional_loss_days": 2.1,
                  "asset_damage_var_percent": 3.2,
                  "productivity_var_percent": -5.8,
                  "risk_category": "Low",
                  "risk_increase_percent": 8.5
                },
                "pluvial_flood_rain": {
                  "max_1day_ppt_mm": 125.5,
                  "pluvial_flood_depth_m": 0.35,
                  "absolute_loss_days": 5.2,
                  "additional_loss_days": 1.5,
                  "asset_damage_var_percent": 2.8,
                  "productivity_var_percent": -4.2,
                  "risk_category": "Low",
                  "risk_increase_percent": 6.2
                }
              }
            }
          }
        }
      }
    ]
  },
  "acute_risks": {},
  "calculated_at": "2025-12-04T13:30:00Z",
  "site_id": "aac7-xxxx-xxxx-xxxx-0b9",
  "project_id": "3fa-xxxx-xxxx-xxxx-afa6"
}

Failure (401)

{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or missing access token",
    "details": "Please provide a valid Bearer token in the Authorization header",
    "request_id": "req_abc123",
    "timestamp": "2025-12-04T13:30:00Z"
  }
}

Failure (404)

{
  "error": {
    "code": "SITE_NOT_FOUND",
    "message": "Site not found",
    "details": "No site exists with the ID: aac71ba6-bd8d-4xx-b4xx-8edxxxx0b9",
    "request_id": "req_abc123",
    "timestamp": "2025-12-04T13:30:00Z"
  }
}
Field Type Description
overall_risk_score number Aggregate numeric risk score for the site (higher = greater risk)
overall_risk_category string Human-readable category (e.g., Low, Medium, High)
value_at_risk number Monetary or other quantified value exposed to climate hazards
chronic_risks object Object containing chronic (long-term) risk scenario results
chronic_risks.risk_scenarios array[object] Array of scenario objects (one per scenario / RCP / timeframe, etc.)
chronic_risks.risk_scenarios[].scenario string Scenario name/identifier (e.g., RCP4.5-2030)
chronic_risks.risk_scenarios[].years object Map keyed by year or time-bucket → sector risk summary
chronic_risks.risk_scenarios[].years..sectors object Map keyed by sector name → hazard breakdown object
chronic_risks...sectors..heat object Heat hazard metrics for that sector & year
heat.days>20C integer Number of days in period exceeding 20°C
heat.days>25C integer Number of days >25°C
heat.days>30C integer Number of days >30°C
heat.days>35C integer Number of days >35°C
heat.absolute_loss_days number Estimated absolute loss days due to heat (units: days)
heat.additional_loss_days number Additional loss days attributable to scenario change
heat.asset_damage_var_percent number Percent variance in asset damage vs baseline
heat.productivity_var_percent number Percent productivity variance (loss) vs baseline
heat.risk_category string Risk category for heat (Low/Medium/High)
heat.risk_increase_percent number Percent increase in heat risk vs baseline
chronic_risks...sectors..drought object Drought hazard metrics (same pattern as heat but with SPEI thresholds)
drought.days>1.0SPEI integer Number of days below SPEI -1.0 (moderate drought threshold)
drought.days>1.5SPEI integer Number of days below SPEI -1.5 (severe)
drought.days>2.0SPEI integer Number of days below SPEI -2.0 (extreme)
drought.absolute_loss_days number Absolute loss days due to drought
drought.additional_loss_days number Additional loss days attributable to scenario change
drought.asset_damage_var_percent number Percent variance in asset damage from drought
drought.productivity_var_percent number Percent productivity variance due to drought
drought.risk_category string Risk category for drought
drought.risk_increase_percent number Percent increase in drought risk vs baseline
chronic_risks...sectors..pluvial_flood_rain object Pluvial flood metrics for intense rainfall & depth
pluvial_flood_rain.max_1day_ppt_mm number Maximum 1-day precipitation (mm)
pluvial_flood_rain.pluvial_flood_depth_m number Estimated flood depth (meters)
pluvial_flood_rain.absolute_loss_days number Absolute loss days due to pluvial flood
pluvial_flood_rain.additional_loss_days number Additional loss days attributable to scenario change
pluvial_flood_rain.asset_damage_var_percent number Percent asset damage variance from pluvial flooding
pluvial_flood_rain.productivity_var_percent number Percent productivity variance from pluvial flooding
pluvial_flood_rain.risk_category string Risk category for pluvial flooding
pluvial_flood_rain.risk_increase_percent number Percent increase in pluvial flood risk vs baseline
acute_risks object Object containing acute (short-term) risk scenario results
calculated_at datetime Timestamp when the climate analysis was calculated
site_id UUID string Unique identifier of the site
project_id UUID string Associated project identifier

All Sites Climate Analysis

Retrieves Climate Analysis details for all sites within a project.

HTTP request

GET https://api.darukaa.com/api/v1/projects/{project_id}/climate/sites

Path parameters

Parameter Type Required Description
project_id string (UUID) Yes Unique project identifier to fetch climate analysis summary

Headers

Header Value Required
Authorization Bearer Yes

Example request

curl -X GET "https://api.darukaa.com/api/v1/projects/3fa8-xxxx-xxxx-xxxx-6afa6/climate/sites" \
  -H "Authorization: Bearer <your_access_token>"
response = requests.get(
    f"https://api.darukaa.com/api/v1/projects/{project_id}/climate/sites",
    headers=headers
)
all_sites_climate = response.json()  # Returns array of site climate data
const response = await fetch(`https://api.darukaa.com/api/v1/projects/${projectId}/climate/sites`, {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${accessToken}`
  }
});

const allSitesClimate = await response.json();  // Returns array of site climate data

Status codes

Code Description
200 Success - All sites climate analysis retrieved successfully
401 Unauthorized - Invalid or missing access token
404 Not Found - Project with the specified ID does not exist

Response body

Success (200)

[
  {
    "overall_risk_score": 6.5,
    "overall_risk_category": "Medium",
    "value_at_risk": 2500000.0,
    "chronic_risks": {
      "risk_scenarios": [
        {
          "scenario": "RCP4.5-2030",
          "years": {
            "2030": {
              "sectors": {
                "agriculture": {
                  "heat": {
                    "days>20C": 120,
                    "days>25C": 85,
                    "days>30C": 45,
                    "days>35C": 15,
                    "absolute_loss_days": 12.5,
                    "additional_loss_days": 3.2,
                    "asset_damage_var_percent": 5.5,
                    "productivity_var_percent": -8.2,
                    "risk_category": "Medium",
                    "risk_increase_percent": 15.3
                  },
                  "drought": {
                    "days>1.0SPEI": 45,
                    "days>1.5SPEI": 25,
                    "days>2.0SPEI": 10,
                    "absolute_loss_days": 8.5,
                    "additional_loss_days": 2.1,
                    "asset_damage_var_percent": 3.2,
                    "productivity_var_percent": -5.8,
                    "risk_category": "Low",
                    "risk_increase_percent": 8.5
                  },
                  "pluvial_flood_rain": {
                    "max_1day_ppt_mm": 125.5,
                    "pluvial_flood_depth_m": 0.35,
                    "absolute_loss_days": 5.2,
                    "additional_loss_days": 1.5,
                    "asset_damage_var_percent": 2.8,
                    "productivity_var_percent": -4.2,
                    "risk_category": "Low",
                    "risk_increase_percent": 6.2
                  }
                }
              }
            }
          }
        }
      ]
    },
    "acute_risks": {},
    "calculated_at": "2025-12-04T13:30:00Z",
    "site_id": "aac71ba6-bd8d-4xx-b4xx-8edxxxx0b9",
    "project_id": "3fa-xxxx-xxxx-xxxx-a6"
  }
]

Failure (401)

{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or missing access token",
    "details": "Please provide a valid Bearer token in the Authorization header",
    "request_id": "req_abc123",
    "timestamp": "2025-12-04T13:30:00Z"
  }
}

Failure (404)

{
  "error": {
    "code": "PROJECT_NOT_FOUND",
    "message": "Project not found",
    "details": "No project exists with the ID: 3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "request_id": "req_abc123",
    "timestamp": "2025-12-04T13:30:00Z"
  }
}
Field Type Description
overall_risk_score number Aggregate numeric risk score for the site (higher = greater risk)
overall_risk_category string Human-readable category (e.g., Low, Medium, High)
value_at_risk number Monetary or other quantified value exposed to climate hazards
chronic_risks object Object containing chronic (long-term) risk scenario results
chronic_risks.risk_scenarios array[object] Array of scenario objects (one per scenario / RCP / timeframe, etc.)
chronic_risks.risk_scenarios[].scenario string Scenario name/identifier (e.g., RCP4.5-2030)
chronic_risks.risk_scenarios[].years object Map keyed by year or time-bucket → sector risk summary
chronic_risks.risk_scenarios[].years..sectors object Map keyed by sector name → hazard breakdown object
chronic_risks...sectors..heat object Heat hazard metrics for that sector & year
heat.days>20C integer Number of days in period exceeding 20°C
heat.days>25C integer Number of days >25°C
heat.days>30C integer Number of days >30°C
heat.days>35C integer Number of days >35°C
heat.absolute_loss_days number Estimated absolute loss days due to heat (units: days)
heat.additional_loss_days number Additional loss days attributable to scenario change
heat.asset_damage_var_percent number Percent variance in asset damage vs baseline
heat.productivity_var_percent number Percent productivity variance (loss) vs baseline
heat.risk_category string Risk category for heat (Low/Medium/High)
heat.risk_increase_percent number Percent increase in heat risk vs baseline
chronic_risks...sectors..drought object Drought hazard metrics (same pattern as heat but with SPEI thresholds)
drought.days>1.0SPEI integer Number of days below SPEI -1.0 (moderate drought threshold)
drought.days>1.5SPEI integer Number of days below SPEI -1.5 (severe)
drought.days>2.0SPEI integer Number of days below SPEI -2.0 (extreme)
drought.absolute_loss_days number Absolute loss days due to drought
drought.additional_loss_days number Additional loss days attributable to scenario change
drought.asset_damage_var_percent number Percent variance in asset damage from drought
drought.productivity_var_percent number Percent productivity variance due to drought
drought.risk_category string Risk category for drought
drought.risk_increase_percent number Percent increase in drought risk vs baseline
chronic_risks...sectors..pluvial_flood_rain object Pluvial flood metrics for intense rainfall & depth
pluvial_flood_rain.max_1day_ppt_mm number Maximum 1-day precipitation (mm)
pluvial_flood_rain.pluvial_flood_depth_m number Estimated flood depth (meters)
pluvial_flood_rain.absolute_loss_days number Absolute loss days due to pluvial flood
pluvial_flood_rain.additional_loss_days number Additional loss days attributable to scenario change
pluvial_flood_rain.asset_damage_var_percent number Percent asset damage variance from pluvial flooding
pluvial_flood_rain.productivity_var_percent number Percent productivity variance from pluvial flooding
pluvial_flood_rain.risk_category string Risk category for pluvial flooding
pluvial_flood_rain.risk_increase_percent number Percent increase in pluvial flood risk vs baseline
acute_risks object Object containing acute (short-term) risk scenario results
calculated_at datetime Timestamp when the climate analysis was calculated
site_id UUID string Unique identifier of the site
project_id UUID string Associated project identifier