---
title: "Assessment position, appeal deadline, and filing guide"
method: POST
path: "/api/locus-assessment-position"
tags: ["data", "search", "real-estate", "property", "property-research", "due-diligence", "public-records", "x402", "property-tax", "assessment-appeal", "assessment-uniformity", "due-diligence", "category:economics"]
---

# Assessment position, appeal deadline, and filing guide

`POST /api/locus-assessment-position`

## Request

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

Same-roll assessment-uniformity percentile, state appeal-deadline rule, and local or state filing guide for an owner. Shows where the assessment sits among similar properties on the same roll, with deadline and filing steps. No dollar figure, value endorsement, or recommendation to appeal. npx @velinussage/locus-agent-skill add.

## Request body

- object: US street address, optionally a notice date and tax year. No dollar figure is accepted; Locus never authors, estimates, or endorses a value.
  - `address` string, required: US street address for the subject property.
  - `noticeDate` string, date: Optional ISO date (YYYY-MM-DD) the assessment notice was mailed; sharpens the appeal-deadline computation where the state's rule needs it.
  - `noticeYear` integer: Tax year of the assessment notice; defaults to the current year.
  - `radiusMeters` integer: Optional same-roll comparison radius; default 400m, max 1200m.

## Response `200`

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

- union: A `kind`-discriminated union: `assessment_position` (subject parcel facts, an assessment_uniformity section giving the subject's percentile position among same-class parcels on the cited roll, the state's appeal-deadline rule, and a local-or-state filing guide) for a substantive same-roll sample, or `assessment_position_diagnostic` (charged:false, still carrying the appeal window and filing guide when known) when the address is unresolved, the roll is unavailable, or the same-class sample is too small. Never a value, estimate, or a recommendation to appeal.
  - object
    - `kind` 'assessment_position', required
    - `generatedAt` string, required
    - `address` string, required
    - `subject` object, required
      - `parcelId` string
      - `siteAddress` string
      - `jurisdiction` object, required
        - `county` string
        - `municipality` string
        - `state` string
        - `unincorporated` boolean
      - `landUse` string
      - `landClass` string
      - `yearBuilt` number
      - `heatedAreaSqft` number
      - `acreage` number
      - `lastTransferDate` string
      - `assessedTotalUsd` object
        - `amountUsd` number, required
        - `citation` object, required
    - `summary` string, required
    - `uniformity` object, required
      - `sampleSize` integer, required
      - `sampleTruncated` boolean, required
      - `positionInSample` 'at_or_above_p75' | 'at_or_below_p25' | 'interior' | 'unranked', required
      - `positionLabel` string, required
      - `positionSampleSize` integer, required
      - `unrankedReason` string
      - `positionSummary` string, required
    - `appealWindow` object, required
    - `filingGuide` object
    - `workflowHandoff` object
    - `caveats` string[], required
    - `verifyNext` object[], required
      - `label` string, required
      - `url` string, required
    - `charged` true, required
  - object
    - `kind` 'assessment_position_diagnostic', required
    - `reason` 'address_unresolved' | 'roll_unavailable' | 'sample_not_substantive', required
    - `detail` string, required
    - `appealWindow` object
    - `filingGuide` object
    - `caveats` string[], required
    - `charged` false, 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)
