Reallyo Listings API

Send your rental and sale listings to Reallyo from your own systems or an AI agent; Reallyo publishes them to the listing portals. Paid plans only.

For AI agents (MCP): https://listings-api.reallyo.com/mcp with header Authorization: Bearer rly_live_…
REST: OpenAPI 3.1 · Agent summary: llms.txt

How it works

  1. Identify each unit by your id (external_id). Sending it again updates the same listing — retries are safe.
  2. Every listing is checked first. Problems come back per field, with what to send instead.
  3. Accepted listings go live within about a minute; photos are copied to our CDN first.
  4. Live listings count towards your plan. Over the limit a listing is held and goes live by itself when a slot frees up.
  5. When a unit is let, set status to "rented". To sync your whole inventory, use bulk with mode: "replace".

Example

curl -X PUT https://listings-api.reallyo.com/v1/listings/UNIT-12B \
  -H "Authorization: Bearer $REALLYO_API_KEY" -H "Content-Type: application/json" \
  -d '{"status":"available","offer_type":"rent","price":2450,"bedrooms":2,"bathrooms":1,
       "description":"Bright two-bedroom with in-unit laundry, two blocks from the subway…",
       "address":{"street_number":"222","street":"East 39th Street","unit":"12B",
                  "city":"New York","state_code":"NY","postcode":"10016"},
       "available_from":"2026-11-01","pets":{"cats":true},
       "photos":[{"url":"https://example.com/12b/living-room.jpg"}]}'

Endpoints

GET /v1/mePlan limit, live listings, free slots
PUT /v1/listings/{external_id}Create or replace
PATCH /v1/listings/{external_id}Change some fields, e.g. {"status":"rented"}
GET /v1/listings/{external_id}State, checks and what to do next
GET /v1/listingsYour API listings (?state=, ?after=)
DELETE /v1/listings/{external_id}Take down
POST /v1/listings/validateCheck without storing
POST /v1/listings/bulkUp to 250 at once; mode: "replace" marks the rest rented

Listing fields

status"available" | "coming_soon" | "pending" | "rented" | "sold" | "draft""available" goes live on the portals (counts towards your plan limit). "rented"/"sold" take it off the market; "draft" keeps it private. default "available"
offer_type"rent" | "sale" default "rent"
titlestringOptional. Generated from the address and size when omitted.
descriptionstringThe listing text renters see. Required for "available". default ""
address requiredobjectThe property address. US only.
address.street_numberstringHouse or building number, e.g. "222". default ""
address.street requiredstringStreet name, e.g. "East 39th Street".
address.unitstringApartment or unit, e.g. "16B". Empty for a whole house. default ""
address.city requiredstring
address.state_code requiredstringTwo-letter US state code, e.g. "NY".
address.postcode requiredstringUS ZIP code.
address.neighborhoodstring default ""
address.hide_street_numberbooleanPublish the street without the house number. realtor.com and apartments.com refuse such listings. default false
latitudenumber
longitudenumber
pricenumberMonthly rent (rent) or asking price (sale), in USD. Required for "available".
bedroomsinteger0 for a studio.
bathroomsnumberHalf baths as .5, e.g. 1.5.
square_feetinteger
property_type"apartment" | "assisted living" | "barn" | "bungalow" | "cabin" | "castle" | "co-op" | "condo" | "cottage" | "detached house" | "duplex" | "farm" | "flat" | "fourplex" | "high-rise" | "house" | "houseboat" | "land" | "loft" | "maisonette" | "manufactured" | "mid-rise" | "mobile" | "multi-family home" | "penthouse" | "semi-detached house" | "senior housing" | "single-family home" | "studio" | "terraced house" | "townhouse" | "triplex" | "villa" | "windmill" default "apartment"
year_builtinteger
available_fromstring | string"now", or the date the property becomes available. default "now"
lease_term"1_year" | "6_months" | "monthly" | "rent_to_own" | "variable"Rentals only. default "1_year"
petsobjectRentals only. Which pets are allowed. default {"cats":false,"small_dogs":false,"large_dogs":false}
pets.catsboolean default false
pets.small_dogsboolean default false
pets.large_dogsboolean default false
furnishedbooleanRentals only. default false
smoking_allowedbooleanRentals only. default false
utilities_includedarrayRentals only. default []
photosarrayIn display order; the first is the cover. At least one is required for "available". We copy each photo to our CDN — your URL only has to work when you send it. default []
photos[].url requiredstringA publicly reachable JPEG, PNG, GIF or WebP, up to 15 MB.
photos[].captionstring default ""
videosarrayYouTube, Vimeo or Wistia links. Others are dropped. default []
mls_numberstring default ""
syndicatebooleanSend to the listing portals when live. false keeps it on Reallyo only. default true

States

rejectedFailed checks; nothing published. Fix checks.errors and resend.
queuedAccepted, publishing.
heldAccepted, but your plan's live limit is reached.
livePublished and sent to portals.
savedOn Reallyo with a non-live status.
parkedRented/sold/draft and never live — stored only.
failedPublishing failed (usually a photo URL); see message.
removedTaken down.

Questions: support@reallyo.com