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

Read a brief from a file

POSThttps://platform.casafari.com/v1/claro/brief/file
API key1 parameter

Send Authorization: Bearer $CASAFARI_API_KEY: a platform API key or OAuth access token, metered in platform units; see platform sign-in and Claro AI. On the platform this is POST https://platform.casafari.com/v1/claro/brief/file; POST /v1/brief/file 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: brief_from_file (equivalent). MCP and REST compared.

Description

The premises requirements a file states: a site brief, a location profile or a requirements sheet, as a PDF, a photo or scan (JPG, PNG, WebP, HEIC), a Word, Excel or PowerPoint file (or OpenDocument), or text. Each requirement keeps the file's own words as quote; where the text can be read here (Office and text files) a requirement whose quote is not in it is dropped, and quotes_checked is true. For PDFs and images it is false. brief is the requirements joined in plain words, ready for POST /v1/search after the customer has checked it. Nothing is searched here. Multipart, the file in the field file, up to 10 MB (413 above that). Accepted: .pdf,.jpg,.jpeg,.png,.webp,.heic,.heif,.txt,.md,.csv,.tsv,.html,.htm,.rtf,.json,.xml,.docx,.xlsx,.pptx,.odt,.ods,.odp. Counted against the account's daily calls like a search. The file is not stored. Over MCP (no multipart), the tool brief_from_file takes the file as JSON: {"content_base64": "TG9jYWwgZW4gTWFkcmlk…", "media_type": "text/plain", "filename": "perfil.txt"}, with the same limits, checks and answer.

Request body

Content type multipart/form-data. Required. Type: object.

filestring (binary)required

Example request

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

curl
curl -X POST "https://platform.casafari.com/v1/claro/brief/file" \
  -H "Authorization: Bearer $CASAFARI_API_KEY" \
  -F "file=@brief.pdf"

Responses

200 The brief the file states

Type: object.

Show the response shape (5 fields)
briefstringrequired
The requirements in plain words, joined with '; ' (at most 1,500 characters).
requirementsobject[]required
at most 30 items
2 properties
requirementstringrequired
quotestringrequired
The file's own words that state it.
quotes_checkedbooleanrequired
True when each quote was checked against the file's text (Office and text files).
Example from the API description (long arrays shortened)
JSON
{
  "brief": "Madrid; rent; 120-250 m²; smoke extraction",
  "requirements": [
    {
      "requirement": "Madrid",
      "quote": "Local en Madrid"
    },
    {
      "requirement": "rent",
      "quote": "en alquiler"
    }
  ],
  "quotes_checked": true
}

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

413 File larger than the limit

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.