Leasync API Reference

Read and update your commercial real estate records from scripts, integrations, and AI clients. A personal key acts as you, with exactly the permissions you have in the app.

Introduction#

The Leasync API is a JSON REST API for anyone who deals in commercial real estate and wants their Leasync data somewhere else: a spreadsheet, an internal tool, a marketing site, or an AI assistant. It covers the same records you work with in the app: clients, spaces, deals, brokers, landlords, commissions, and the links between clients and spaces.

All requests go to https://www.leasync.ai/api/v1. Responses are JSON. Successful responses wrap the payload in { "data": ... }; list responses add next_cursor. Failures return { "error": { "code", "message" } } with a matching HTTP status.

Always call www.leasync.ai
The bare leasync.ai domain redirects to www, and most HTTP clients drop the Authorization header on that redirect. Use https://www.leasync.ai in every request.

The API is available on the Closer and Veteran plans. Any other workspace receives 402 tier_required. CORS is open to every origin, but a key is a credential: keep it on a server, never in browser code.

Base URL and shapes#

CallShape
GET /meWho the key acts as.
GET /{resource}List. limit, cursor, and per-resource filters.
GET /{resource}/{id}One record, every field.
POST /{resource}Create from a JSON body of column values.
PATCH /{resource}/{id}Update the fields in the body.
DELETE /{resource}/{id}Clients, spaces, brokers, landlords, and links only.
POST /{resource}/{id}/notesAppend a note. Every resource except links.

Resources: clients, spaces, deals, brokers, landlords, commissions, and links.

Quickstart#

Create a key in Settings, Integrations, API keys (see Authentication), then these three calls cover most integrations: search, create, update.

1. Find available spaces in SoHo with venting.

bash
curl "https://www.leasync.ai/api/v1/spaces?listing_type=space&area=soho&venting=true&availability_status=Available" \
  -H "Authorization: Bearer lsk_live_..."

2. Create a lead.

bash
curl -X POST https://www.leasync.ai/api/v1/clients \
  -H "Authorization: Bearer lsk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Blue Bottle Coffee",
    "client_type": "lead",
    "contacts": [
      {
        "name": "Dana Ruiz",
        "email": "dana@bluebottle.com"
      }
    ],
    "concept": "Cafe",
    "use": "Retail",
    "priority": "High",
    "preferred_areas": [
      "SoHo",
      "Nolita"
    ],
    "price_range_min": "15000",
    "price_range_max": "25000"
  }'

3. Move a deal to a new stage, then leave a note.

bash
curl -X PATCH https://www.leasync.ai/api/v1/deals/6f1c8d20-5e3b-4a9f-b2c7-0d8e4a6b1c33 \
  -H "Authorization: Bearer lsk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "stage": "Lease Out", "next_step": "Landlord counsel reviewing" }'

curl -X POST https://www.leasync.ai/api/v1/deals/6f1c8d20-5e3b-4a9f-b2c7-0d8e4a6b1c33/notes \
  -H "Authorization: Bearer lsk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "text": "LL wants 3 months security instead of 2." }'
Field names
Field names are the record's column names, the same ones you see when exporting from the app. Money and size fields are stored as text (for example "15000"). id, organization_id, created_by, and timestamps are set by Leasync and ignored in request bodies.

Prefer an AI client? The MCP server exposes every endpoint as a tool with one config entry.