Declare a client
POST /property-v1/customers
It is the first step of everything: with no record you cannot upload a property, request a connection link, or publish.
The clientRef says which client the record belongs to, same as everywhere else in the API: it goes in
the x-client-ref header (recommended), in the query or in the body.
The minimum that works is the name:
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" }'
And the complete record, with everything that gets published on the listing:
{
"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"
}
}
201 response:
{
"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"
}
}
}
The fields
| Field | Type | Required? | |
|---|---|---|---|
name | string | yes | The client name, as it appears on the listing |
phone1 | string | no | The contact phone number |
phone2 | string | no | A second phone number |
mobile | string | no | The mobile (on MercadoLibre it goes as the second phone) |
email | string | no | The email that receives the enquiries |
address | string | no | The address |
zipcode | string | no | The postcode |
country | number | no | The client's country |
branch | object | no | The branch — see below |
name is the only required one: without a name, the listing has no owner. Text fields accept up to 256
characters.
The key names are the same ones the property object uses, so the block you were already building works as is. What changed is where you send it: here once, instead of on every upload.
The branch is optional
If you do not send branch, the branch inherits the client's details. It is not a convenience of ours:
it is what Mapaprop does when an account is created, and it is why 96 out of every 100 agencies have a
single branch with the same details.
| Field | Type |
|---|---|
name phone1 phone2 mobile email address zipcode | string |
zone0 zone1 zone2 zone3 | number — the zone codes |
Repeating the POST is safe
A POST on a client that already exists does not issue another id nor overwrite the details: it
returns the record that is there with created: false and status 200. That makes a retry after a
timeout safe.
To change the details there is the PUT, which never touches
the id.
And it reactivates a deactivated client
If the client was deactivated, the same POST reactivates it.
200 response with 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"
}
}
It comes back with the same customerId, so their published listings are still theirs. The details
you send in that POST are the ones that remain.
Response codes
| Code | What happened | What to do |
|---|---|---|
201 | The record was created | — |
200 | It already existed (created: false) or it was reactivated (revived: true) | — |
400 | name is missing, country is not a positive integer, branch is not an object, or a text exceeds 256 characters | The field comes in field |
400 | The clientRef is missing | Send the x-client-ref header: without it we do not know which client the record belongs to, and we do not guess |
401 | Token missing or invalid | — |
403 | Your token does not have the property-api-create scope | Write to us to enable it |
Related
- Clients — what the record is and the four methods
GET·PUT·DELETE- Uploading properties — the next step