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
- Request your API key from the Infinid team.
- Make authenticated requests to the API endpoints below.
- 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
Field | Type | Description |
---|---|---|
id | integer | Unique property identifier |
sweepbright_id | string | External SweepBright system identifier |
title | string | Property title |
description | string | Property description |
agency_name | string | Agency listing the property |
address_street | string | Street address |
address_city | string | City |
address_postal_code | string | Postal code |
address_region | string | Region |
address_country | string | Country code (ISO 3166-1 alpha-2) |
price | integer | Price in currency units |
currency | string | Currency code (ISO 4217) |
property_type | string | Type of property. Allowed values: apartment , commercial , house , land , office , parking . |
bedrooms | integer | Number of bedrooms |
bathrooms | integer | Number of bathrooms |
area_sqm | number | Liveable area (sqm) |
plot_area_sqm | number | Plot/land area (sqm) |
features | array[string] | List of features |
media | array[object] | Media objects (photos, floorplans, etc.) |
published_at | string (date-time) | Publish timestamp (ISO 8601) |
Filter Parameters
Parameter | Type | Description |
---|---|---|
country | string | Country code (e.g. BE , FR ) |
city | string | City name |
property_type | string | Property type. Allowed values: apartment , commercial , house , land , office , parking . |
transaction_type | string | Type of transaction: sale or let (default: sale ) |
min_bedrooms | integer | Minimum number of bedrooms (≥0) |
max_bedrooms | integer | Maximum number of bedrooms (≥min_bedrooms) |
min_price | integer | Minimum price (≥0) |
max_price | integer | Maximum price |
min_area_sqm | number | Minimum liveable (habitable) area in square meters |
max_area_sqm | number | Maximum liveable (habitable) area in square meters |
min_plot_area_sqm | number | Minimum plot/land area in square meters |
max_plot_area_sqm | number | Maximum plot/land area in square meters |
limit | integer | Number 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.