Infinid API Documentation

Infinid is a modern, agent-ready real estate API for Belgium and France. This documentation will help you publish, search, and integrate property listings with AI agents and other platforms.

Quickstart

  1. Request your API key from the Infinid team.
  2. Make authenticated requests to the API endpoints below.
  3. Publish your properties and let AI agents do the rest!

Authentication

All endpoints (except the webhook) require an X-API-Key header:

X-API-Key: your-api-key-here

Endpoints

GET /properties
List or filter properties. Supports query params for filtering and pagination. Response is optimized: only the most relevant fields are included. agent_name, agent_email, and custom_fields are excluded. agency_name is included. media and features are proper arrays.
POST /properties
Create or update a property. If you provide a sweepbright_id that already exists, the property will be updated (upsert). If not, a new property will be created. (Requires API key.)
Upsert logic: If you POST with a sweepbright_id that matches an existing property, all fields in the payload will update the existing record. If the sweepbright_id is new, a new property is created.
DELETE /properties/:id
Delete a property by its numeric id (e.g. /properties/1), or by sweepbright_id using ?sweepbright_id=abc123 (e.g. /properties/0?sweepbright_id=abc123). Requires API key.
Delete logic: If sweepbright_id is provided as a query param, it will take precedence over id. Returns {"message": "Property deleted"} on success.
POST /webhook/sweepbright
Receive property events from SweepBright (internal use, no API key required).
POST /properties/contact-agent
Contact an agent for a property by sending id and message in the JSON body. This is the recommended way for LLMs and API clients.

Filtering and Pagination for GET /properties

Property Fields

FieldTypeDescription
idintegerUnique property identifier
sweepbright_idstringExternal SweepBright system identifier
titlestringProperty title
descriptionstringProperty description
agency_namestringAgency listing the property
address_streetstringStreet address
address_citystringCity
address_postal_codestringPostal code
address_regionstringRegion
address_countrystringCountry code (ISO 3166-1 alpha-2)
priceintegerPrice in currency units
currencystringCurrency code (ISO 4217)
property_typestringType of property. Allowed values: apartment, commercial, house, land, office, parking.
bedroomsintegerNumber of bedrooms
bathroomsintegerNumber of bathrooms
area_sqmnumberLiveable area (sqm)
plot_area_sqmnumberPlot/land area (sqm)
featuresarray[string]List of features
mediaarray[object]Media objects (photos, floorplans, etc.)
published_atstring (date-time)Publish timestamp (ISO 8601)

Filter Parameters

ParameterTypeDescription
countrystringCountry code (e.g. BE, FR)
citystringCity name
property_typestringProperty type. Allowed values: apartment, commercial, house, land, office, parking.
transaction_typestringType of transaction: sale or let (default: sale)
min_bedroomsintegerMinimum number of bedrooms (≥0)
max_bedroomsintegerMaximum number of bedrooms (≥min_bedrooms)
min_priceintegerMinimum price (≥0)
max_priceintegerMaximum price
min_area_sqmnumberMinimum liveable (habitable) area in square meters
max_area_sqmnumberMaximum liveable (habitable) area in square meters
min_plot_area_sqmnumberMinimum plot/land area in square meters
max_plot_area_sqmnumberMaximum plot/land area in square meters
limitintegerNumber of results to return (default 20, max 100)

Examples

GET /properties Example Response

[
  {
    "id": 1,
    "sweepbright_id": "abc123",
    "title": "Spacious 2-bedroom apartment in Brussels",
    "description": "A modern apartment with a large balcony and open-plan kitchen, close to public transport.",
    "agency_name": "My Real Estate Agency",
    "address_street": "Rue de la Loi 123",
    "address_city": "Brussels",
    "address_postal_code": "1000",
    "address_region": "Brussels-Capital",
    "address_country": "BE",
    "price": 350000,
    "currency": "EUR",
    "property_type": "apartment",
    "bedrooms": 2,
    "bathrooms": 1,
    "area_sqm": 120.5,
    "plot_area_sqm": 300,
    "features": ["garden", "balcony", "garage"],
    "media": [ { "type": "photo", "url": "https://cdn.infinid.co/media/abc123.jpg" } ],
    "published_at": "2025-05-30T10:00:00Z"
  }
]

Get All Properties

curl -H "X-API-Key: your-api-key" https://yourdomain.com/properties

Create or Upsert a Property

curl -X POST -H "X-API-Key: your-api-key" -H "Content-Type: application/json" \
  -d '{
    "sweepbright_id": "abc123",
    "title": "Luxury Apartment",
    "agency_name": "My Real Estate Agency",
    "address": {"street": "123 Main St", "city": "Paris", "postal_code": "75015", "country": "FR"},
    "price": 555555,
    "currency": "EUR",
    "property_type": "apartment"
  }' \
  https://yourdomain.com/properties
Upsert Example: If you POST again with the same sweepbright_id but a different title, the existing property will be updated:
curl -X POST -H "X-API-Key: your-api-key" -H "Content-Type: application/json" \
  -d '{
    "sweepbright_id": "abc123",
    "title": "Updated Title"
  }' \
  https://yourdomain.com/properties

Delete a Property Example

curl -X DELETE -H "X-API-Key: your-api-key" https://yourdomain.com/properties/1
Delete by sweepbright_id: To delete by sweepbright_id, use:
curl -X DELETE -H "X-API-Key: your-api-key" "https://yourdomain.com/properties/0?sweepbright_id=abc123"

Contact Agent Example

curl -X POST -H "X-API-Key: your-api-key" -H "Content-Type: application/json" \
  -d '{
    "id": 1,
    "message": "Bonjour, je suis intéressé(e) par ce bien. Pourriez-vous me transmettre plus d'informations et organiser une visite ?"
  }' \
  https://yourdomain.com/properties/contact-agent

OpenAPI & MCP

For full schema details, see the OpenAPI spec and MCP definition.