On this page Operation, pricing, location, area and characteristics are separate validated objects. Each operation needs its price: sale, rent or transfer. Use owner_id only for a holder contact in the same workspace.
The response is 201 with the new id. Creating a property does not make it public. Next: upload images , then publish .
Send an optional Idempotency-Key header (1–200 characters). For 24 hours the same key, API key and operation with the same body returns the original result, without creating another record. Reusing it with a different body returns 409.
Example requestcURL JavaScript Python
Copy curl -X POST "https://api.vestta.app/v1/properties" \
-H "X-Api-Key: $VESTTA_API_KEY " \
-H "Content-Type: application/json" \
-d '{
"operations": [
"venta"
],
"type": "apartamento",
"title": "Apartment in Madrid",
"pricing": {
"sale": 350000
},
"location": {
"city": "Madrid",
"address": "Calle de Serrano",
"full_address": "Calle de Serrano 41, 3B",
"coordinates": {
"latitude": 40.425318,
"longitude": -3.687934
},
"visibility": "approximate"
},
"area": {
"total": 95
},
"bedrooms": 2,
"bathrooms": 1
}' AuthorizationX-Api-Keystring header required
Your API key, AC_LIVE_<key_id>.<secret>. Authorization: ApiKey <key> is also accepted.
Request bodyapplication/json · required
operationsarray of strings required
typePropertyType required
subtypestring ≤ 100 chars
titlestring required 1–300 chars
descriptionstring ≤ 50000 chars default:
pricingPropertyPricing required
Show 3 child attributessalenumber ≥ 0
rentnumber ≥ 0
transfernumber ≥ 0
locationPropertyLocation required
Show 8 child attributescitystring required 2–150 chars
provincestring ≤ 150 chars
countrystring 2–100 chars default: España
addressstring required 2–500 chars
full_addressstring required 5–1000 chars
postal_codestring ≤ 20 chars
coordinatesCoordinates required
visibilitystring default: approximate
One of publicapproximatehidden
areaPropertyArea required
Show 3 child attributestotalnumber required ≥ 0
usablenumber ≥ 0
plotnumber ≥ 0
bedroomsinteger ≥ 0 ≤ 1000 default: 0
bathroomsinteger ≥ 0 ≤ 1000 default: 0
characteristicsPropertyCharacteristics
Show 46 child attributestranslationsTranslationSpec
Traducciones de las descripciones
Show 6 child attributescaTranslatedDescription
Traduccion en catalán de la descripción
Show 2 child attributestitlestring
Título de la descripción
descriptionstring
Descripción
enTranslatedDescription
Traduccion en ingles de la descripción
Show 2 child attributestitlestring
Título de la descripción
descriptionstring
Descripción
frTranslatedDescription
Traduccion en francés de la descripción
Show 2 child attributestitlestring
Título de la descripción
descriptionstring
Descripción
deTranslatedDescription
Traduccion en alemán de la descripción
Show 2 child attributestitlestring
Título de la descripción
descriptionstring
Descripción
ptTranslatedDescription
Traduccion en portuges de la descripción
Show 2 child attributestitlestring
Título de la descripción
descriptionstring
Descripción
itTranslatedDescription
Traduccion en italiano de la descripción
Show 2 child attributestitlestring
Título de la descripción
descriptionstring
Descripción
size_builtnumber ≥ 0
Superficie construida
porch_sizenumber ≥ 0
Metros cuadrados porche
size_terracesnumber ≥ 0
Metros cuadrados terrazas
attic_sizenumber ≥ 0
Metros cuadrados ático
storage_dimensionsnumber
Dimensiones del trastero
doble_bedroomsinteger ≥ 0
Número de habitaciones dobles
suite_bathroomsinteger ≥ 0
Número de baños en suite
num_terracesinteger ≥ 0
Número de terrazas
conservationstring
Estado de conservación
floorstring
Planta canónica para portales
house_floorsinteger ≥ 1
Número de plantas de una casa
elevatorboolean
Tiene ascensor (0/1 o Sí/No)
viewsstring
Vistas de la propiedad
orientationstring
Orientación (norte, sur, este, oeste)
energy_certificatestring
Certificado energético A-G
emissionsstring
Emisiones A-G
energy_consumption_valuenumber ≥ 1 ≤ 999
Consumo (kWh/m² año)
emissions_valuenumber ≥ 1 ≤ 999
Emisiones (kg CO₂/m² año)
heightnumber
Altura del local
facade_metersnumber
Metros de fachada
meters_showcasenumber
Metros de escaparate
entrace_typestring
Tipo de entrada de la oficina
positionstring
1ª/2ª Linea del mar
officesinteger ≥ 0
Número de despachos
meeting_roomsinteger ≥ 0
Número de salas de reuniones
caminostring
Tipo de suelo
terrain_extensionstring
Tamaño (Grande/Pequeño)
topographystring
Topografía del terreno
num_seatsinteger ≥ 0
Número de plazas
dimensionsstring
Dimensiones del aparcamiento
turistic_licensestring
Licencia turística
construction_yearinteger
Año de construcción
exposurestring
Interior o Exterior
stylestring
Conservación
num_viviendasinteger
Número de viviendas
num_localesinteger
Número de locales
num_ascensoresinteger
Número de ascensores
num_parkingsinteger ≥ 0
Número de parkings incluidos
num_floorsinteger
Número de plantas
luxury_propertyboolean
Propiedad de lujo
holiday_rentingboolean
Alquiler vacacional
purchase_option_rentalboolean
Alquiler con opción a compra
activitiesActivitiesSpec
Actividades permitidas
num_entrancesNumEntrancesSpec
Número de entradas
Show 5 child attributestotalinteger ≥ 0 default: 0
Total de entradas
peaton_entrancesinteger ≥ 0 default: 0
Entradas de peatones
moto_entrancesinteger ≥ 0 default: 0
Entradas de motos
van_entrancesinteger ≥ 0 default: 0
Entradas de furgoneta
car_entrancesinteger ≥ 0 default: 0
Entradas de coche
floor_breakdownFloorBreakdownSpec
Desglose de plantas
Show 3 child attributesbase_floorinteger default: 0
Metros ² de la planta baja
first_floorinteger default: 0
Metros ² de la primera planta
second_floorinteger default: 0
Metros ² de la segunda planta
featuresarray of objects
Show 4 child attributeskeystring required 1–100 chars
labelstring required 1–200 chars
valuestring | boolean | integer | number required
isextraboolean default: false
owner_idinteger ≥ 1
Existing holder contact in the same business.
is_featuredboolean default: false
statusstring default: disponible
One of disponiblereservada
Response201 Successful response.
{
"status" : "ok" ,
"id" : 1355
} Response fields Errors Error bodies and how to handle each case: Errors .
PreviousRetrieve a property Next Update a property © Vestta · Generated from the public OpenAPI schema
openapi.json Swagger UI vestta.app