api.snaplistly.com · documentation

SnapListly API

Send room photos. Get a listing draft back as JSON: a short overview, a long description, one text per room, and tags.

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.

Why call it

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.

What the request means

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.

FieldMeaning
photos[]1–40 JPEG or PNG room shots. Required.
titleProject name on the agency account. Required. Must be unique for that account.
addressProperty address. Required. The zone of the plan is decided from this address, not from the card country.
langLanguage of the text that comes back, for example en or pl. Default en.
modenow waits for the description. queue saves the project and finishes later.
qualityfast is the shorter draft. full is the longer listing text.
type, price, area, yearFacts stored with the listing. They do not replace the photos.

API key

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.

Client request

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"

Response

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"]
  }
}

Queued response

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

Errors are JSON too: {"error":"..."}.

StatusWhen
400No photos, missing address, or a bad field.
401No session, and no valid API key.
403The plan does not cover this zone, or the photo and room limits are too small.
409This account already has a project with that name.

Workspace: agency.snaplistly.com · Portal: snaplistly.com