---
title: "Residential rent estimate with HUD FMR anchor"
method: POST
path: "/api/locus-rent-estimate"
tags: ["rents", "rental", "property", "residential", "real-estate", "hud-fmr", "rentcast", "x402", "category:economics"]
---

# Residential rent estimate with HUD FMR anchor

`POST /api/locus-rent-estimate`

## Request

- Base URL: `https://api.locus.report`
- URL: `https://api.locus.report/api/locus-rent-estimate`
- Auth: one of:
  - API key in header `PAYMENT-SIGNATURE`
  - API key in header `Authorization`

RentCast residential rent estimate, range, and comparable count for one US address, plus HUD Fair Market Rent area anchor when available. For buyer or owner rent context. Not a Locus valuation or rent prediction; commercial or uncovered results are charge-free. npx @velinussage/locus-agent-skill add.

## Request body

- object: US RESIDENTIAL street address. Returns RentCast long-term rent estimate + range + comparable count, plus HUD Fair Market Rent area anchor when available. Commercial/uncovered addresses return a free charge-suppressed diagnostic.
  - `address` string, required: US RESIDENTIAL street address. Returns RentCast long-term rent estimate, range, comparable count, and a HUD FMR area anchor.

## Response `200`

Successful paid artifact, or a free pre-charge diagnostic when the request is outside current coverage.

- union: A `kind`-discriminated union: `rent_estimate` (RentCast third-party long-term rent estimate, range, comparable count, and HUD FMR anchor) for a residential hit, or `rent_estimate_diagnostic` (charged:false) for a miss/commercial/uncovered address.
  - object
    - `kind` 'rent_estimate', required
    - `source` 'RentCast', required
    - `rentEstimate` number, required
    - `rentRangeLow` number
    - `rentRangeHigh` number
    - `comparableCount` integer, required
    - `subjectProperty` object
    - `hudFmrAnchor` object
      - `configured` boolean, required
      - `zipCode` string
      - `bedroomCount` number
      - `rentUsd` number
      - `label` string, required
      - `provenance` object, required
      - `reason` string
    - `citation` string, required
    - `fetchedAt` string
    - `servedFromCache` boolean, required
    - `caveats` string[], required
  - object
    - `kind` 'rent_estimate_diagnostic', required
    - `charged` false, required
    - `ok` true, required
    - `residentialOnly` true, required
    - `reason` string, required
    - `note` string, required

## Other responses

- `400`: Invalid request body.
- `402`: Payment Required. For x402 v2, repeat the identical request with a valid PAYMENT-SIGNATURE header (legacy X-PAYMENT is accepted for compatibility), or use Authorization: Payment for MPP Tempo when advertised in x-payment-info.offers.

---

[API](https://skmtc.dev/locus/apis/locus-api.md) · [All operations](https://skmtc.dev/locus/apis/locus-api/llms.txt) · [OpenAPI document](https://skmtc.dev/locus/apis/locus-api/revisions/ba7786b74adb?raw)
