Make a key
An admin of your company opens the dashboard, chooses Integrations from the account menu, and creates an API key. Copy it then: it is shown once.
Connect the system you already use. Create apartments, change rent and availability, and take them off the market from your own CRM or listing software. Nessoo keeps them on the map, on their public pages and in front of verified renters.
An admin of your company opens the dashboard, chooses Integrations from the account menu, and creates an API key. Copy it then: it is shown once.
Test keys (nsk_test_…) work against https://stg.nessoo.com; live keys (nsk_live_…) against https://nessoo.com. Add ?dry_run=true to any write to check it against every rule without changing anything.
Use your own id for each apartment in the URL. Sending the same apartment again updates it; nothing is ever duplicated.
Send only the fields you have. A field you leave out is never touched; send null to clear one. Money is in dollars, rent per month.
curl -X PUT https://nessoo.com/api/partner/v1/units/crm-4411 \
-H "Authorization: Bearer $NESSOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"building": { "address": "160 Water St", "city": "New York", "zip": "10038" },
"unit": "3F",
"neighborhood": "Financial District",
"rent": 4200,
"bedrooms": 1,
"bathrooms": 1,
"available_from": "2026-12-01",
"highlights": ["Laundry in unit", "Doorman"],
"photos": ["https://photos.example.com/4411/1.jpg"]
}'A new apartment answers 202 with "result": "pending_review" until you approve it in the dashboard. Updates to an approved apartment answer 200 with the apartment as it now is.
curl -X PATCH https://nessoo.com/api/partner/v1/units/crm-4411 \
-H "Authorization: Bearer $NESSOO_API_KEY" -H "Content-Type: application/json" \
-d '{ "rent": 4300 }'
curl -X DELETE https://nessoo.com/api/partner/v1/units/crm-4411 \
-H "Authorization: Bearer $NESSOO_API_KEY"With full=true the batch is everything you have listed: an apartment you synced before and leave out goes off the market after two full snapshots in a row without it, so one bad export cannot empty your listings. Retry safely with an Idempotency-Key.
curl -X POST "https://nessoo.com/api/partner/v1/units/batch?full=true" \
-H "Authorization: Bearer $NESSOO_API_KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: nightly-2026-11-09" \
-d '{ "listings": [ { "external_id": "crm-4411", "rent": 4300 }, ... ] }'| Endpoint | What it does |
|---|---|
PUT /units/{external_id} | Create an apartment, or update the fields you send |
PATCH /units/{external_id} | Update an apartment that already exists |
DELETE /units/{external_id} | Take it off the market (send "status": "active" to bring it back) |
PUT /units/{external_id}/photos | Replace its photos, cover first |
GET /units | Your synced apartments, paged; updated_since for changes only |
POST /units/batch | Up to 200 at once; full=true for a whole snapshot |
GET /drafts | What is waiting for review |
GET /runs/{id} | What one sync did, apartment by apartment |
GET, PUT /buildings | Your buildings, by your own id |
All paths start with /api/partner/v1. The complete schema, every field and every error is in the OpenAPI document.
NYC law makes it unlawful to turn away vouchers or any lawful source of income, or families with children. Listings that say so are refused with the reason. Wording that steers toward a kind of tenant is flagged for your review.
Send https links. We fetch each one, remove every byte of location and camera data, and screen it before renters see it. A link you stop sending is removed.
Bodies up to 1 MB. Over the limit you get 429 with Retry-After. Every error is { "error": { "code", "message" } } with a stable code.
We are adding spreadsheet import and feeds from the listing software you already use. Ask your Nessoo contact.
For landlords and brokers