Declarar un cliente
POST /property-v1/customers
Es el primer paso de todo: sin ficha no se puede dar de alta una propiedad, ni pedir un enlace de conexión, ni publicar.
El clientRef dice de qué cliente es la ficha, igual que en el resto de la API: va en el header
x-client-ref (recomendado), en la query o en el body.
Lo mínimo que funciona es el nombre:
curl -X POST https://property-api.mapaprop.com/property-v1/customers \
-H "Authorization: Bearer $TOKEN" \
-H "x-client-ref: cliente-42" \
-H "Content-Type: application/json" \
-d '{ "name": "Inmobiliaria Modelo" }'
Y la ficha completa, con todo lo que se publica en el aviso:
{
"name": "Inmobiliaria Modelo",
"phone1": "2234567890",
"mobile": "2235550000",
"email": "contacto@inmobiliaria-modelo.test",
"address": "Av. Colón 1234",
"country": 1,
"branch": {
"email": "centro@inmobiliaria-modelo.test",
"phone1": "2234567891",
"name": "Sucursal Centro",
"address": "San Martín 2500"
}
}
Respuesta 201:
{
"created": true,
"customer": {
"customerId": "MAPAPROP-PA-000002",
"clientRef": "cliente-42",
"createdAt": "2026-10-01T02:54:30.980Z",
"updatedAt": "2026-10-01T02:54:30.980Z",
"name": "Inmobiliaria Modelo",
"phone1": "2234567890",
"mobile": "2235550000",
"email": "contacto@inmobiliaria-modelo.test",
"address": "Av. Colón 1234",
"country": 1,
"branch": {
"name": "Sucursal Centro",
"phone1": "2234567891",
"email": "centro@inmobiliaria-modelo.test",
"address": "San Martín 2500"
}
}
}
Los campos
| Campo | Tipo | ¿Obligatorio? | |
|---|---|---|---|
name | string | sí | El nombre del cliente, como sale en el aviso |
phone1 | string | no | El teléfono de contacto |
phone2 | string | no | Un segundo teléfono |
mobile | string | no | El móvil (en MercadoLibre va como segundo teléfono) |
email | string | no | El email al que llegan las consultas |
address | string | no | La dirección |
zipcode | string | no | El código postal |
country | number | no | El país del cliente |
branch | object | no | La sucursal — ver abajo |
name es el único obligatorio: sin nombre, el aviso no tiene de quién es. Los campos de texto admiten
hasta 256 caracteres.
Los nombres de clave son los mismos que usa el objeto de la propiedad, así que el bloque que ya armabas sirve tal cual. Lo que cambió es a dónde lo mandás: acá una vez, en vez de en cada alta.
La sucursal es opcional
Si no mandás branch, la sucursal hereda los datos del cliente. No es una comodidad nuestra: es
lo que hace Mapaprop cuando se crea una cuenta, y es la razón de que 96 de cada 100 inmobiliarias
tengan una sola sucursal con los mismos datos.
| Campo | Tipo |
|---|---|
name phone1 phone2 mobile email address zipcode | string |
zone0 zone1 zone2 zone3 | number — los códigos de zona |
Repetir el POST es seguro
Un POST sobre un cliente que ya existe no emite otro id ni pisa los datos: devuelve la ficha que
hay con created: false y status 200. Eso hace que un reintento por timeout sea seguro.
Para cambiar los datos está el PUT, que nunca toca el id.
Y reactiva un cliente dado de baja
Si el cliente estaba dado de baja, el mismo POST lo
reactiva. Respuesta 200 con revived: true:
{
"created": false,
"revived": true,
"customer": {
"customerId": "MAPAPROP-PA-000002",
"clientRef": "cliente-42",
"name": "Inmobiliaria Modelo",
"phone1": "2234567890",
"revivedAt": "2026-10-02T11:05:41.882Z"
}
}
Vuelve con el mismo customerId, así que sus avisos publicados siguen siendo suyos. Los datos que
mandes en ese POST son los que quedan.
Códigos de respuesta
| Código | Qué pasó | Qué hacer |
|---|---|---|
201 | Se creó la ficha | — |
200 | Ya existía (created: false) o se reactivó (revived: true) | — |
400 | Falta name, country no es un entero positivo, branch no es un objeto, o un texto pasa de 256 caracteres | El campo viene en field |
400 | Falta el clientRef | Mandá el header x-client-ref: sin él no sabemos de qué cliente es la ficha, y no lo adivinamos |
401 | Token ausente o inválido | — |
403 | Tu token no tiene el scope property-api-create | Escribinos para habilitarlo |
Relacionado
- Clientes — qué es la ficha y los cuatro métodos
GET·PUT·DELETE- Alta de propiedades — el paso siguiente