API reference

Outcome analytics

Read rights-gated authority analytics with verified coverage, complete outcome splits, sample sizes and field-quality measures.

GET/public/analytics-snapshot

Returns the public release state and, only after an authority passes the backend gate, its aggregate analytics.

ParameterTypeRequiredDescription
authoritystringNoReleased authority ID or name. Defaults to the first released authority.
periodenumNo1, 3, 5, 10 or all years. Defaults to 5.
scalestringNoExact released application scale/category value.
categorystringNoOne or more comma-separated proposal subtype values.
routestringNoExact released application route/type value.

Awaiting-rights response

{
  "schemaVersion": 2,
  "releaseState": "awaiting_rights_clearance",
  "authority": null,
  "availableAuthorities": [],
  "summary": {
    "eligibleAuthorities": 0,
    "eligibleApplications": 0,
    "minimumDeterminedSample": 30
  }
}

Released authority shape

A released response includes verified continuous coverage, source-check and analytics-refresh timestamps, total and determined applications, the full outcome split, decision-time distributions, monthly and yearly trends, proposal groups and field-level quality rates. Every percentage carries its numerator and denominator.

{
  "releaseState": "authority_available",
  "authority": {
    "coverage": {
      "verifiedStart": "1990-01-01",
      "verifiedEnd": null,
      "earlierIsolatedRecords": 1
    },
    "outcomes": {
      "approved": 0,
      "refused": 0,
      "withdrawn": 0,
      "other": 0,
      "undetermined": 0
    },
    "rates": {
      "approval": { "numerator": 0, "denominator": 0, "percent": null }
    },
    "timing": {
      "decidedOnTime": { "numerator": 0, "denominator": 0, "percent": null }
    }
  }
}
GET/analytics/outcomes

Returns historical outcome patterns and confidence-scored related-submission signals from API-cleared records.

ParameterTypeRequiredDescription
councilstringNoAuthority name, code or slug.
postcodestringNoA full UK postcode.
postcode_sectorstringNoA postcode sector such as YO1 7.
date_fromdateNoApplication-date lower bound in YYYY-MM-DD format.
date_todateNoApplication-date upper bound in YYYY-MM-DD format.
group_byenumNoproposal_subtype, application_type or category; defaults to proposal_subtype.
min_sampleintegerNoDetermined cases required before showing a rate; defaults to 30, minimum 3.
limitintegerNoPattern groups returned; defaults to 20 and cannot exceed 100.

Historical proposal patterns for one authority

GET /analytics/outcomes?council=city-of-york-council&group_by=proposal_subtype&date_from=2022-01-01&min_sample=30

Illustrative pattern response shape

{
  "data": [{
    "key": "rear_extension",
    "label": "Rear extension",
    "sample": {
      "total": 146,
      "determined": 132,
      "approved": 103,
      "refused": 29,
      "withdrawn": 6,
      "invalid": 2,
      "pending": 6,
      "other": 0
    },
    "approvalRatePercent": 78,
    "approvalRateConfidence95": {
      "lowerPercent": 70.2,
      "upperPercent": 84.2
    },
    "medianDecisionDays": 58,
    "historicalPattern": "more_often_approved",
    "evidenceStrength": "strong"
  }],
  "relatedSubmissionSignals": {
    "likelyCount": 4,
    "possibleCount": 2,
    "matches": [],
    "caveat": "These are related-submission signals, not confirmed legal resubmissions."
  }
}

How related submissions are detected

Records at the same normalised address are compared within a four-year window. Proposal subtype, application type and wording similarity contribute to a confidence score. HomeRadar reports likely or possible related submissions, never a confirmed resubmission unless a future source explicitly publishes that relationship.