Track Home Valuation

Logs the home estimate a signed-in site contact just viewed as one activity on that contact. The HomeValuation widget sends it with the visitor's token.

POST/v1/home-valuation/track

Authentication

Public key + visitor?key=pk_… · Authorization: Bearer

Public key in the `key` query parameter, plus the signed-in visitor's access token as `Authorization: Bearer`. The contact is taken from the token, never from the body.

Edge cache: no-store

Query Parameters

keystring
required

The site's public key (pk_…). It selects the account. Safe to ship to the browser.

Body Parameters

listingIdstring
optional

MLS number of the valued listing. Send it or `placeId`.

placeIdstring
optional

Place ID of the valued address, from `GET /v1/places/autocomplete`.

unitstring
optional

Unit typed by the visitor, used with `placeId`.

pageUrlstring
optional

URL of the page showing the report. Used for a shareable report link when it is on one of the site's own origins.

Responses

200Success
application/json

Errors

400The body is not a JSON object, has neither `listingId` nor `placeId`, has an invalid ID or unit, or the valuation has no address.
401Missing or invalid public key, or no valid visitor token (`Sign in required`).
403The request comes from an origin the site does not allow, or the account is not active (`code: "TENANT_INACTIVE"`).
404The place or listing could not be resolved, or the account has no MLS data feed.
429Too many requests. The limit is 60 per minute per visitor IP and account. `Retry-After` is 60 seconds.
500Internal Server Error.

Notes

  • Success is `204 No Content` with an empty body. The `X-Panda-Home-Valuation` header says what happened: `tracked`, `skipped-duplicate`, `skipped-not-contact` (the signed-in account is not a contact of the site, such as the owner) or `skipped-area` (a city or ZIP overview).
  • The widget sends this for signed-in contacts instead of showing the lead form. Sites do not normally call it by hand.
  • The estimate is computed again on the server, so numbers from the client are never stored. At most one record per contact, address and day.
Request
curl --request POST \
--url "https://api.pandaidx.com/v1/home-valuation/track?key={{public_key}}" \
--header "Authorization: Bearer {{visitor_token}}" \
--header "Content-Type: application/json" \
--data '{"listingId":"A11855701"}'
Response200 OK
{}