GET /properties
Two ways: one property by its paId, or the list of yours.
One property
GET https://property-api.mapaprop.com/property-v1/properties/{paId}
The list
GET https://property-api.mapaprop.com/property-v1/properties
{ "total": 12, "items": [ { "…" } ] }
The list is for ONE clientRef, not for your whole inventory. It returns the properties of the
client you send in x-client-ref. For another clincy's inventory, ask with its clientRef. See
clientRef.
Authentication
Authorization: Bearer <your token>.
curl https://property-api.mapaprop.com/property-v1/properties/01M3PTZ8YBMM5DSNW03WP8VD9E \
-H "Authorization: Bearer $TOKEN"
The response
The response carries the clientRef, the same one you sent in the envelope. We return it on all six
paths (verify, create, read, list, update and delete) so you can match it against your own database
without having to remember which clientRef you asked with.
The same thing create returned — object,
portals, summary — plus the image detail.
The portals are recalculated on every request. It is not a snapshot of the day you created the property: if we improve a portal's mapping, you see it here without posting anything again.
verdictAtCreation — the verdict from the day you created it
Besides portals — which is recalculated — the GET returns the verdict as it was the day you
created the property, with its date:
"verdictAtCreation": {
"at": "2026-09-29T21:52:43.549Z",
"argenprop": { "status": "fields_complete", "blockers": [] },
"zonaprop": { "status": "fields_complete", "blockers": [] }
}
To decide whether to publish, look at portals, not at this. The two coexist on purpose and say
different things:
portals | what the system would say today |
verdictAtCreation | what it said the day you created it, with its date |
verdictAtCreation is a historical record: it explains why a property created a month ago did or did
not pass, with the mapping that existed back then.
published — what is published on each portal
What publishing wrote on the other side. Until you publish, it comes back as null:
"published": {
"argenprop": { "itemId": null, "remoteStatus": null },
"zonaprop": { "itemId": null, "remoteStatus": null }
}
| Field | What it is |
|---|---|
itemId | The listing id on that portal |
remoteStatus | Its status on the other side |
images and assets — the status of your images
images gives you the summary and assets the detail, one entry per image:
"images": { "status": "partial", "total": 4, "processed": 3 },
"assets": [
{ "n": 1, "slot": "image", "source": "https://tu-cdn.com/frente.jpg",
"url": "https://…/image-1.jpg", "ok": true },
{ "n": 2, "slot": "image", "source": "https://tu-cdn.com/living.jpg",
"error": "el host del origen no existe (DNS no resuelve) [ENOTFOUND]", "ok": false }
]
| Field | What it is |
|---|---|
slot | image or blueprint |
source | The URL you sent us |
url | Where it ended up. Only if ok |
error | Why it could not be downloaded. Only if not ok |
The images.status values and what to do with each one are in
POST /properties.
Errors
| Code | When |
|---|---|
401 | Token missing, expired or invalid |
404 | That paId does not exist |
The GET never returns 409: you can always look a property up, even while its images are being
downloaded. That is in fact how you follow the progress.
Related
- POST /properties — create
- DELETE /properties/{paId} — delete