Publish listings.
Power market analytics.

Connect your CRM, agency software, or custom platform to IMO360. Upload property listings, enrich them with market intelligence, and reach verified buyers.

Quick Start
# Publish a listing
curl -X POST http://api2.imo360.ro/api/integration/estates \
  -H "X-API-Key: <your-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "providerIdentifier": "my-crm",
    "externalId": "listing-456",
    "title": "Apartament 3 camere Herastrau",
    "transaction": "SALE",
    "type": "APARTMENT",
    "price": 185000,
    "currency": "EUR",
    "rooms": 3,
    "totalArea": 85.5
  }'

How the Integration Works

Four steps to go from API key to live listings with market analytics.

1

API KEY Get Your Credentials

Contact us to receive an API key with publish.estates permission. Include the key in every request.

# All requests require the X-API-Key header
curl -H "X-API-Key: imo360_ak_your_key_here" ...
2

POST Publish Estate Listings

Push property listings with full details including inline agency and agent data. Same providerIdentifier + externalId = update (idempotent upsert). Agency and agent are auto-created/updated.

POST /api/integration/estates
{
  "providerIdentifier": "my-crm",
  "externalId": "listing-456",
  "title": "Apartament 3 camere, zona Herastrau",
  "transaction": "SALE",
  "type": "APARTMENT",
  "price": 185000,
  "currency": "EUR",
  "rooms": 3,
  "totalArea": 85.5,
  "latitude": 44.4812,
  "longitude": 26.0766,
  "constructionYear": 2020,
  "floor": 4,
  "floorMax": 10,
  "partitioning": "DETACHED",
  "imageUrls": ["https://example.com/img1.jpg"],
  "agency": {
    "name": "VIB Imobiliare",
    "phone": "+40721000000"
  },
  "agent": {
    "name": "Ana Popescu",
    "phone": "+40721000001"
  }
}
3

POST Bulk Upload (Optional)

Push multiple listings in a single request. Each item follows the same schema. Failed items don't block the rest.

POST /api/integration/estates/bulk
{
  "items": [
    { "providerIdentifier": "my-crm", "externalId": "listing-1", ... },
    { "providerIdentifier": "my-crm", "externalId": "listing-2", ... }
  ]
}

# Response shows per-item results:
{ "count": 2, "results": [
    { "index": 0, "success": true, "data": { "id": 12345 } },
    { "index": 1, "success": true, "data": { "id": 12346 } }
]}
4

POST Mark as Sold (Lifecycle)

When a property is sold, update its status. Re-activate by setting "status": "active".

# Re-post with same externalId to update status
POST /api/integration/estates
{
  "providerIdentifier": "my-crm",
  "externalId": "listing-456",
  "title": "Apartament 3 camere, zona Herastrau",
  "transaction": "SALE",
  "price": 185000,
  "currency": "EUR",
  "status": "sold"
}
API Endpoints
Method Endpoint Description Permission
POST /api/integration/estates Create or update a listing (with inline agency/agent) publish.estates
POST /api/integration/estates/bulk Batch create/update multiple listings publish.estates
GET /api/integration/reference Enum values, estate types, and field specifications ROLE_API

Key Concepts

Everything you need to know about the integration.

Idempotent Upserts

Same providerIdentifier + externalId always updates the existing listing. Safe to re-send without creating duplicates.

Auto-Provisioning

Providers, agencies, and agents are auto-created from estate payloads. Just include the data inline.

Image Processing

Images from imageUrls are automatically downloaded and stored on our CDN for optimal delivery.

Identifier Strategy

Identifiers are auto-generated as providerIdentifier:name for agencies/agents and providerIdentifier:externalId for estates.

Granular Permissions

API keys are scoped to specific permissions like publish.estates. Keys can have expiration dates.

Analytics-Ready

Published listings are immediately available for market explorer, pricing insights, investment scoring, and zone-level analytics.

Authentication

API Key (Partners)

Send X-API-Key header on all /api/integration/* calls. Keys are scoped by permission and can have expiration dates.

JWT (Admin)

POST to /authentication_token with email/password to get a JWT. Required for POST /api/keys to create new API keys.

Interactive Docs

Use the Integration API docs to explore schemas, try requests, and download the OpenAPI spec for client generation.