---
title: "Property Management"
url: "https://real-estate-agency.apim.eu/apis/property-management/versions/0192f0a1-654d-4abd-aa88-6716d49df69f"
---

# Property Management

OpenAPI specification document.

```json
{"openapi":"3.0.3","info":{"title":"Property Management","version":"1.0.0","description":"The system of record for every listed property - apartments, houses and\ncommercial space. Properties are the foundation for listings, matching and\nvaluation.\n\nThe portfolio can be populated and exported via a standard property-data\nfeed, so existing agency software connects without an extra integration step.\n","contact":{"name":"API Support - Real Estate Agency","email":"api-support@realestateagency.example"}},"servers":[{"url":"https://api.realestateagency.example/v1","description":"Production"},{"url":"https://sandbox.api.realestateagency.example/v1","description":"Sandbox"}],"tags":[{"name":"Properties"},{"name":"Media"},{"name":"Import"}],"security":[{"apiKey":[]}],"paths":{"/properties":{"get":{"tags":["Properties"],"summary":"List properties","operationId":"listProperties","parameters":[{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/PropertyStatus"}},{"name":"type","in":"query","schema":{"$ref":"#/components/schemas/PropertyType"}},{"name":"postal_code","in":"query","description":"Filter by postal code.","schema":{"type":"string","example":"10001"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Results list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Property"}},"page":{"$ref":"#/components/schemas/Page"}}}}}},"401":{"$ref":"#/components/responses/NotAuthenticated"},"429":{"$ref":"#/components/responses/TooManyRequests"}}},"post":{"tags":["Properties"],"summary":"Create a property","operationId":"createProperty","security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropertyInput"},"example":{"type":"apartment","title":"3-Bedroom Period Home near Riverside Park","address":{"street":"148 Elm Street","postal_code":"10001","city":"Springfield"},"living_area_sqm":86.5,"rooms":3,"year_built":1908,"purchase_price_eur":645000,"commission":{"buyer_percent":3.57,"seller_percent":3.57}}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Property"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/NotAuthenticated"}}}},"/properties/{propertyId}":{"parameters":[{"name":"propertyId","in":"path","required":true,"schema":{"type":"string","example":"prop_8f2c1a"}}],"get":{"tags":["Properties"],"summary":"Retrieve a property","operationId":"getProperty","responses":{"200":{"description":"Property","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Property"}}}},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Properties"],"summary":"Update a property","description":"Updates individual fields. Listings already generated remain unchanged.","operationId":"updateProperty","security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropertyInput"},"example":{"purchase_price_eur":629000}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Property"}}}},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Properties"],"summary":"Archive a property","description":"Takes the property off the market. The record remains readable.","operationId":"archiveProperty","security":[{"apiKey":[]}],"responses":{"204":{"description":"Archived"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/properties/{propertyId}/media":{"parameters":[{"name":"propertyId","in":"path","required":true,"schema":{"type":"string","example":"prop_8f2c1a"}}],"get":{"tags":["Media"],"summary":"List a property's media","operationId":"listMedia","responses":{"200":{"description":"Media list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Media"}}}}}}}}},"post":{"tags":["Media"],"summary":"Upload media","description":"Photos, floor plans and documents are attached to the property, not to a listing.","operationId":"uploadMedia","security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file","category"],"properties":{"file":{"type":"string","format":"binary"},"category":{"$ref":"#/components/schemas/MediaCategory"},"order":{"type":"integer","minimum":1,"example":1},"caption":{"type":"string","maxLength":160}}}}}},"responses":{"201":{"description":"Uploaded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Media"}}}},"413":{"description":"File too large (limit 25 MB)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/import/feed":{"post":{"tags":["Import"],"summary":"Import a property data feed","description":"Accepts an XML property-data feed or a ZIP with images, and creates or\nupdates the properties it contains. The import runs asynchronously.\n","operationId":"importFeed","security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"},"mode":{"type":"string","enum":["merge","replace"],"default":"merge","description":"`replace` archives properties that aren't in the file."}}}}}},"responses":{"202":{"description":"Import accepted","content":{"application/json":{"schema":{"type":"object","properties":{"import_id":{"type":"string","example":"imp_2f71"},"status":{"type":"string","enum":["in_progress","done","failed"]},"properties_detected":{"type":"integer","example":47}}}}}}}}}},"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"apikey","description":"Every call carries an API key in the `apikey` header. You generate the\nkey in the Real Estate portal under \"My Apps\"; it's shown exactly once.\n\nEach key has the scopes it's allowed to use attached to it. If one is\nmissing, the API responds with `403` and `code: \"scope_missing\"`; the\nmissing scope is in `details[].field`.\n"}},"responses":{"NotAuthenticated":{"description":"Key is missing, revoked or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"Record not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ValidationError":{"description":"The request doesn't match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"TooManyRequests":{"description":"Rate limit reached","headers":{"Retry-After":{"schema":{"type":"integer","example":12}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Page":{"type":"object","description":"Cursor-based pagination.","properties":{"count":{"type":"integer","example":25},"total":{"type":"integer","example":138},"next_cursor":{"type":"string","nullable":true,"example":"eyJzIjoyNX0"}}},"ErrorDetail":{"type":"object","properties":{"field":{"type":"string","example":"energy_certificate.final_energy_demand_kwh"},"reason":{"type":"string","example":"missing"}}},"Error":{"type":"object","description":"Uniform error format across all Real Estate Agency APIs.","required":["code","message"],"properties":{"code":{"type":"string","example":"validation_failed"},"message":{"type":"string","example":"Mandatory disclosures from the energy certificate are missing for publication."},"details":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}}}},"PropertyStatus":{"type":"string","enum":["draft","active","reserved","sold","rented","archived"],"example":"active"},"PropertyType":{"type":"string","enum":["apartment","house","land","commercial","parking"],"example":"apartment"},"MediaCategory":{"type":"string","enum":["cover_photo","interior","exterior","floor_plan","energy_certificate","document"]},"Address":{"type":"object","required":["postal_code","city"],"properties":{"street":{"type":"string","example":"148 Elm Street"},"postal_code":{"type":"string","pattern":"^[0-9]{5}$","example":"10001"},"city":{"type":"string","example":"Springfield"},"country":{"type":"string","default":"US"},"location_precision":{"type":"string","description":"Controls how precisely the address appears in the listing.","enum":["exact","street","neighborhood"],"default":"street"}}},"EnergyCertificate":{"type":"object","description":"Figures needed to publish a listing.","properties":{"type":{"type":"string","enum":["consumption","demand"]},"final_energy_demand_kwh":{"type":"number","format":"float","example":118.4},"energy_source":{"type":"string","example":"district_heating"},"system_year":{"type":"integer","example":1998},"efficiency_class":{"type":"string","enum":["A+","A","B","C","D","E","F","G","H"]},"valid_until":{"type":"string","format":"date","example":"2031-04-30"},"exemption":{"type":"string","description":"Set when no certificate is legally required.","enum":["heritage_protection","small_building"]}}},"Commission":{"type":"object","properties":{"buyer_percent":{"type":"number","format":"float","example":3.57},"seller_percent":{"type":"number","format":"float","example":3.57},"note":{"type":"string","example":"includes applicable sales tax"}}},"PropertyInput":{"type":"object","required":["type","title","address"],"properties":{"type":{"$ref":"#/components/schemas/PropertyType"},"title":{"type":"string","maxLength":120,"example":"3-Bedroom Period Home near Riverside Park"},"description":{"type":"string","example":"Well-maintained period apartment on the second floor with two south-facing balconies."},"address":{"$ref":"#/components/schemas/Address"},"living_area_sqm":{"type":"number","format":"float","example":86.5},"lot_size_sqm":{"type":"number","format":"float","example":412},"rooms":{"type":"number","format":"float","example":3},"year_built":{"type":"integer","example":1908},"floor":{"type":"integer","example":2},"purchase_price_eur":{"type":"integer","example":645000},"cold_rent_eur":{"type":"integer","example":1450},"service_charges_eur":{"type":"integer","example":280},"available_from":{"type":"string","format":"date","example":"2026-11-01"},"energy_certificate":{"$ref":"#/components/schemas/EnergyCertificate"},"commission":{"$ref":"#/components/schemas/Commission"}}},"Property":{"allOf":[{"$ref":"#/components/schemas/PropertyInput"},{"type":"object","properties":{"id":{"type":"string","example":"prop_8f2c1a"},"status":{"$ref":"#/components/schemas/PropertyStatus"},"media_count":{"type":"integer","example":14},"created_at":{"type":"string","format":"date-time","example":"2026-08-14T08:12:44Z"},"updated_at":{"type":"string","format":"date-time","example":"2026-08-20T09:38:02Z"}}}]},"Media":{"type":"object","properties":{"id":{"type":"string","example":"med_31c9"},"category":{"$ref":"#/components/schemas/MediaCategory"},"url":{"type":"string","format":"uri","example":"https://cdn.realestateagency.example/properties/prop_8f2c1a/med_31c9.jpg"},"order":{"type":"integer","example":1},"caption":{"type":"string","example":"Living room overlooking the courtyard"},"size_bytes":{"type":"integer","example":2418112}}}}}}
```
