Cubi Estate Agent API
The Agent API from Cubi Estate — 98 operation(s) for agent.
Operations 102
POST
/agent/report-listing
Build + deliver a /report page for an existing corpus listing (no fetch)
#
GET
/agent/price-band/{listing_id}
Structured asking-price comparison for one corpus listing (MCP…
#
GET
/agent/price-history/{listing_id}
Every observed asking-price change for one listing (MCP get_price_history)
#
POST
/agent/similar-homes
Homes like one listing in its own market, by Cubi's similarity model (MCP…
#
POST
/agent/listing/view
Record that a user opened a listing's detail pane (§41 → detail_viewed signal)
#
POST
/agent/detail-action
Track a listing-detail deep-dive button tap (§54) → user_command_event; returns…
#
POST
/agent/turn-feedback
Record a turn-level 👍/👎 on an assistant reply (web thumbs → turn_feedback, mig…
#
DELETE
/agent/turn-feedback
Admin-only cleanup: purge turn_feedback rows for one user (optionally one turn)
#
POST
/agent/guest/session
Ensure a guest capability: the same one back while valid, refreshed under 30…
#
POST
/agent/guest/adopt
Option B §5a: move a legacy browser-minted guest's data into the server-issued…
#
POST
/agent/guest/claim
Move a guest identity's saved searches, favorites, signals and conversations…
#
POST
/agent/alert/subscribe
Opt in to be emailed when new listings match a search (mig 342; §42 baseline…
#
POST
/agent/expansion/subscribe
Opt in to be emailed IF Cubi expands to a country we don't cover (mig 366, §33d)
#
POST
/agent/expansion/unsubscribe
Leave the expansion waitlist for one country (or all) — mig 366, §33d
#
POST
/agent/brief
Submit a delegated-search brief (P0 concierge; shortlist by email, fulfilled by…
#
POST
/agent/web-session-event
Count one proxy-answered session_expired (the FE beacon). Counts only
#
POST
/agent/conversations/listing
Create (idempotently) a chat anchored to one listing — the 'Ask Cubi about this…
#
GET
/agent/listing/{listing_id}/others-asked
'What others have asked Cubi about this home' — topics other buyers raised…
#
GET
/agent/listing/{listing_id}/contact-options
The 'Ask CUBI about this home' contact-method menu for one listing ({text…
#
POST
/agent/listing-chat/event
Record an FE-side action in a listing-anchored chat (test-window tracking)
#
POST
/agent/conversation/{conv_id}/truncate
Delete a transcript suffix (Stop / Edit-and-re-ask) and fence out in-flight…
#
POST
/agent/contact-request
Two-step 'Contact' button: prompt buyer for DM consent, then record (Yes) or…
#
POST
/agent/ideas/submit
Confirm a prepared idea draft (creates the private idea, or adds your voice to…
#
POST
/agent/ideas/{public_id}/notify-prefs
Per-idea email opt-in/out for status changes (unticked by default)
#
POST
/agent/ideas/{public_id}/publish-consent
Grant or withdraw permission to announce this idea publicly when it ships
#
GET
/agent/ideas/notifications
In-app status notifications for the caller (newest first); returning them marks…
#
POST
/agent/ideas/research/run
Weekly pass: recompute the deterministic score for every open idea, then write…
#
POST
/agent/human-request
/human — record a support request for a person at Cubi (admin DM + localized…
#
POST
/agent/contact-lead
Capture a /contact deep-link message as a lead (contact_requests + admin DM)
#
GET
/agent/listing/{listing_id}/contact-questions
Suggested questions for the 'ask CUBI to message the agency' contact option…
#
POST
/agent/compare/from-favorites
Return the user's saved listings as a tappable picker for the compare shortlist
#
POST
/agent/cross-city-search
Find one listing in each of two cities matching the same filters; render…
#
POST
/agent/preroute-classify
Classify a user message: paired-comparison (route to /agent/cross-city-search)…
#
POST
/agent/reject-reason
Record an optional reject-reason after a 👎 (mig 083 `reject_reason` signal)
#
POST
/agent/saved/list
Deliver the user's saved listings as a single message with one tappable row per…
#
GET
/agent/listing/{listing_id}
Fetch one listing's full details by id (source-prefixed, e.g. dils:9876)
#
POST
/agent/listing/{listing_id}/translate
Translate a listing's full description into the given language (lazy i18n)
#
POST
/agent/listing/{listing_id}/summary
Generate (or fetch) the listing's TL;DR summary — async pane fetch
#
POST
/agent/search/page
Page the current query's full result set (offset/limit) beyond the ranked batch
#
Documentation
Specifications
Schemas & Data
JSONSchema
https://artifacts.apis.io/cubi-estate/json-schema/cubi-estate-agent-filter-request-schema.json
JSONSchema
https://artifacts.apis.io/cubi-estate/json-schema/cubi-estate-agent-search-request-schema.json
JSONSchema
https://artifacts.apis.io/cubi-estate/json-schema/cubi-estate-agent-similar-request-schema.json
JSONSchema
https://artifacts.apis.io/cubi-estate/json-schema/cubi-estate-agent-alert-subscribe-request-schema.json
JSONSchema
https://artifacts.apis.io/cubi-estate/json-schema/cubi-estate-agent-cross-city-search-request-schema.json