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
| Method | Path | Summary |
|---|---|---|
GET | /api/health | Service + 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-pins | Compressed map pins in a bbox; server-side grid clusters above ~400 pins |
GET | /api/parcels | Baked 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/property | Consumer 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/underwrite | Underwrite a property; exact economics only when valuation evidence supports a point |
GET | /api/property-history | Subject sales + permits as compressed events (cached 1h) |
GET | /api/photo | Street View photo proxy (V3-4.12) — key stays server-side; optional R2 cache |
GET | /api/tiles/tracts.pmtiles | Area-lens tract geometry as a PMTiles vector-tile archive (V3-4.11) |
GET | /api/viewport-context | Agent map context — bounds + visible properties + tract summary (≤40KB) |
GET | /api/og/{listing_id}.svg | Worker-generated social card (SVG; brand colors inline, no external fonts) |
GET | /api/search | Address 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/scorecard | Published current-model accuracy scorecard (+ envelope) |
GET | /api/model-registry | Published champion model release, artifact digest, rollback pointer and gate summary |
GET | /api/admin/model-registry | Full model releases, aliases and promotion audit (WRITE_SECRET) |
POST | /api/admin/model-registry | Register a candidate, promote a gated release, or roll back atomically (WRITE_SECRET) |
POST | /api/analytics/events | Consent-only first-party beta journey events (closed coarse taxonomy; no cookies or property/search identifiers) |
DELETE | /api/analytics/events | Withdraw consent and delete raw events for the supplied tab-session |
GET | /api/admin/analytics | Privacy-safe beta funnel and operational aggregates (WRITE_SECRET; raw window max 30 days) |
GET | /api/mcp-tools | MCP tool catalog (v2 manifest + deprecations + scopes) |
GET | /api/openapi.json | This spec as application/json (converted artifact) |
GET | /api/openapi.yaml | This spec as YAML |
GET | /api/spec/{doc}.json | Machine contracts (valuation-contract | scoring-contract | constants-registry | error-taxonomy) |
GET | /api/report-issue | List newest 100 value reports (WRITE_SECRET) |
POST | /api/report-issue | File a value/data report (public, 5/hr per IP) |
GET | /api/admin/consistency | Stored-vs-live per-strategy score drift audit (WRITE_SECRET; nightly) |
POST | /api/keys | Issue an API key (WRITE_SECRET-gated; plaintext returned once) |
GET | /api/events | Real-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-local | Merge a localStorage dump {saved[],profiles[],presets[],notes[]} (scope write-state) |
GET | /api/state | Personal UI state (WRITE_SECRET) |
PUT | /api/state | Personal UI state (WRITE_SECRET) |
GET | /api/deals | Deal ledger (WRITE_SECRET) |
POST | /api/deals | Deal ledger upsert (WRITE_SECRET) |
GET | /api/run-listings | Trigger a listings run (WRITE_SECRET; modes daily|sweep|rescore) |
POST | /mcp | MCP server (streamable HTTP JSON-RPC). Keyless read beta (30/min/IP) or Bearer pm_/pmt_ for scopes + per-key limits. |
GET | /mcp/v2/manifest | Versioned MCP tool manifest (tools, versions, deprecations, changelog pointer) |
Interactive explorer
Loading the interactive API explorer…
