> ## Documentation Index
> Fetch the complete documentation index at: https://developers.apartmentiq.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Product updates and release notes for the ApartmentIQ API V1.

<Update label="May 27, 2026" description="v1.14.0">
  Updated the API documentation to match current rate limit, error, and bulk property details behavior.

  * Documented rate limit response headers and retry guidance without publishing fixed limits
  * Added the Property Lookup access requirement note
  * Updated Bulk Property Details and Search Properties access and quota notes
  * Clarified JSON, plain text, and empty-body error responses
</Update>

<Update label="May 24, 2026" description="v1.13.0">
  The Property Lookup (`GET /properties/lookup`) endpoint now supports filtering by property URL.

  * Added `property_url` query parameter (partial match supported)
</Update>

<Update label="May 12, 2026" description="v1.12.0">
  The Compare Markets (`POST /explore_markets`) response no longer includes `absorption_rate_avg_t30`.
</Update>

<Update label="May 8, 2026" description="v1.9.0, v1.11.0">
  Updated authentication docs and OpenAPI schema to accurately reflect the OAuth token flow.

  * Removed incorrect JWT references from the auth page and OpenAPI security scheme
  * Fixed token response example to match the actual API response (opaque token, correct casing, added `scope` and `created_at` fields)
  * Documented `application/json` as an alternative content type for the token endpoint
  * Simplified the OpenAPI security configuration to a single `oauth2` scheme
  * Updated Try It panel description to match the bearer token input UX

  New endpoint for listing the ApartmentIQ accounts accessible to the authenticated user. Use the returned account IDs as the `account_id` parameter when calling other endpoints.

  * Accounts
    * List Accounts: `GET /accounts` - Retrieve a paginated list of accounts with their ID and name
    * Supports pagination via `page` and `per_page` query parameters (default 50 per page, max 100)
</Update>

<Update label="May 6, 2026" description="v1.10.0">
  The Geo Boundary Forecasts (`POST /geo_boundary/{geo_boundary_id}/forecasts`) and Property Forecasts (`POST /properties/{property_id}/forecasts`) endpoints now support `use_rent_value`.

  * Set `use_rent_value: true` to return rent-growth aggregations as seasonally adjusted forecasted rent values in dollars
  * Aggregation keys stay the same as the `name` values you provide in the request
  * Non-rent-growth aggregations, such as occupancy, absorption, and deliveries, are unchanged
</Update>

<Update label="March 26, 2026" description="v1.8.0">
  New endpoint for retrieving market narratives for geographic boundaries. Narratives provide structured analysis across six key areas: market overview, rent performance, occupancy and demand, construction pipeline, sales transactions, and demographics.

  * Markets
    * Market Narratives: `GET /markets/narratives` - Retrieve the most recent narrative for a geo boundary
  * Narratives are only available for MSA and Submarket geo boundary types
  * The `sales` section is truncated for accounts without Explore Pro+ access
  * Requires Explore access
</Update>

<Update label="March 19, 2026" description="v1.7.0">
  The Search Properties (`POST /geo_boundaries/properties`) and Bulk Property Details (`GET /properties/bulk_details`) endpoints now include `market_name` and `submarket_name` in each property's attributes, so you no longer need a separate call to the Search Geo Boundaries endpoint to resolve boundary names.

  * Added: `market_name` - Display name of the market-level geographic boundary (MSA) the property belongs to
  * Added: `submarket_name` - Display name of the submarket-level geographic boundary the property belongs to
</Update>

<Update label="March 18, 2026" description="v1.6.0">
  New endpoints for retrieving modeled future time-series forecast data, powered by ApartmentIQ's proprietary forecasting models. Requires Explore Pro access.

  * Forecasts
    * Geo Boundary Forecasts: `POST /geo_boundary/{geo_boundary_id}/forecasts` - Retrieve forecast time-series data for a geographic boundary (MSA, submarket, etc.)
    * Property Forecasts: `POST /properties/{property_id}/forecasts` - Retrieve forecast time-series data for a specific property
  * Configurable aggregations: `avg`, `median`, `sum`, `max`, `min`
  * Time intervals: `month`, `quarter`, or `year`
  * Forecast window: current month through 5 years out
  * Includes confidence bounds (downside/upside variants) for all forecast metrics
