Who it is for
Broker platforms, agency CRMs and listing apps that already store photos. The agent, or the software in front of the agent, keeps the client relationship. SnapListly only writes the description.
Send room photos. Get a listing draft back as JSON: a short overview, a long description, one text per room, and tags.
Broker platforms, agency CRMs and listing apps that already store photos. The agent, or the software in front of the agent, keeps the client relationship. SnapListly only writes the description.
So you do not build a vision pipeline. The same draft the agent sees in SnapListly agency comes back on one HTTPS call, ready to store next to the listing.
One call is one property. Photos are the evidence. The other fields tell the model the market, the language of the text, and whether to answer now or queue the job.
| Field | Meaning |
|---|---|
photos[] | 1–40 JPEG or PNG room shots. Required. |
title | Project name on the agency account. Required. Must be unique for that account. |
address | Property address. Required. The zone of the plan is decided from this address, not from the card country. |
lang | Language of the text that comes back, for example en or pl. Default en. |
mode | now waits for the description. queue saves the project and finishes later. |
quality | fast is the shorter draft. full is the longer listing text. |
type, price, area, year | Facts stored with the listing. They do not replace the photos. |
The key is for the agency server, not for a public page and not for a phone app binary. Send it only from your backend:
Authorization: Bearer
Issue the key in Agency, under My details. It is stored as a hash and works for the domain you enter. A new key turns the previous one off. The key is also emailed to the account address, or to a client email already stored for this agent. The message includes the domain and a curl example. A call from another website is rejected.
Live URL: POST https://agency.snaplistly.com/analyze.php
curl -sS https://agency.snaplistly.com/analyze.php \ -H "Authorization: Bearer $SNAPLISTLY_API_KEY" \ -F "title=Ocean Drive house" \ -F "lang=en" \ -F "mode=now" \ -F "quality=full" \ -F "address=1200 Ocean Drive, Miami Beach, FL, USA" \ -F "type=House" \ -F "price=890000 USD" \ -F "photos[]=@living.jpg" \ -F "photos[]=@kitchen.jpg"
mode=now returns the draft in result. shareUrl is the page the client can open.
{
"lang": "en",
"quality": "full",
"mode": "now",
"photoCount": 2,
"savedId": 1042,
"shareUrl": "https://agency.snaplistly.com/s/EXAMPLE",
"result": {
"shortOverview": "A bright house a short walk from the beach, with a wide living room and a fitted kitchen.",
"overallDescription": "Longer listing text, written in the requested language.",
"rooms": [
{"name": "Living room", "description": "What is visible in that room."},
{"name": "Kitchen", "description": "What is visible in that room."}
],
"tags": ["house", "bright", "kitchen"]
}
}
mode=queue does not wait. The description is filled in later. The agent can be emailed when it is ready.
{
"queued": true,
"jobId": 88,
"savedId": 1042,
"mode": "queue",
"quality": "fast",
"photoCount": 2,
"message": "Project saved. Job queued."
}
Errors are JSON too: {"error":"..."}.
| Status | When |
|---|---|
| 400 | No photos, missing address, or a bad field. |
| 401 | No session, and no valid API key. |
| 403 | The plan does not cover this zone, or the photo and room limits are too small. |
| 409 | This account already has a project with that name. |