Platform
Get started

Casafari is the AI agent-native real estate data intelligence platform. The most complete property index in Europe: a deduplicated, cleaned property graph of residential and commercial property, for sale and for rent, in 16 countries.The most complete property index in Europe: a deduplicated, cleaned property graph.

How the graph is built

Claro AI · REST API

Ask about a search you show

POSThttps://platform.casafari.com/v1/claro/search/ask
API key6 parameters

Send Authorization: Bearer $CASAFARI_API_KEY: a platform API key or OAuth access token, metered in platform tokens; see platform sign-in and Claro AI. On the platform this is POST https://platform.casafari.com/v1/claro/search/ask; POST /v1/search/ask is Claro's own path, which the platform adds /claro to. The platform forwards the call to Claro unchanged: Claro's Claro-Version header and its error bodies ({"error":{"code","message"}}, with rate_limited and quota_reached on a 429) pass through.

Over MCP: no tool does this. MCP and REST compared.

Description

A free question about a search you show your user ("why only 180?", "which has the longest frontage?"), answered by a model from that search and the read-only operations (get_premises, compare_premises, market_snapshot) on your account. Every number in the answer is checked against the search and those results, and a sentence with any other number is dropped (counted in dropped); a sentence naming a property portal is dropped; a link survives only when it is a listing_url from the data. answer is null when nothing survived. When the user asks to change the search, change is the change in plain words for POST /v1/search/refine and answer says what will change. Counted against the account's daily calls like a search.

Request body

Content type application/json. Required. Type: object.

questionstringrequired
at most 2000 characters
searchobjectrequired
The search as you show it: a POST /v1/search answer (criteria, counts, notes, results), optionally with prev (the search it replaced: at, criteria, counts).
historyobject[]
The conversation so far, oldest first (the last 8 are read).
2 properties
rolestringrequired
user assistant
textstringrequired
langstring
The language to answer in when the question's own language is unclear.
en de es

Example request

Placeholders only: replace the token and the values with your own.

curl
curl -X POST "https://platform.casafari.com/v1/claro/search/ask" \
  -H "Authorization: Bearer $CASAFARI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "question": "<question>",
  "search": {}
}'

Responses

200 The checked answer, or the change to apply

Type: object.

Show the response shape (12 fields)
answerstringrequired
Markdown.
changestringrequired
droppedobjectrequired
3 properties
numbersinteger
portalsinteger
linksinteger
modelstringrequired
usageobjectrequired
4 properties
roundsinteger
input_tokensinteger
output_tokensinteger
msinteger

400 Invalid request

Type: object.

Show the response shape (3 fields)
errorobject
2 properties
codestringrequired
messagestringrequired

401 Missing or invalid key

Type: object.

Show the response shape (3 fields)
errorobject
2 properties
codestringrequired
messagestringrequired

403 No access

Type: object.

Show the response shape (3 fields)
errorobject
2 properties
codestringrequired
messagestringrequired

429 Rate limited

Type: object.

Show the response shape (3 fields)
errorobject
2 properties
codestringrequired
messagestringrequired

Tip: add .md to any URL to read it as Markdown.