ClimateNestClimateNest/Docs/API Reference

Getting Started

The ClimateNest Enterprise API provides programmatic access to AI-powered climate risk assessments for any Australian residential address. Integrate climate intelligence directly into your property platforms, buyer portals, mortgage tools, and risk dashboards.

Base URL: https://climatenest.org/api/v1

All requests and responses use application/json. All monetary values are in AUD.

How API billing works

The ClimateNest API is pre-paid credit-based. You purchase an Enterprise pack, receive credits, and each API call consumes 1 credit per address. No surprises, no monthly commitments. When credits run low, purchase another pack.

1

Purchase an Enterprise pack

Buy a pack from the Pricing page. Packs start at $349 for 10 credits.

2

Generate an API key

Go to Dashboard → Enterprise and create an API key. Your key is tied to your account and its credit balance.

3

Call the API

Send your API key in the Authorization: Bearer or X-API-Key header. Each successful request deducts 1 credit. Track your balance in the credits_remaining field of every response.

Authentication

Authenticate using your API key via the Authorization: Bearer header, X-API-Key header, or ?api_key= query parameter. Generate keys from Dashboard → Enterprise tab after purchasing an Enterprise pack.

http
POST /v1/risk-assessment HTTP/1.1
Host: climatenest.org
Content-Type: application/json
Authorization: Bearer cne_live_YOUR_API_KEY

Alternatively: X-API-Key: cne_live_YOUR_API_KEY

Keep your API key confidential. Do not expose it in client-side code or public repositories. Rotate compromised keys immediately from your dashboard.

Endpoints

POSTGET/v1/risk-assessment

Generates a full climate risk assessment for the provided Australian address. Consumes 1 credit per successful request. Supports both POST (JSON body) and GET (query params).

Request Parameters

ParameterTypeRequiredDescription
addressstringYesFull Australian residential address (street, suburb, state, postcode).
report_typestringNoReport detail level. "full" (default) returns the complete analysis. "summary" returns a condensed version.
include_pdfbooleanNoIf true, a downloadable PDF is generated and a download URL returned. Consumes additional processing time. Default: false.

Response

Returns a risk assessment object with scores for each climate risk category.

json
{
  "success": true,
  "request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "timestamp": "2025-03-06T08:00:00Z",
  "address": "14 River Street, Lismore NSW 2480",
  "report_type": "full",
  "credits_used": 1,
  "credits_remaining": 24,
  "response_time_ms": 4521,
  "data": {
    "address": "14 River Street, Lismore NSW 2480",
    "climateNestIndex": {
      "overall": 84,
      "current": 84,
      "projection2030": 96,
      "projection2050": 100,
      "rating": "Severe"
    },
    "hazardScores": {
      "flood": { "score": 97, "acsRiskCategory": "Severe", "confidence": 90 },
      "bushfire": { "score": 12, "acsRiskCategory": "Low", "confidence": 85 },
      "heat": { "score": 61, "acsRiskCategory": "High", "confidence": 70 },
      "coastal": { "score": 5, "acsRiskCategory": "Low", "confidence": 95 },
      "wind": { "score": 45, "acsRiskCategory": "Moderate", "confidence": 65 },
      "storm": { "score": 72, "acsRiskCategory": "High", "confidence": 60 }
    },
    "financialAnalysis": {
      "insuranceTrajectory": {
        "currentPremium": 2800,
        "projected2030": 3500,
        "projected2050": 5200
      }
    },
    "recommendedActions": [
      "Consider flood insurance as a priority.",
      "Review flood mitigation works on the property.",
      "Check council flood overlays before purchasing."
    ]
  },
  "branding": {
    "logo_url": "https://...",
    "primary_color": "#1a7a5a",
    "business_name": "My Agency"
  }
}

Batch

The POST /v1/risk-assessment/batch endpoint processes up to 25 addresses in a single request. Each address is processed sequentially and consumes 1 credit. When an individual address fails, its credit is automatically restored and processing continues with the next address.

POST/v1/risk-assessment/batch

Request Parameters

ParameterTypeRequiredDescription
addressesstring[]YesArray of Australian residential addresses. Max 25 per batch.
report_typestringNoReport detail level. "full" (default) or "summary".

Response

Returns a batch envelope with individual results per address. Credits are deducted atomically per address; failed addresses have credits restored.

json
{
  "success": true,
  "request_id": "b1c2d3e4-f5a6-7890-bcde-f12345678901",
  "timestamp": "2026-06-19T12:00:00Z",
  "batch_size": 3,
  "processed": 2,
  "failed": 1,
  "credits_used": 2,
  "credits_rolled_back": 1,
  "credits_remaining": 22,
  "results": [
    {
      "address": "14 River Street Lismore NSW 2480",
      "report_type": "full",
      "data": {}
    }
  ],
  "errors": [
    { "address": "Bad Address", "error": "Address must be at least 5 characters." }
  ]
}

Rate Limits

Each API key has a configurable rate limit (default 10 requests per minute). You can adjust this per key from your Enterprise dashboard (up to 100 req/min). Requests exceeding the limit receive a 429 response with a Retry-After header.

To increase throughput, generate multiple API keys from your Enterprise dashboard. Each key has its own independent rate limit bucket. Contact [email protected] for custom rate limit arrangements.

Pricing & Credits

How credits work

Each API request consumes 1 credit per address. A single-address call to /v1/risk-assessment uses 1 credit. A batch call with 10 addresses uses 10 credits.

  • Successful requests — credit deducted after report generation. You only pay for completed reports.
  • Failed requests — credit is automatically restored. If generation fails for any reason, your credit is refunded to your balance.
  • Batch partial failures — only successful addresses are charged. Failed ones have their credits rolled back.
  • Credit expiry — credits expire 12 months from purchase. Unused credits do not roll over beyond expiry.