</Update>

<Update label="March 17, 2026" description="v1.5.0">
  New filter parameters to search and filter properties by loan maturity date and sales transaction data. Available on the Search Properties and Property Lookup endpoints.

  * Added `loan_maturity_date_gte` and `loan_maturity_date_lte` filter parameters
  * Added `transaction_cap_rate_gte` and `transaction_cap_rate_lte` filter parameters
  * Added `transaction_date_closed_gte` and `transaction_date_closed_lte` filter parameters
  * Added `transaction_price_per_unit_gte` and `transaction_price_per_unit_lte` filter parameters
</Update>

<Update label="March 16, 2026" description="v1.4.0">
  The Search Properties (`POST /geo_boundaries/properties`) and Bulk Property Details (`GET /properties/bulk_details`) endpoints now include `market_geo_boundary_id` and `submarket_geo_boundary_id` in each property's attributes. Use these IDs with the Search Geo Boundaries endpoint to look up boundary details.

  * Added: `market_geo_boundary_id` - ID of the market-level geographic boundary (MSA) the property belongs to
  * Added: `submarket_geo_boundary_id` - ID of the submarket-level geographic boundary the property belongs to
</Update>

<Update label="February 23, 2026" description="v1.3.0">
  The `construction_state` filter parameter has been removed from the Bulk Properties and Compare Markets endpoints. Use the new `unified_status` filter instead, which consolidates construction stage, implementation status, and lease-up into a single property lifecycle indicator.

  * Removed: `construction_state[]` filter parameter
  * Added: `unified_status[]` filter parameter with values: `stabilized`, `planning`, `scheduled_construction`, `under_construction`, `lease_up`
</Update>

<Update label="January 9, 2026" description="v1.2.0">
  New asynchronous batch job system for retrieving historical property data at scale, plus new property search capabilities.

  * Bulk Data Export
    * Create Batch Job: `POST /bulk_api/jobs` - Submit a request for property, units, or floorplans data
    * List Batch Jobs: `GET /bulk_api/jobs` - Retrieve a paginated list of all batch jobs
    * Get Batch Job Status: `GET /bulk_api/jobs/{job_id}` - Monitor job progress and check completion status
    * Cancel Batch Job: `DELETE /bulk_api/jobs/{job_id}` - Cancel a running or submitted job
    * Download Batch Job Results: `GET /bulk_api/jobs/{job_id}/results` - Download completed results in CSV, JSONL, or Parquet format

  * Markets
    * Property Lookup: `GET /properties/lookup` - Search for properties by location, coordinates, or attributes and return paginated property IDs
    * Bulk Property Details: `GET /properties/bulk_details` - Retrieve full property details for multiple properties by ID
</Update>

<Update label="November 25, 2025" description="v1.1.0">
  New endpoint for comparing aggregated market-level metrics across MSAs and submarkets.

  * Markets
    * Compare Markets: `POST /explore_markets` - Retrieve aggregated metrics for geographic areas including rent performance, inventory, demographics, and sales transaction data

  * Documentation
    * Added [Compare Markets](/v1/use-cases/compare-markets) use case guide
</Update>

<Update label="September 8, 2025" description="v1.0.0">
  Initial public documentation of the ApartmentIQ API.

  * Authentication: Bearer tokens via `Authorization` header

  * Base URL: `https://data.apartmentiq.io/apartmentiq/api/v1`

  * Market Surveys
    * List Competitive Sets: `GET /accounts/{account_id}/comp_sets`
    * Market Survey: `GET /comp_sets/{comp_set_id}/market_survey`
    * Units: `GET /comp_sets/{comp_set_id}/units`
    * Floorplans: `GET /comp_sets/{comp_set_id}/floor_plans`

  * Markets
    * Search Geo Boundaries: `POST /geo_boundaries/search`
    * Bulk Properties: `POST /geo_boundaries/properties`

  * Global
    * Security scheme: HTTP Bearer (JWT)
    * Rate limits return 429 when exceeded
</Update>
