Territas — parcel intelligence & climate riskTerritas — parcel intelligence & climate risk
DocumentationQuickstart
Start

Quickstart

Create a key, then run your first underwrite. A few minutes end to end.

1. Get an API key

Keys are issued from your account dashboard. If you booked a demo, a Trial account was provisioned automatically — sign in with the magic link and open app.territas.com to create a key. You’ll see the full key once, so copy it straight into your secrets manager. The details are in Authentication.

Keep it out of source control — export it into your shell for the calls below:

shell
export TERRITAS_API_KEY="trs_…"

2. Run your first underwrite

Send an address and the deal’s economics. Only five fields are required — address, purchase_price, annual_rent, annual_taxes, and annual_insurance_base (the base hazard premium, excluding flood). Everything else is optional and documented in the reference.

curl -X POST https://api.territas.com/v1/underwrite \
  -H "X-API-Key: $TERRITAS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "address": "1600 Pennsylvania Ave NW, Washington, DC 20500",
    "purchase_price": 450000,
    "annual_rent": 42000,
    "annual_taxes": 6200,
    "annual_insurance_base": 1800
  }'

3. Read the response

You get one JSON object with every section of the survey. Here it’s trimmed to the fields you’ll reach for first — the flood zone and whether NFIP coverage is mandated:

200 OK
{
  "query": { "address": "1600 Pennsylvania Ave NW, ...", "as_of": "2026-08-21", "version": "..." },
  "parcel": { "county_fips": "11001", "county_name": "District of Columbia", "census_tract": "..." },
  "elevation": { "elevation_ft": 24.6, "slope_pct": 1.2, "source": "USGS 3DEP" },
  "flood": {
    "fema_zone": "X",
    "risk_label": "Minimal",
    "bfe_ft": null,
    "panel_id": "1100010018C",
    "source": "FEMA NFHL"
  },
  "flood_insurance_requirement": {
    "required": false,
    "sfha": false,
    "citation": "42 U.S.C. § 4012a(b)",
    "source": "FEMA NFHL"
  },
  "financials_risk_adjusted": { "...": "risk-adjusted NOI and the assumptions behind it" },
  "audit": [ "..." ],
  "warnings": []
}

That’s the whole loop. From here, wire authentication into your app, or move a whole spreadsheet of addresses through Batch & CSV.