https://api.stream.estate and documented at docs.stream.estate (docs.melo.io redirects there). The plugin calls https://api.stream.estate and authenticates with the X-API-KEY header. Create the key on the API Keys page of the Stream Estate console (stream.estate/console). The API is paid: a subscription, or pay-as-you-go per returned item.
Checked live on 11-11 (pay-as-you-go account: free starting credit, then EUR 0.01 per returned item, so ask for small pages). All 13 operations ran through the plugin and api.test.ts passes. What the run showed:
- Response shapes match the schemas, with one exception now fixed: advert
eventscarry booleans infieldOldValue/fieldNewValuewhen an advert expires, not strings. Locationidis an integer. No enum value outside the documented ones appeared, though output enums stay open in case one does. searches.createneeds more than the spec says: a location (includedCities,includedDepartments,includedZipcodes,lat/lon/radiusorgeoShapes) and one ofbudgetMin,budgetMax,pricePerMeterMinorpricePerMeterMax, or Melo answers 400 naming what is missing.searches.updateis a PUT, but fields left out keep their saved values: an update withoutbudgetMaxorincludedDepartmentskept both.webhooks.simulateanswers 200 with{"success":true,"code":200,"error":null}and delivers one POST to the endpoint (amatchpayload, orevent/adEvent/matchfor an event type).properties.listSimilaris served by a redirect to a/documents/propertiessearch; fetch follows it.indicators.pointsOfInterestanswered an empty collection to every query tried, and sometimes took 30 to 40 s, past the 20 s request timeout (the retry then succeeded). Its item shape is still unverified.- No rate-limit headers were seen, so the 429 handling (three retries, 1s/2s/4s backoff,
Retry-Afterif one arrives) is still untested. - The update example in the documentation sets a webhook without
notificationEnabled, which the notification rules in the same spec forbid, so the plugin follows the rules, not the example.
/public/location-autocomplete, the cities route is /cities, and the webhook test route is GET /webhook-tester. There are 13 operations, exactly the ones in the spec.
Things to know before you call:
- Filters are IRIs.
includedCities,includedDepartmentsand the other place filters take IRIs such as/departments/77(Paris; department ids are Melo’s own, not INSEE codes), not names. Get them fromindicators.locations(which needs a key here even though Melo serves the route publicly) orindicators.cities. - Numbers stand for words.
transactionTypeis 0 for sale and 1 for rent.propertyTypesis 0 apartment, 1 house, 2 building, 3 parking, 4 office, 5 land, 6 shop. Inputs are strict, so a misspelled filter throws instead of silently returning unfiltered data. - Paging.
properties.listand the other collections return the Hydra fields untouched plus anextPagenumber, ornullon the last page. Pass it back aspage.itemsPerPageis capped at 30. - Saved searches.
searches.createandsearches.updateneedtitle,transactionTypeandpropertyTypes. A webhook endpoint needsnotificationEnabled: true, and an event endpoint also needs at least onesubscribedEvents.searches.deleteis irreversible. - Webhook deliveries are not handled. The plugin does not receive webhooks.
webhooks.simulateis an API call: it asks Melo to send a testmatch(or the event ineventType) to an endpoint you give it, so it is a write with a side effect. It is not replayed after a 5xx or a transport failure; a 429 is retried, like every other operation. - Content type. Melo answers
application/ld+jsononly when asked for it, so the plugin sendsAccept: application/ld+jsonand decodes the body itself. A wrong key answers 401 with the plain textAuthentication failed.
- 13 typed API operations
Setup
1
Install
2
Add the plugin
corsair.ts
multiTenancy: true, scope calls with corsair.withTenant(id). See Quick start for KEK + Hub keys, and Multi-tenancy for account isolation.3
Choose authentication
- API Key (Recommended)
No setup required yet. When you make your first request as a tenant, Corsair prompts for the API key.More: API Key
4
Connect a tenant
Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see Connect / OAuth.
Example API calls
Find the place IRIs for a nameWhat’s next
API reference
Every
melo.api.* operation with input and output types.Connect / OAuth
createLink, Hub delivery, and tenant connect flows.
Use with agents
Expose this plugin’s operations as MCP tools.