---
title: "Update Property Info"
method: POST
path: "/v1.0/leads/{leadId}/property"
tags: ["Leads"]
---

# Update Property Info

`POST /v1.0/leads/{leadId}/property`

## Request

- Base URL: `https://api.lofty.com`
- URL: `https://api.lofty.com/v1.0/leads/{leadId}/property`
- Auth: none required
- TypeScript: <https://skmtc.dev/lofty/apis/lofty-service-open-apis/docs/v1.0/leads/:leadId/property/post.ts> (a function with typed inputs; its response is checked against the schema)

Attach a property (or mailing address) to the specified lead. The behaviour depends on the `property.id` field in the request body:

- **`id` omitted or `<= 0`** — the service first tries to merge with an existing property on the lead that has the same street/city/state/zip; if no match is found, a new property record is created.
- **`id > 0`** — the named property is updated in place. The property must belong to this lead (its `leadUserId` must match the lead's); otherwise the request is rejected with 200108 LEAD_PROPERTY_NOT_EXIST.

Validation:
- At least one of `city`, `state`, `zipCode`, `streetAddress` must be non-blank; otherwise 200057 PROPERTY_ADDRESS_EMPTY is returned.
- Caller must have manage permission on the lead.

## Path parameters

- `leadId` integer, required

## Headers

- `Authorization` string, required
- `Content-Type` string, required

## Request body

- LeadProperty: Lead property or mailing address details
  - `price` integer: The price Applies to lead routing only if the leadType field is Seller(1)
  - `state` string: The state Applies to lead routing only if the leadType field is Seller(1)
  - `city` string: The city Applies to lead routing only if the leadType field is Seller(1)
  - `streetAddress` string: The street address Applies to lead routing only if the leadType field is Seller(1)
  - `zipCode` string: The zip code Applies to lead routing only if the leadType field is Seller(1)
  - `county` string: The county Applies to lead routing only if the leadType field is Seller(1)
  - `propertyType` string: Property type: `Single Family Home`, `Multi-Family`, `Condo`, `Townhouse`, `Mobile Home`, `Manufactured Home`, `Vacant Land`, `Commercial`.
  - `bedrooms` integer: The bed rooms.
  - `bathrooms` number, double: The bath rooms.
  - `squareFeet` integer: The square feet.
  - `lotSize` number, double: The lot size (acreage).
  - `parkingSpace` integer: The parking space.
  - `floors` integer: The floors.
  - `mailAddress` boolean: If set to true, the address is a mailing address; otherwise, it is a property address.
  - `id` integer: The property ID. Required when updating an existing mailing address or property address. If not provided, a new address will be created.
  - `leadUserId` integer
  - `listingId` string
  - `autoListingId` integer
  - `label` string
  - `note` string
  - `listingStatus` string
  - `labelList` string
  - `pictureUrl` string
  - `siteListingUrl` string
  - `labelType` string
  - `priceMax` integer: The max price Applies to lead routing only if the leadType field is Seller(1)
  - `priceMin` integer: The min price Applies to lead routing only if the leadType field is Seller(1)

## Response `200`

Property created or updated.

- LeadIdResponse: Response containing the lead ID.
  - `leadId` integer: ID of the lead.

## Other responses

- `400`: Validation failure. Includes: every address field blank (200057 PROPERTY_ADDRESS_EMPTY); malformed or missing request body.
- `401`: Missing or invalid authentication token.
- `404`: Lead does not exist or is not accessible (20006 LEAD_NOT_EXIST); supplied `property.id` does not belong to this lead (200108 LEAD_PROPERTY_NOT_EXIST).
- `500`: Internal server error.

---

[API](https://skmtc.dev/lofty/apis/lofty-service-open-apis.md) - [All operations](https://skmtc.dev/lofty/apis/lofty-service-open-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/lofty/apis/lofty-service-open-apis/revisions/23e640467118?raw)
