Estalo opens a real estate office's CRM data in three ways:
- REST API v1: read and write clients, listings, sales, calendar events, inquiries and tasks, authenticated with an office API key.
- Webhooks: short, signed notifications about changes, sent to your HTTPS endpoint so your integration doesn't have to poll the API.
- AI assistant (MCP): connect Claude to the office's data, with an Estalo sign-in and each person's own consent, no API key involved. It saves a change only after the preview is confirmed.
Who it is for
Offices and agents who want to connect Estalo with another system: an inquiry form on the office website, a spreadsheet or report, accounting, another CRM or their own script. Developers who do that for an office. The office owner creates API keys and webhook endpoints, and the office needs an active plan.
Status: beta
- The API, webhooks and the AI assistant are in beta. We switch them on office by office; ask at biuro@programo.pl.
- Reading works as soon as a key exists. Writing needs the office owner to switch changes on once, and a key created with two-step verification on.
- The AI assistant reads data and, when the person ticks change scopes and the office has switched changes on, changes it too: it shows every change as a preview first and saves it only after a confirmation in the conversation.
- API changes are recorded in the changelog.
Get started in 5 steps
-
Check access. The office owner opens Settings › API and webhooks in Estalo (
/dashboard/settings/developers). A notice that the API is not on for the office yet means you need to write to us. -
Create a key. A name (for example the integration's), only the scopes the integration needs, and an expiry of 30, 90 or 365 days. Estalo shows the key once: copy it into your secret manager straight away. Details: Keys.
-
Send the first request.
/meshows the office, the key's scopes and whether it can write:curl -s https://estalo.pl/api/v1/me \ -H "Authorization: Bearer est_live_xxxxxxxxxxxx_<your-key>" -
Fetch data. Lists use cursor pagination and date filters; use
updated_gtefor incremental sync. Details: Lists and pagination, fields: Resources. -
Write and listen for changes. Switch changes on, create a key with a write scope and send
POSTwith anIdempotency-Keyheader: Changing data. Add a webhook endpoint to learn about changes without polling: Webhooks.
Addresses
| What | Address |
|---|---|
| API v1 | https://estalo.pl/api/v1 |
| OpenAPI document | https://estalo.pl/api/v1/openapi.json |
| MCP server (AI assistant) | https://estalo.pl/api/mcp |
| Keys and webhooks (office owner) | https://estalo.pl/dashboard/settings/developers |
| Connected AI apps | https://estalo.pl/dashboard/settings/connections |
Contact
Technical questions: biuro@programo.pl. Include the request method and URL and the request_id from the response; never send an API key or a webhook secret. Report vulnerabilities privately to the same address, not in public issues.