You can check your balance any time in the Enterprise dashboard or inspect the credits_remaining field in every API response. When your balance reaches zero, the API returns a 402 response.

Enterprise packs

Purchase a pack from the Pricing page. All prices are in AUD, exclusive of GST.

PackCreditsPrice (AUD)~Cost per reportValidity
Enterprise 10-Pack10$349$34.9012 months
Enterprise 25-Pack25$699$27.9612 months
Enterprise 30-Pack30$799$26.6312 months

Need more? Contact [email protected] for custom packs, white-label partnerships, or volume pricing above 50 credits.

White-Label

Enterprise customers can apply custom branding to API responses and PDF reports. Configure your logo, brand colours, company name, and footer text from Dashboard → Enterprise → White-Label Settings. Once active, all API responses from your key will automatically include your white-label branding in the branding field and any generated PDFs will use your custom logo, colours, and company name.

json
{
  "branding": {
    "logo_url": "https://climatenest.org/storage/v1/object/public/logos/user_abc/logo.png",
    "primary_color": "#1a7a5a",
    "business_name": "Acme Realty"
  }
}

White-label branding is resolved automatically from the API key owner's settings. No extra parameter is required — just configure your white-label settings once in the dashboard.

Code Examples

cURL

bash
curl -X POST https://climatenest.org/api/v1/risk-assessment -H "Content-Type: application/json" -H "Authorization: Bearer cne_live_YOUR_KEY" -d '{"address": "14 River Street Lismore NSW 2480"}'

Python

python
import requests

response = requests.post(
    "https://climatenest.org/api/v1/risk-assessment",
    headers={
        "Authorization": "Bearer cne_live_YOUR_KEY",
        "Content-Type": "application/json",
    },
    json={"address": "14 River Street Lismore NSW 2480"},
)

data = response.json()
print(data["success"])          # true
print(data["credits_remaining"]) # e.g. 24
# Full report is in data["data"]

JavaScript / TypeScript

javascript
const response = await fetch(
  "https://climatenest.org/api/v1/risk-assessment",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer cne_live_YOUR_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      address: "14 River Street Lismore NSW 2480",
    }),
  }
);

const data = await response.json();
console.log(data.success);           // true
console.log(data.credits_remaining); // e.g. 24
// Full report is in data.data

Batch (JavaScript)

javascript
const response = await fetch(
  "https://climatenest.org/api/v1/risk-assessment/batch",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer cne_live_YOUR_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      addresses: [
        "14 River Street Lismore NSW 2480",
        "1 Smith Street Parramatta NSW 2150",
      ],
      report_type: "summary",
    }),
  }
);

const data = await response.json();
console.log(data.processed);  // 2
console.log(data.failed);     // 0
data.results.forEach(r => {
  console.log(r.address, r.data.climate_nest_index.rating);
});

Try these examples live in the API Playground.

Error Reference

All errors return a JSON body with error and message fields.

CodeStatusDescription
400Bad RequestMissing or invalid address field, or malformed JSON body.
401UnauthorizedMissing or invalid API key. Check your Authorization header or X-API-Key header.
402Payment RequiredInsufficient credits to complete the request. Purchase more at climatenest.org/pricing.
429Too Many RequestsRate limit exceeded. Retry after the specified delay in the Retry-After header.
500Internal ErrorUnexpected server error. Your credit is restored if the report could not be generated.
503Service UnavailableReport generation service is temporarily unavailable. Please retry later.
json
{
  "error": "insufficient_credits",
  "message": "No credits available. Purchase additional credits at https://climatenest.org/pricing",
  "credits_remaining": 0
}

MCP Server — AI Agent Integration

ClimateNest offers an MCP (Model Context Protocol) server that allows AI agents (Claude, Cursor, custom agents) to query property climate risk data directly as a tool. Each tool call consumes 1 credit from your enterprise API key balance.

Getting Started

  1. Visit /enterprise/mcp and purchase a credit pack
  2. After purchase, you'll receive a unique API key (format: cne_live_<32hex>)
  3. Configure the MCP server in your AI agent
  4. Start querying property data using natural language

Setup Guides

Claude Desktop

json
{
  "mcpServers": {
    "climatenest": {
      "command": "npx",
      "args": ["-y", "@climatenest/mcp-server"],
      "env": {
        "CLIMATENEST_API_KEY": "your_key_here"
      }
    }
  }
}

Claude Code (CLI)

bash
mcp add climatenest -- node services/mcp-server.js

Then set your API key as the CLIMATENEST_API_KEY environment variable.

Cursor

Add an MCP server in Cursor settings (Settings → Features → MCP Servers):

json
{
  "name": "climatenest",
  "type": "command",
  "command": "node services/mcp-server.js",
  "env": {
    "CLIMATENEST_API_KEY": "your_key_here"
  }
}

Available Tools

ToolDescriptionCredit Cost
get_property_riskGet full climate risk data for one address1
batch_risk_checkCheck up to 10 addresses in one call1 per address
check_creditsCheck your remaining credit balanceFree
get_report_pdfGenerate and download a PDF report1

Example Queries

Once configured, you can ask your AI agent questions like:

  • "What is the climate risk for 31 Rupert St, Mount Colah NSW 2079?"
  • "Check flood and bushfire risk for these 5 addresses in Sydney"
  • "How many credits do I have remaining on my ClimateNest account?"
  • "Generate a PDF climate risk report for 42 Wentworth Rd, Vaucluse"

Billing & Credits

Each MCP tool call consumes credits from your enterprise API key balance. Credits are purchased in packs via the Enterprise MCP page. You can check your balance at any time using the check_creditstool in your AI agent, or via the REST API.

When your balance runs low, simply purchase another pack — credits are added to your existing balance immediately.