Skip to content

Update listing

Listings API · listings.update

URL · Fields · Example · Response · Try it

URL and authentication

POST https://YOUR-BACKEND/api/automation/v1/execute

Send Authorization: Bearer <connection key>, Accept: application/json and Content-Type: application/json. Create a connection.

This operation requires write access and CRM permission edit_listing. The gateway invokes PUT /api/v1/app/listing/{id} internally. Use the POST URL above with your automation key, including for read and delete operations.

Request parameters

KeyTypeRequirement
operationstringRequired; exactly listings.update
parameters.idintegerRequired; positive record ID from your CRM
dataobjectRequired; see fields below
idempotency_keystringRequired; 8–100 characters. Unique per action; keep unchanged for identical retries.

Fields

location and all four declared location children are required even on update. The request declares assigned_to for assignment. Size becomes required for a non-land type when size or listing_type_id is supplied. New binary uploads are not supported.

Fields below belong inside data. Dot paths describe nested objects; * means each array item. nullable permits null and sometimes validates a supplied field. in: lists allowed values; min: and max: limit the value, length or item count. exists: and exists_in_company: require a valid record ID. Conditional rules such as required_if and required_with refer to other fields in the same payload. Use YYYY-MM-DD for date-only values and timestamps with timezone offsets for follow-ups.

FieldTypeRequirementFormat / validation
titlestringOptionalsometimes; string
descriptionstringOptionalsometimes; string
bathroomsintegerOptionalnullable; integer
is_exclusivebooleanOptionalnullable; boolean
bedroomsintegerOptionalnullable; integer
parkingsintegerOptionalnullable; integer
pricenumberOptionalnullable; numeric
sizenumberConditionalnumeric — Required for non-land listings when size or listing_type_id is supplied; otherwise nullable.
plot_sizenumberOptionalnullable; numeric
total_floorsintegerOptionalnullable; integer; min:1
statusstringOptionalsometimes; string; in:draft,active,under_negotiation,reserved,finalizing,closed,archived
furnishedstringOptionalnullable; string; in:furnished,semi-furnished,unfurnished
developer_idintegerOptionalnullable; integer; exists_in_company:developers
build_yearstringOptionalnullable; date_format:Y
documentsarrayOptionalnullable; array
documents.*fileOptionalnullable; file; mimes:ppt,pptx,doc,docx,pdf,xls,xlsx; max:10240 — Binary upload is not supported by the JSON automation gateway; use the CRM upload interface.
imagesarrayOptionalnullable; array
images.*string|objectOptionalnullable — Existing media reference: string or object with id, url, or key. New uploads are not supported by the automation gateway. Use the CRM to upload media.
apply_watermarkbooleanOptionalnullable; boolean
default_imagestringOptionalnullable; string
listing_purposestringOptionalsometimes; string; in:sell,rent
floor_numberintegerOptionalnullable; integer
unit_numberstringOptionalnullable; string
source_idintegerOptionalnullable; integer; integer; exists_in_company:listing_sources
default_periodstringOptionalnullable; string
rent_frequencystringOptionalnullable; string; in:daily,weekly,monthly,yearly,quarterly,half_yearly
video_linkstringOptionalnullable; url
vr_linkstringOptionalnullable; url
listing_type_idintegerOptionalsometimes; integer; exists:listing_types,id
locationobjectRequiredrequired; array
location.addressstringRequiredrequired; string
location.longnumberRequiredrequired; numeric
location.latnumberRequiredrequired; numeric
location.place_idstringRequiredrequired; string
owner_idintegerOptionalnullable; integer; exists_in_company:leads
assigned_tointegerOptionalnullable; integer; exists_in_company:users
amenitiesarrayOptionalnullable; array
amenities.*integerOptionalnullable; integer; integer; exists_in_company:amenities
floor_plansarrayOptionalnullable; array
floor_plans.*.idintegerOptionalnullable; integer; exists:floor_plans,id
floor_plans.*.titlestringConditionalrequired_with:floor_plans; string
floor_plans.*.bedroomsintegerOptionalnullable; integer
floor_plans.*.pricenumberOptionalnullable; numeric
floor_plans.*.sizestringOptionalnullable; string
floor_plans.*.imagesarrayOptionalnullable; array
floor_plans.*.images.*string|objectOptionalnullable — Existing media reference: string or object with id, url, or key; no binary uploads.

Example request

Replace the example IDs and values with records in your installation. Supply any additional custom fields required by your company.

{
  "operation": "listings.update",
  "parameters": {
    "id": 1
  },
  "data": {
    "location": {
      "address": "Dubai Marina, Dubai",
      "lat": 25.0805,
      "long": 55.1403,
      "place_id": "REPLACE_WITH_REAL_PLACE_ID"
    }
  },
  "idempotency_key": "example-event-12345"
}

Response

Returns the updated listing in data. Use data.id for subsequent requests. Related fields depend on the resource and your permissions.

The gateway preserves the underlying HTTP status and JSON body. Successful requests return HTTP 200. A response may also include localized message fields.

Illustrative response excerpt (additional fields may be returned):

{
  "status": "success",
  "data": {
    "id": 456,
    "title": "Example apartment",
    "status": "draft",
    "listing_purpose": "sell"
  }
}

Errors

HTTP statusMeaning
400A CRM business rule rejected the action.
401Missing, invalid, expired or revoked connection key.
403Connection access or CRM permissions do not allow this action.
404Operation or record unavailable.
409This idempotency key was already used with a different request.
413Request or result exceeds its size limit; reduce payload or page size.
422Missing or invalid fields, or a CRM business rule rejected the operation.
429Rate limit exceeded; wait before retrying.
500The server could not complete the operation.

Validation failures may return message / errors, or an error string with an optional fields array. The tester shows the actual HTTP status and full body. Read about limits and retries.

Try it

Brixit API v1

Try this request

listings.update

Requests run from your browser to your installation. Enter the backend URL shown in Brixit. Your connection key stays in this component’s memory and is cleared when you leave this page.

CRM permission: edit_listing. Underlying route: PUT /api/v1/app/listing/{id}. Send this operation to POST /execute.

Example IDs are placeholders. Use your own record and lookup IDs. Required custom fields depend on your installation.

Even an update requires location.address, location.lat, location.long and location.place_id. The declared assignment field is assigned_to.

POST /api/automation/v1/execute

Accept: application/json
Authorization: Bearer <connection key>
Content-Type: application/json

id must be a positive integer record ID.

Code uses a connection-key variable; your entered key is never included in copied examples.