---
title: "Full cited public-record property report"
method: POST
path: "/api/locus-place-report"
tags: ["data", "search", "real-estate", "property", "property-research", "due-diligence", "public-records", "x402", "property-records", "parcel-research", "address", "zoning", "flood", "property-tax", "government", "citations", "category:reports"]
---

# Full cited public-record property report

`POST /api/locus-place-report`

## Request

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

Public-record report for a street address or ZIP after free preflight. After settlement or seller-escrow, locus_parcel_financials may show the cited assessor owner-of-record for the same exact parcel, not a contact. Canonical storage remains owner-free; no valuation or screening. npx @velinussage/locus-agent-skill add.

## Request body

- union: Street address or ZIP to analyze. Either address or zip is required; radius defaults to 800 meters.
  - object
    - `address` string, required: Flexible US location string: full street address preferred for parcel-level reports, e.g. '200 Fayetteville St, Raleigh, NC 27601'.
    - `zip` string: US ZIP code when a street address is not available, e.g. '27601'.
    - `latitude` number
    - `longitude` number
    - `jurisdiction` 'chicago' | 'raleigh'
    - `radiusMeters` number
    - `lookbackDays` integer
    - `records` object[]
      - `id` string, required
      - `category` 'incident' | 'arrest' | 'court' | 'parcel' | 'rental_registry' | 'code_enforcement_request' | 'code_violation' | 'permit' | 'service_request', required
      - `title` string, required
      - `occurredAt` string
      - `distanceMeters` number
      - `distanceBucket` string
      - `locationPrecision` 'exact' | 'block' | 'area' | 'unknown', required
      - `status` string
      - `description` string
      - `tags` string[], required
      - `categories` string[]
      - `source` object, required
        - `sourceName` string, required
        - `sourceUrl` string, uri
        - `recordId` string
        - `recordUrl` string, uri
        - `fetchedAt` string
        - `licenseNote` string
    - `sourceAdapters` string[]
    - `mode` 'reasoning' | 'adapters-only'
    - `reportPrefs` object: Reader-selected goal, project, decision stage, focus areas, and questions. Preserved with the cited report as its investigation brief.
      - `goal` string
      - `projectType` string
      - `decisionStage` string
      - `focusAreas` string[]
      - `questions` string[]
    - `reportType` 'site_feasibility' | 'property_due_diligence' | 'pre_development_analysis': Job-first framing for the human report. Changes presentation and priorities, not the underlying cited facts.
  - object
    - `address` string: Flexible US location string: full street address preferred for parcel-level reports, e.g. '200 Fayetteville St, Raleigh, NC 27601'.
    - `zip` string, required: US ZIP code when a street address is not available, e.g. '27601'.
    - `latitude` number
    - `longitude` number
    - `jurisdiction` 'chicago' | 'raleigh'
    - `radiusMeters` number
    - `lookbackDays` integer
    - `records` object[]
      - `id` string, required
      - `category` 'incident' | 'arrest' | 'court' | 'parcel' | 'rental_registry' | 'code_enforcement_request' | 'code_violation' | 'permit' | 'service_request', required
      - `title` string, required
      - `occurredAt` string
      - `distanceMeters` number
      - `distanceBucket` string
      - `locationPrecision` 'exact' | 'block' | 'area' | 'unknown', required
      - `status` string
      - `description` string
      - `tags` string[], required
      - `categories` string[]
      - `source` object, required
        - `sourceName` string, required
        - `sourceUrl` string, uri
        - `recordId` string
        - `recordUrl` string, uri
        - `fetchedAt` string
        - `licenseNote` string
    - `sourceAdapters` string[]
    - `mode` 'reasoning' | 'adapters-only'
    - `reportPrefs` object: Reader-selected goal, project, decision stage, focus areas, and questions. Preserved with the cited report as its investigation brief.
      - `goal` string
      - `projectType` string
      - `decisionStage` string
      - `focusAreas` string[]
      - `questions` string[]
    - `reportType` 'site_feasibility' | 'property_due_diligence' | 'pre_development_analysis': Job-first framing for the human report. Changes presentation and priorities, not the underlying cited facts.

## Response `200`

Successful paid artifact, or a free pre-charge diagnostic when the request is outside current coverage. Place-report JSON can be large (often 100KB+). Successful x402 responses may also include X-Locus-Report-Id, X-Locus-Report-Url, and X-Locus-Report-Artifact-Url headers. Recover metadata with GET /api/reports?settlementTx=<hash> or fetch the full artifact from the artifact URL.

