---
title: "Affordability Historical (Batch)"
method: POST
path: "/v2/state/affordability_ts_historical"
tags: ["State Level"]
---

# Affordability Historical (Batch)

`POST /v2/state/affordability_ts_historical`

Historical time series data of monthly affordability values for States with coverage dating back to 1975, offering valuable insights into past market trends and performance. Higher values imply lower affordability. 

Source: HouseCanary 

Pricing Tier: Basic 

Updated: Monthly

## Request Query Params

<table><tr><th>Property</th><th>Type</th><th>Description</th><th>Example</th><th>Enum Values</th></tr>
<tr><td>order</td><td>string</td><td>Chronological order to sort result items. One of [asc or desc]. Defaults to asc.</td><td>asc</td>
        <td>[asc, desc]</td></tr>
<tr><td>limit</td><td>integer</td><td>Maximum integer number of result items to return. Defaults to null.</td><td>10</td>
        <td></td></tr>
<tr><td>start</td><td>string</td><td>Beginning date limit for result items, based on month, in ISO 8601 format, i.e. 2015-01-01. Defaults to null.</td><td>2015-01-01</td>
        <td></td></tr>
<tr><td>end</td><td>string</td><td>Ending date limit for result items, based on month, in ISO 8601 format, i.e. 2015-01-01. Defaults to null.</td><td>2015-01-01</td>
        <td></td></tr>
</table>

## Request Body Fields

<table><tr><th>Field</th><th>Type</th><th>Description</th><th>Example</th></tr>
<tr><td>[]</td><td>object</td><td></td><td></td>
        </tr>
<tr><td>[].state</td><td>string</td><td>2-letter state abbreviation</td><td>CA</td>
        </tr>
</table>

## Response

<table><tr><th>Field</th><th>Type</th><th>Description</th><th>Example</th></tr>
<tr><td>time_series</td><td>array</td><td>Set of forecast affordability values</td><td></td>
        </tr>
<tr><td>time_series[]</td><td>object</td><td></td><td></td>
        </tr>
<tr><td>time_series[].month</td><td>string</td><td>Month of the affordability value</td><td>2023-08-01</td>
        </tr>
<tr><td>time_series[].afford_pmt</td><td>number</td><td>Fraction of median household income required to make the median home payment on a 30 year fixed rate mortgage with 20% down</td><td>0.283</td>
        </tr>
<tr><td>time_series[].afford_detrended</td><td>number</td><td>The normalized distance of afford_pmt from a long term linear trend. Units are in standard deviations from the mean.</td><td>0.21</td>
        </tr>
</table>

## Query parameters

- `order` 'asc' | 'desc', nullable
- `limit` integer, nullable
- `start` string, nullable
- `end` string, nullable

## Request body

- object[]
  - `state` string — 2-letter state abbreviation

## Response `200`

Success

- object[]
  - `state/affordability_ts_historical` object
    - `api_code_description` string
    - `api_code` unknown
    - `result` object, nullable
      - `time_series` object[] — Set of forecast affordability values
        - `month` string, date — Month of the affordability value
        - `afford_pmt` number — Fraction of median household income required to make the median home payment on a 30 year fixed rate mortgage with 20% down
        - `afford_detrended` number, nullable — The normalized distance of afford_pmt from a long term linear trend. Units are in standard deviations from the mean.
  - `state_info` StateInfo
    - `state` string — 2-letter state abbreviation

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `429` — Rate limit exceeded

---

[API](https://skmtc.net/housecanary/apis/housecanary-analytics-and-portfolio-monitoring-apis.md) · [All operations](https://skmtc.net/housecanary/apis/housecanary-analytics-and-portfolio-monitoring-apis/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/housecanary/housecanary-analytics-and-portfolio-monitoring-apis/revisions/38afb6724de7/schema)
