1. Address-only / minimum detached test
Postal code is required and included inside Address. Keep AptNum empty for non-condo.
Download OpenAPI YAML
Download Postman Collection
A single working production endpoint for residential valuation, rent AVM, rent comparables, FSA-level neighborhood median prices via the hpi object, value ranges, confidence, valuation provenance, cap-rate helper, liquidity, downside risk, forecast, and HPI-adjusted valuation inputs where supported by the account configuration.
The Unified API uses one endpoint and one API-key authentication pattern. This documentation focuses only on the working Unified API structure. Legacy forecast/off-market client pages and the broken interactive OpenAPI client are intentionally excluded.
| Item | Value | Notes |
|---|---|---|
| Base URL | https://api.gnowise.com | Production Unified API. |
| HTTP method | POST | Submit JSON request body. |
| Path | / | Root path. |
| Authentication | x-api-key: {YOUR_API_KEY} | Required request header. |
| Content type | application/json | Required. |
curl -X POST "https://api.gnowise.com" \
-H "Content-Type: application/json" \
-H "x-api-key: $GNOWISE_API_KEY" \
-d @examples/address-only.json
Enter your own API key, edit any default payload, and send one of the three supported test profiles. The live tester calls a same-origin Cloudflare Pages Function, which forwards the request server-to-server to the production Unified API. The API key is stored only in this browser if you choose to save it.
Download the ready-to-import collection with the same three default test requests. After importing, set the collection variable gnowise_api_key, then edit payload values as needed.
Postal code is required and included inside Address. Keep AptNum empty for non-condo.
Use the nested gateway shape. Postal code is required in attributes.PostalCode.
Use when a historical value/date is available. Postal code is required inside Address.
These same editable payloads are included in /examples, in the live tester above, and in the Postman collection. Use them first, verify the response, then change values.
The postal code is required and included in the Address string. Keep AptNum empty for non-condo properties.
{
"Address": "299 chaplin cres toronto m5p1b1",
"AptNum": "",
"PropertyType": "Detached",
"IsCondo": false
}
Use this enriched nested shape when attributes are known. Postal code is required in attributes.PostalCode. Numeric-looking values are shown as strings because this reflects the current gateway/client payload format.
{
"address": "299 chaplin cres",
"attributes": {
"City": "Toronto",
"PostalCode": "m5p1b1",
"NumBedrooms": "3",
"NumDens": "1",
"NumBathrooms": "2",
"NumParkingSpaces": "16",
"Pool": "Inground",
"BasementType": "Finished",
"NumKitchens": "2",
"PropertyType": "Detached",
"BuildingStyle": "3-Storey",
"RoomsArea": "1600",
"LotArea": "3300",
"Age": "51-99",
"AirConditioning": "Central Air",
"Sqft": null
},
"aptNum": "",
"isCondo": false,
"condition": 3
}
Use this when a known historical value and date are available and an HPI-adjusted pathway is appropriate. Postal code is required inside the Address string.
{
"Address": "299 chaplin cres toronto m5p1b1",
"AptNum": "",
"PropertyType": "Detached",
"IsCondo": false,
"HistValue": 1500000,
"HistValueDate": "2021-06-15",
"HistPropertyType": "Detached"
}
Address, AptNum, PropertyType, IsCondo, with the postal code inside Address. The enriched profile uses address, attributes, aptNum, isCondo, and condition, with the postal code in attributes.PostalCode.| Field | Type | Guidance |
|---|---|---|
Address | string | Full address string including city and postal code. Postal code is required. |
AptNum | string | Empty string for non-condo. Unit/suite number for condo flows. |
PropertyType | string | Residential property type. Example: Detached. |
IsCondo | boolean | false for detached/non-condo properties; true for condo/apartment. |
| Field path | Type | Guidance |
|---|---|---|
address | string | Street address string. City and postal code are supplied in attributes. |
attributes.City, attributes.PostalCode | string | City and required postal code. |
attributes.NumBedrooms, NumDens, NumBathrooms, NumParkingSpaces, NumKitchens | string/number | Room and parking counts. Strings are accepted in the documented test payload. |
attributes.PropertyType, BuildingStyle, Pool, BasementType, Age, AirConditioning | string | Categorical property attributes. |
attributes.RoomsArea, LotArea | string/number | Square feet. |
attributes.Sqft | string/number/null | Leave null unless your integration has a tested use case. |
aptNum, isCondo, condition | string/boolean/integer | Top-level fields for the enriched profile. |
Use the address-only profile plus HistValue, HistValueDate, and HistPropertyType. The Address string must include the postal code.
PropertyType: Detached, Semi-Detached, Att/Row/Twnhouse, Duplex, Triplex, Fourplex, Multiplex, Condo Apt, Condo Townhouse, Comm Element Condo.
Condition: 1 Major repairs required · 2 Repairs needed · 3 Well maintained/default · 4 Like new · 5 New.
Units: area fields are square feet; rent is monthly CAD; cap rate and growth rates are decimal proportions.
The response is returned under Report. Fields can be null or omitted depending on match quality, confidence, coverage, and account entitlements.
{
"Report": {
"gnowise_value": 1883000,
"value_low": 1750000,
"value_high": 2025000,
"valuation_source": "A",
"valuation_confidence": 0.91,
"gnowise_lease": 4400,
"lease_low": 4100,
"lease_high": 4700,
"lease_confidence": 0.88,
"gnowise_cap_rate": 0.028,
"liquidity_score": 0.68,
"risk_of_decline": 32,
"one_year_growth_rate": -0.04,
"two_year_growth_rate": 0.02,
"price_in_one_year": 1808000,
"price_in_two_years": 1920000,
"property_attributes": {},
"appr_attributes": {},
"hpi": {
"M5P_All_median_ci_width": null,
"M5P_Apartment_median_ci_width": 393562.0,
"M5P_Detached_median_ci_width": null,
"M5P_Row_median_ci_width": null,
"M5P_All_median_price": 690725.0,
"M5P_Row_median_price": null,
"M5P_Apartment_median_price": 1216046.0,
"M5P_Detached_median_price": null
},
"rent_comps": [],
"request_id": "req_01JABCXYZ"
}
}
| Field | Meaning |
|---|---|
gnowise_value, value_low, value_high | Current estimated value and range in CAD. |
valuation_source | A AVM, H HPI/index fallback, HA HPI-adjusted using historical input. |
valuation_confidence, lease_confidence | 0-1 confidence scores. |
gnowise_lease, lease_low, lease_high | Monthly rent estimate and range in CAD. |
gnowise_cap_rate | Decimal proportion. Example: 0.04 = 4%. |
liquidity_score | Numeric liquidity output when returned. Use account-specific scale/configuration. |
risk_of_decline | Downside risk score, commonly interpreted on a 0-100 scale when returned. |
one_year_growth_rate, two_year_growth_rate | Decimal proportions. Example: -0.04 = -4%. |
hpi | FSA-level neighborhood median price and median CI-width fields related to the subject postal code. Example keys: M5P_All_median_price, M5P_Apartment_median_price, M5P_Apartment_median_ci_width. |
rent_comps | Rent comparable evidence when enabled and available. Structure may vary by entitlement/configuration; preserve returned fields. |
The Unified API can return entitlement-aware supporting sections such as rent comparables and FSA-level median prices.
| Section | Meaning | Guidance |
|---|---|---|
hpi | Neighborhood/FSA median price fields for the postal code related to the subject address. Keys commonly follow {FSA}_{Segment}_median_price and {FSA}_{Segment}_median_ci_width. | Use as local context and benchmark data only; not as the subject property AVM. Missing segment metrics may be returned as null or NaN depending on serialization. |
rent_comps | Rent comparable evidence when the account is entitled and comparable rental evidence is available. | Use to support/explain gnowise_lease. Preserve returned fields because comparable record shape may vary by configuration. |
A successful API response is not automatically a displayable value. Enterprise clients should apply confidence, source, condo/unit, and commercial policy gates before showing values to users.
valuation_source = A: property-level AVM pathway.valuation_source = HA: historical/HPI-adjusted pathway; label accordingly.valuation_source = H: index/fallback pathway; treat as less property-specific.valuation_confidence >= 0.85, unless the contract specifies another threshold.| Code | Meaning | Action |
|---|---|---|
| 200 | Successful response | Parse Report and apply display rules. |
| 400 | Malformed JSON, missing required field, missing postal code, or invalid values | Fix payload and field casing. |
| 401 | Missing/invalid x-api-key | Check credentials and environment. |
| 404 | Address not matched or insufficient supported data | Verify address and add attributes. |
| 429 | Rate limit exceeded | Respect Retry-After if provided and use exponential backoff. |
| 5xx | Transient server error | Retry with exponential backoff. Do not aggressively retry failed requests. |
request_id, status, and internal correlation IDs; avoid logging unnecessary personal information.openapi.yaml - OpenAPI 3.0.3 contract for the Unified endpoint only.examples/address-only.json - minimum detached/address test payload.examples/address-and-attributes.json - enriched nested attribute test payload.examples/hpi-adjusted.json - historical/HPI-adjusted test payload.postman/Gnowise_Unified_API.postman_collection.json - downloadable three-request Postman collection.gnowise_api_key.