Skip to content

API reference

Read endpoints are public; write and trigger endpoints require WRITE_SECRET. Responses stamp model_version, and accuracy is published at /methodology/accuracy.

Spec version p5s12-2026.07 · endpoint table generated 2026-07-16 frompackages/spec/openapi.yaml · base URL https://api.plantedmoney.ai

MethodPathSummary
GET/api/healthService + data freshness (+ envelope; no-store)
GET/api/tracts/{metro}All tract metrics for a metro (daily-cached layer)
GET/api/tract/{geoid}Labeled single-tract report (alias of the MCP get_tract_report; daily-cached)
GET/api/map-pinsCompressed map pins in a bbox; server-side grid clusters above ~400 pins
GET/api/parcelsBaked parcel drill in a bbox — curated top-scoring Cook 2-4 flats + Lake SFH (screens, not valuations)
GET/api/listings/{metro}Active scored listings — top-200 (default) OR bbox+filters+keyset pagination (additive)
GET/api/propertyConsumer valuation for an address or lat/lon (Census geocoder primary, Nominatim fallback; one call powers the property page)
GET/api/property/{id}Consumer valuation by listing id (same contract as /api/property; off_market=false)
GET/api/comps/{id_or_latlon}Comps engine (tiered ARV + full explainability) by listing id or "lat,lon
GET/api/underwriteUnderwrite a property; exact economics only when valuation evidence supports a point
GET/api/property-historySubject sales + permits as compressed events (cached 1h)
GET/api/photoStreet View photo proxy (V3-4.12) — key stays server-side; optional R2 cache
GET/api/tiles/tracts.pmtilesArea-lens tract geometry as a PMTiles vector-tile archive (V3-4.11)
GET/api/viewport-contextAgent map context — bounds + visible properties + tract summary (≤40KB)
GET/api/og/{listing_id}.svgWorker-generated social card (SVG; brand colors inline, no external fonts)
GET/api/searchAddress search limited to Cook + Lake County (Census geocoder primary [public domain, purpose-built for programmatic use], Nominatim fallback; returns a bare array)
GET/api/metrics/scorecardPublished current-model accuracy scorecard (+ envelope)
GET/api/model-registryPublished champion model release, artifact digest, rollback pointer and gate summary
GET/api/admin/model-registryFull model releases, aliases and promotion audit (WRITE_SECRET)
POST/api/admin/model-registryRegister a candidate, promote a gated release, or roll back atomically (WRITE_SECRET)
POST/api/analytics/eventsConsent-only first-party beta journey events (closed coarse taxonomy; no cookies or property/search identifiers)
DELETE/api/analytics/eventsWithdraw consent and delete raw events for the supplied tab-session
GET/api/admin/analyticsPrivacy-safe beta funnel and operational aggregates (WRITE_SECRET; raw window max 30 days)
GET/api/mcp-toolsMCP tool catalog (v2 manifest + deprecations + scopes)
GET/api/openapi.jsonThis spec as application/json (converted artifact)
GET/api/openapi.yamlThis spec as YAML
GET/api/spec/{doc}.jsonMachine contracts (valuation-contract | scoring-contract | constants-registry | error-taxonomy)
GET/api/report-issueList newest 100 value reports (WRITE_SECRET)
POST/api/report-issueFile a value/data report (public, 5/hr per IP)
GET/api/admin/consistencyStored-vs-live per-strategy score drift audit (WRITE_SECRET; nightly)
POST/api/keysIssue an API key (WRITE_SECRET-gated; plaintext returned once)
GET/api/eventsReal-time sync stream (SSE, text/event-stream) since a cursor
GET/api/me/{collection}Server-side state (saved|profiles|presets|notes) — read
POST/api/me/{collection}Upsert a state item (scope write-state) — appends a sync event
DELETE/api/me/{collection}Delete a state item (scope write-state)
POST/api/me/import-localMerge a localStorage dump {saved[],profiles[],presets[],notes[]} (scope write-state)
GET/api/statePersonal UI state (WRITE_SECRET)
PUT/api/statePersonal UI state (WRITE_SECRET)
GET/api/dealsDeal ledger (WRITE_SECRET)
POST/api/dealsDeal ledger upsert (WRITE_SECRET)
GET/api/run-listingsTrigger a listings run (WRITE_SECRET; modes daily|sweep|rescore)
POST/mcpMCP server (streamable HTTP JSON-RPC). Keyless read beta (30/min/IP) or Bearer pm_/pmt_ for scopes + per-key limits.
GET/mcp/v2/manifestVersioned MCP tool manifest (tools, versions, deprecations, changelog pointer)

Interactive explorer

Loading the interactive API explorer…