---
title: "Get Listing Quality By Urls"
method: POST
path: "/api/v1/listing-quality/by-urls"
tags: ["pricing-quality"]
---

# Get Listing Quality By Urls

`POST /api/v1/listing-quality/by-urls`

## Request

- Base URL: `https://api.casaintelligence.com.au` (the document declares no server; this is the origin it was published from)
- URL: `https://api.casaintelligence.com.au/api/v1/listing-quality/by-urls`
- Auth: API key in header `X-API-Key`

Vision pass over a caller-supplied photo gallery.

No caching — there's no stable key to cache against (the URLs may
change between page loads as REA rotates CDN paths). Cost-bounded
by the photo cap on the request and the standard quota wait
in `_run_vision_pass`.

Same response shape as GET /{rea_listing_id} so the downstream
blend code doesn't need to branch on which path produced the
assessment. `rea_listing_id` is null in the response since there
isn't one.

## Request body

- VisionByUrlsRequest: Payload for /api/v1/listing-quality/by-urls. Caller supplies a photo gallery directly — used by Casa Daily's pricing tool when ci_rea_listings has no row for the subject property (un-scraped listings). The Chrome extension extracts the URLs from the live REA / Domain page DOM and passes them through.
  - `photo_urls` string[], required
  - `address` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/casaintelligence/apis/casa-intelligence-engine.md) · [All operations](https://skmtc.dev/casaintelligence/apis/casa-intelligence-engine/llms.txt) · [OpenAPI document](https://skmtc.dev/casaintelligence/apis/casa-intelligence-engine/revisions/71d711039de0?raw)
