DEVELOPING

Check the status on the portal

GET /property-v1/properties/{paId}/publication/{portal}

This is how you find out how the listing is doing on the other side: whether it is still online, what its public URL is, how many visits it got, and whether the portal recorded any error.

This call spends one call of the client's monthly quota on the portal, just like publishing. If you only need the last known status, GET /properties/{paId} gives it to you at no cost.

curl https://property-api.mapaprop.com/property-v1/properties/01M41AQNXYG4W4SEEEEPHEDNX4/publication/zonapropapi \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-client-ref: cliente-42"
{
  "paId": "01M41AQNXYG4W4SEEEEPHEDNX4",
  "portal": "zonapropapi",
  "remoteStatus": "unpublished",
  "inSync": false,
  "remote": {
    "portalItemId": 60321762,
    "url": "https://www.zonaprop.com.ar/propiedades/clasificado/-60321762.html",
    "publicationState": "OFFLINE",
    "processingState": "PROCESADO",
    "onlineAt": "2026-10-03T17:14:06.000Z",
    "offlineAt": "2026-10-03T04:00:00.000Z",
    "createdAt": "2026-10-03T17:14:05.000Z",
    "modifiedAt": "2026-10-03T17:14:28.000Z",
    "visits": 0,
    "errors": [],
    "warnings": [],
    "imagesStatus": [],
    "exists": true,
    "checkedAt": "2026-10-03T18:42:57.716Z"
  },
  "quota": { "remaining": 1443, "limit": 1500 }
}

The listing URL

remote.url is where the published listing can be seen. It cannot be built on your side: it uses the portal's internal id (remote.portalItemId), which is different from the code you publish with.

remote.url comes back as null if we do not have the portal's id yet, or if we cannot build the URL with certainty for the property's country. We do not build an approximate one: a link that leads somewhere else is worse than no link at all.

The two reads: one free and one fresh

What it returnsQuota
GET /properties/{paId}the last status we already had, in published.{portal}.remotefree
GET …/publication/{portal} (this page)asks the portal right now1 call

remote.checkedAt is there to help you choose between the two: it tells you how old the stored data is. If that is good enough, there is no need to ask again.

If you walk your whole inventory checking property by property, you spend one call for each one. With 400 properties that is 400 of the month's 1500 calls. Read the stored status first and only check what you genuinely need fresh.

remoteStatus and inSync

remoteStatus is the listing's status, and this call updates it with whatever the portal says.

The portal's publicationStateremoteStatus ends up as
ONLINEpublished
OFFLINEunpublished
the listing does not exist on the portalunpublished
a value we do not recogniseleft untouched

inSync answers the question that matters: is the listing the way you left it?

inSyncWhat it meansWhat to do
truethe portal matches what you expectednothing
falseit changed without you asking — it dropped, or the plan expiredpublish again if you want it up
nullthe portal returned a status we cannot interpretlook at remote.publicationState and write to us

We do not republish on our own. If the listing dropped, we tell you with inSync: false and the decision is yours: you may not want it up any more.

The other remote fields

FieldWhat it is
portalItemIdthe id the portal gave the listing. It is what forms the URL
publicationStateONLINE / OFFLINE — whether the listing is live
processingStatewhich stage of the portal's processing it is at (e.g. PROCESADO)
onlineAt · offlineAtwhen it went up and when it was taken down
createdAt · modifiedAton the portal's side, not yours
visitsvisits the portal recorded. null if it does not report them
errors · warningsexactly as the portal sends them, untranslated
imagesStatuswhat the portal did with each image
existsfalse if the listing is not on the portal
checkedAtwhen we asked

errors may carry entries even when publishing went fine: they are notes the portal leaves on its own. They go uninterpreted because the portal's wording is more precise than any translation of ours.

Response codes

CodeWhat happenedWhat to do
200the listing's status—
403your token does not have the {portal}:publish scopewrite to us to enable it
404that property is not in your inventorycheck the paId and the x-client-ref
409the account is not connected to the portalrequest a connection link
501we cannot check the status on that portal yetthe portal comes in portal
502we could not reach the portaltry again; we change nothing on your side

A 501 does not mean the portal does not exist: you may be publishing to it perfectly well and what is missing is this check. Today it is available on Zonaprop.