- union: A `kind`-discriminated union: a cited public-record LocusReport (no kind field; has id/records/caveats) for paid coverage, or `place_report_coverage_diagnostic` for the free pre-charge diagnostic.
  - object
    - `id` string, required
    - `generatedAt` string, required
    - `query` object, required
      - `address` string
      - `zip` string
      - `radiusMeters` number, required
      - `lookbackDays` number, required
      - `requestedAt` string, required
      - `focus` string[]
    - `summary` string, required
    - `recordCounts` object, required
    - `signals` unknown[], required
      - unknown
    - `sections` unknown[], required
      - unknown
    - `records` object[], required
      - `id` string, required
      - `category` 'incident' | 'arrest' | 'court' | 'parcel' | 'rental_registry' | 'code_enforcement_request' | 'code_violation' | 'permit' | 'service_request', required
      - `title` string, required
      - `occurredAt` string
      - `distanceMeters` number
      - `distanceBucket` string
      - `locationPrecision` 'exact' | 'block' | 'area' | 'unknown', required
      - `status` string
      - `description` string
      - `tags` string[], required
      - `categories` string[]
      - `source` object, required
        - `sourceName` string, required
        - `sourceUrl` string, uri
        - `recordId` string
        - `recordUrl` string, uri
        - `fetchedAt` string
        - `licenseNote` string
        - `biasProfile` object
          - `measures` string, required
          - `doesNotMeasure` string, required
          - `knownBiases` string[], required
          - `lagDays` integer
    - `caveats` string[], required
    - `composeStatus` 'ok' | 'degraded'
    - `storage` object[]
      - `provider` string, required
      - `locator` string, required
      - `contentHash` string, required
      - `pinned` boolean
    - `visual` union
      - object
        - `kind` 'annotated_aerial', required
        - `image` object, required
          - `provider` 'r2', required
          - `objectKey` string, required
          - `mediaType` 'image/svg+xml', required
          - `width` 960, required
          - `height` 540, required
          - `contentHash` string, required
        - `aerial` object, required
          - `sourceName` 'USGS The National Map - USGSNAIPPlus', required
          - `sourceUrl` string, uri, required
          - `serviceUrl` string, uri, required
          - `rasterObjectId` integer
          - `contributingRasterObjectIds` integer[]
          - `rasterId` string, required
          - `acquiredAt` string, date-time, required
          - `resolutionMeters` number, required
          - `fetchedAt` string, date-time, required
          - `licenseNote` 'Public domain USGS/USDA NAIP orthoimagery', required
        - `scope` 'parcel'
        - `parcel` object, required
          - `sourceName` string, required
          - `sourceUrl` string, uri, required
          - `sourceRecordId` string
          - `fetchedAt` string, date-time, required
          - `matchedSourceId` string, required
          - `boundaryKind` 'tax_parcel_non_survey', required
          - `geometryHash` string, required
          - `vertexCount` integer, required
        - `annotations` object[], required
          - `kind` 'parcel_outline' | 'flood_context' | 'wetland_context', required
          - `label` string, required
          - `sourceName` string, required
          - `sourceUrl` string, uri, required
          - `fetchedAt` string, date-time, required
          - `sourceRecordId` string
        - `caveats` unknown[], required
          - unknown
      - object
        - `kind` 'annotated_aerial', required
        - `image` object, required
          - `provider` 'r2', required
          - `objectKey` string, required
          - `mediaType` 'image/svg+xml', required
          - `width` 960, required
          - `height` 540, required
          - `contentHash` string, required
        - `aerial` object, required
          - `sourceName` 'USGS The National Map - USGSNAIPPlus', required
          - `sourceUrl` string, uri, required
          - `serviceUrl` string, uri, required
          - `rasterObjectId` integer
          - `contributingRasterObjectIds` integer[]
          - `rasterId` string, required
          - `acquiredAt` string, date-time, required
          - `resolutionMeters` number, required
          - `fetchedAt` string, date-time, required
          - `licenseNote` 'Public domain USGS/USDA NAIP orthoimagery', required
        - `scope` 'analysis_area', required
        - `analysisArea` object, required
          - `centerSource` 'parcel_centroid' | 'server_resolved_point' | 'place_facts_point' | 'approximate_geocode', required
          - `centerPrecision` 'parcel' | 'address' | 'area', required
          - `centerSourceRef` 'paid_access_preflight' | 'locus_parcel_financials' | 'locus_place_facts' | 'locus_place_facts.parcel', required
          - `centerRecordedAt` string, date-time, required
          - `radiusMeters` number, required
          - `requestedRadiusMeters` number, required
          - `boundaryKind` 'analysis_radius_non_parcel', required
        - `annotations` object[], required
          - `kind` 'flood_context' | 'wetland_context', required
          - `label` string, required
          - `sourceName` string, required
          - `sourceUrl` string, uri, required
          - `fetchedAt` string, date-time, required
          - `sourceRecordId` string
        - `caveats` unknown[], required
          - unknown
    - `visualStatus` union
      - object
        - `status` 'available', required
      - object
        - `status` 'unavailable', required
        - `reason` 'parcel_unavailable' | 'parcel_geometry_unavailable' | 'analysis_point_unavailable' | 'imagery_unavailable' | 'artifact_storage_unavailable', required
    - `liveAerialView` object
      - `provider` 'google_aerial_view', required
      - `videoId` string, required
      - `state` 'ACTIVE' | 'PROCESSING', required
      - `captureDate` object
        - `year` integer, required
        - `month` integer
        - `day` integer
      - `durationSeconds` number
      - `checkedAt` string, date-time, required
      - `displayMode` 'live_only', required
      - `playbackPolicy` 'lookup_per_view_no_storage', required
      - `attribution` 'Google Maps', required
      - `policyUrl` 'https://developers.google.com/maps/documentation/aerial-view/policies', required
      - `termsUrl` string, uri, required
      - `privacyUrl` string, uri, required
    - `supportingContext` object
      - `schemaVersion` '1', required
      - `researchedAt` string, required
      - `facts` union[], required
        - union
          - object
            - `id` string, required
            - `state` 'candidate' | 'verified' | 'conflict' | 'rejected', required
            - `source` object, required
              - …
            - `verifierVersion` string, required
            - `supersedesFactIds` string[]
            - `conflictsWithFactIds` string[]
            - `kind` 'property_physical_comparison', required
            - `subject` object, required
              - …
            - `nearby` object[], required
              - …
          - object
            - `id` string, required
            - `state` 'candidate' | 'verified' | 'conflict' | 'rejected', required
            - `source` object, required
              - …
            - `verifierVersion` string, required
            - `supersedesFactIds` string[]
            - `conflictsWithFactIds` string[]
            - `kind` 'property_sale_market_timeline', required
            - `addressLabel` string, required
            - `recordId` string
            - `listedDate` string, required
            - `listPriceUsd` number, required
            - `pendingDate` string
            - `saleDate` string, required
            - `salePriceUsd` number, required
            - `mlsId` string
            - `marketSources` object[], required
              - …
          - object
            - `id` string, required
            - `state` 'candidate' | 'verified' | 'conflict' | 'rejected', required
            - `source` object, required
              - …
            - `verifierVersion` string, required
            - `supersedesFactIds` string[]
            - `conflictsWithFactIds` string[]
            - `kind` 'transportation_project_status', required
            - `projectId` string, required
            - `edition` string
            - `currentStatus` string, required
            - `scopeMiles` number
            - `totalEstimateUsd` number
            - `earlierSchedule` object
              - …
          - object
            - `id` string, required
            - `state` 'candidate' | 'verified' | 'conflict' | 'rejected', required
            - `source` object, required
              - …
            - `verifierVersion` string, required
            - `supersedesFactIds` string[]
            - `conflictsWithFactIds` string[]
            - `kind` 'development_case_milestone', required
            - `caseId` string, required
            - `projectName` string, required
            - `parcelCount` integer
            - `hearingDates` string[]
            - `continuedTo` string
            - `roads` string[]
      - `excluded` string[], required
    - `highlights` unknown[]
      - unknown
    - `queriedAddress` string
    - `index` unknown
    - `access` unknown
    - `reportType` string
    - `reportPrefs` unknown
    - `placeFacts` object[]
      - `tool` string, required
      - `result` object, required
        - `ownerOfRecord` string
        - `ownerOfRecordCitation` object
          - `sourceUrl` string, required
          - `fetchedAt` string, required
          - `sourceName` string
          - `recordId` string
        - `parcel` object
          - `ownerOfRecord` string
          - `ownerOfRecordCitation` object
            - `sourceUrl` string, required
            - `fetchedAt` string, required
            - `sourceName` string
            - `recordId` string
        - `summary` string
  - object
    - `kind` 'place_report_coverage_diagnostic', required
    - `place` object, required
      - `input` string, required
      - `resolved` string
      - `jurisdictionId` string
      - `coverageStatus` 'unsupported' | 'discovery_only', required
    - `charged` false, required
    - `message` string, required
    - `candidateSources` object[], required
      - `category` string, required
      - `sourceName` string, required
      - `sourceUrl` string, required
      - `status` string, required
    - `whatWeWouldNeed` string[], required
    - `caveats` 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)
