---
title: "Get evidence-backed property signals"
method: GET
path: "/api/v1/parcels/{id}/signals"
tags: ["Property Intelligence"]
---

# Get evidence-backed property signals

`GET /api/v1/parcels/{id}/signals`

## Request

- Base URL: `https://propraven.com`
- URL: `https://propraven.com/api/v1/parcels/{id}/signals`
- Auth: HTTP bearer

Requires API-key or first-party session authentication and a current account in the default-off server cohort. Valid current membership does not require a new paid subscription. Existing API quotas still apply. Responses are private, no-store. Unknown and repeated query parameters are rejected. This contract does not indicate source activation, deployment or an SDK release. Retained objects are scoped to the current account and their creator; no caller-supplied account/user grant is accepted. Current source rights are checked for every read/use, independently of archived grants. Assessment composition, where qualified, is not market value. Other groups remain explicitly unavailable without approved adapters. Exact values are numerator/denominator strings; historical runs exclude later-learned evidence.

## Path parameters

- `id` string, required

## Query parameters

- `as_of` string
- `knowledge_cutoff` string
- `use` 'display' | 'ai'

## Response `200`

Authorized result; unavailable/partial/stale states are explicit within the response. No live coverage is implied by this contract.

- IntelligenceRun: Immutable descriptive calculation run with exact rational wire values. Calculation time is not source freshness. Unknown values/dates remain null.
  - `id` string, required
  - `canonical_id` string, required
  - `definition_version` string, required
  - `query` object, required
    - `as_of` string, required
    - `knowledge_cutoff` string, required
  - `computed_at` string, required
  - `evidence_ids` string[], required
  - `groups` object, required
    - `market` object[], required
      - `definition` string, required
      - `status` 'available' | 'partial' | 'insufficient_data' | 'unavailable' | 'stale' | 'error', required
      - `reasons` string[], required
      - `metrics` object, required
      - `counts` object, required
      - `exclusions` object, required
      - `evidence_ids` string[], required
      - `context` object, required
        - `input_kind` 'observed' | 'user_assumptions' | 'unavailable', required
        - `requested_scope` object, nullable, required
          - `geography` string, required
          - `property_type` string, required
          - `currency` string, required
        - `actual_scope` object, nullable, required
          - `geography` string, required
          - `property_type` string, required
          - `currency` string, required
        - `query` object, nullable, required
          - `as_of` string, required
          - `knowledge_cutoff` string, required
        - `period` union, required
          - object
            - `kind` 'window', required
            - `window` object, required
              - …
          - object
            - `kind` 'snapshot', required
            - `at` string, required
          - object
            - `kind` 'comparison', required
            - `current` object, required
              - …
            - `previous` object, required
              - …
          - object
            - `kind` 'stock_flow', required
            - `snapshot_at` string, required
            - `flow` object, required
              - …
        - `metric_periods` object, required
        - `latest_observation_at` string, nullable, required
        - `source_as_of` string, nullable, required
        - `source_vintage` string, nullable, required
        - `history_complete` boolean, nullable, required
    - `seller` object[], required
      - `definition` string, required
      - `status` 'available' | 'partial' | 'insufficient_data' | 'unavailable' | 'stale' | 'error', required
      - `reasons` string[], required
      - `metrics` object, required
      - `counts` object, required
      - `exclusions` object, required
      - `evidence_ids` string[], required
      - `context` object, required
        - `input_kind` 'observed' | 'user_assumptions' | 'unavailable', required
        - `requested_scope` object, nullable, required
          - `geography` string, required
          - `property_type` string, required
          - `currency` string, required
        - `actual_scope` object, nullable, required
          - `geography` string, required
          - `property_type` string, required
          - `currency` string, required
        - `query` object, nullable, required
          - `as_of` string, required
          - `knowledge_cutoff` string, required
        - `period` union, required
          - object
            - `kind` 'window', required
            - `window` object, required
              - …
          - object
            - `kind` 'snapshot', required
            - `at` string, required
          - object
            - `kind` 'comparison', required
            - `current` object, required
              - …
            - `previous` object, required
              - …
          - object
            - `kind` 'stock_flow', required
            - `snapshot_at` string, required
            - `flow` object, required
              - …
        - `metric_periods` object, required
        - `latest_observation_at` string, nullable, required
        - `source_as_of` string, nullable, required
        - `source_vintage` string, nullable, required
        - `history_complete` boolean, nullable, required
    - `owner` object[], required
      - `definition` string, required
      - `status` 'available' | 'partial' | 'insufficient_data' | 'unavailable' | 'stale' | 'error', required
      - `reasons` string[], required
      - `metrics` object, required
      - `counts` object, required
      - `exclusions` object, required
      - `evidence_ids` string[], required
      - `context` object, required
        - `input_kind` 'observed' | 'user_assumptions' | 'unavailable', required
        - `requested_scope` object, nullable, required
          - `geography` string, required
          - `property_type` string, required
          - `currency` string, required
        - `actual_scope` object, nullable, required
          - `geography` string, required
          - `property_type` string, required
          - `currency` string, required
        - `query` object, nullable, required
          - `as_of` string, required
          - `knowledge_cutoff` string, required
        - `period` union, required
          - object
            - `kind` 'window', required
            - `window` object, required
              - …
          - object
            - `kind` 'snapshot', required
            - `at` string, required
          - object
            - `kind` 'comparison', required
            - `current` object, required
              - …
            - `previous` object, required
              - …
          - object
            - `kind` 'stock_flow', required
            - `snapshot_at` string, required
            - `flow` object, required
              - …
        - `metric_periods` object, required
        - `latest_observation_at` string, nullable, required
        - `source_as_of` string, nullable, required
        - `source_vintage` string, nullable, required
        - `history_complete` boolean, nullable, required
    - `redevelopment` object[], required
      - `definition` string, required
      - `status` 'available' | 'partial' | 'insufficient_data' | 'unavailable' | 'stale' | 'error', required
      - `reasons` string[], required
      - `metrics` object, required
      - `counts` object, required
      - `exclusions` object, required
      - `evidence_ids` string[], required
      - `context` object, required
        - `input_kind` 'observed' | 'user_assumptions' | 'unavailable', required
        - `requested_scope` object, nullable, required
          - `geography` string, required
          - `property_type` string, required
          - `currency` string, required
        - `actual_scope` object, nullable, required
          - `geography` string, required
          - `property_type` string, required
          - `currency` string, required
        - `query` object, nullable, required
          - `as_of` string, required
          - `knowledge_cutoff` string, required
        - `period` union, required
          - object
            - `kind` 'window', required
            - `window` object, required
              - …
          - object
            - `kind` 'snapshot', required
            - `at` string, required
          - object
            - `kind` 'comparison', required
            - `current` object, required
              - …
            - `previous` object, required
              - …
          - object
            - `kind` 'stock_flow', required
            - `snapshot_at` string, required
            - `flow` object, required
              - …
        - `metric_periods` object, required
        - `latest_observation_at` string, nullable, required
        - `source_as_of` string, nullable, required
        - `source_vintage` string, nullable, required
        - `history_complete` boolean, nullable, required

## Other responses

- `400`: Invalid, unknown or duplicate parameters; invalid time, source key or scenario assumptions.
- `401`: Authentication required, or supplied credential invalid. A rejected bearer does not fall back to a session.
- `402`: Existing API-key monthly quota exceeded; this feature adds no paid SKU.
- `403`: Current source rights do not permit the requested retained Intelligence use.
- `404`: Feature disabled, current account outside cohort, or requested retained object/parcel unavailable. Other creators' objects are not disclosed.
- `429`: Existing API or concurrent-request limit exceeded.
- `500`: Unexpected service failure; internal details are withheld.
- `504`: Database query timeout.

---

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