canonical: https://jentic.com/apis/lofty.com/lofty

# Lofty Service Open APIs

Jentic publishes the only available OpenAPI specification for Lofty Service Open APIs, keeping it validated and agent-ready. Lofty is a real-estate CRM that exposes operations for managing leads, transactions, listings, tasks, notes, calls, emails, SMS, webhooks, custom fields, routing rules, and team membership. The API spans 78 operations across 64 paths, covering both the core lead-to-transaction lifecycle and supporting workflows like agent communication history and Brokermint synchronisation.

## For AI agents

Manage real-estate leads, listings, transactions, tasks, and agent communications inside the Lofty CRM, plus subscribe to webhooks for events.

## Scope

Does not handle MLS data ingestion, document e-signing, or commission disbursement - use for lead, transaction, and agent communication management inside Lofty only.

## Capabilities

- Create, update, delete, and search real-estate leads with full lifecycle support
- Add transactions to a lead and update property addresses on `/v1.0/leads/{leadId}/transaction`
- Send transactional SMS or email through `/v1.0/message/sms/send` and `/v1.0/message/email/send`
- Log calls, emails, and texts as activities and search the historical communication record
- Subscribe to lead, transaction, and agent events via `/v1.0/webhook`
- Manage tasks, notes, and appointments attached to leads
- Configure routing rules and assign leads to team members

## Use cases

### Lead Capture from Website Form

Pipe new website enquiries into Lofty by calling POST `/v1.0/leads` with the contact's name, email, phone, and source. The lead immediately enters the routing rules so it is assigned to the right agent without manual triage. Tags and custom fields can be set in the same request.

Example prompt: Call POST `/v1.0/leads` with name='Jane Doe', email='jane@example.com', source='website', and tag='buyer-2bed' to register the lead.

### Outbound SMS Drip Campaigns

Send templated SMS messages to leads at staged intervals via POST `/v1.0/message/sms/send.` The endpoint records the outbound text in the communication history so agents see the full conversation in context. Pair with `/v1.0/communication/text` to read replies.

Example prompt: POST `/v1.0/message/sms/send` with leadId=12345 and body='Hi Jane, are you free for a tour Saturday?'.

### Transaction Reconciliation with Brokermint

Sync transaction updates from Brokermint into Lofty using PUT `/v1.0/brokermint/transaction` so commissions, closings, and statuses match across systems. The matching lead is updated through PUT `/v1.0/brokermint/lead` in the same flow.

Example prompt: Send PUT `/v1.0/brokermint/transaction` with the Brokermint transaction id and the new closingDate to update the linked Lofty record.

### Real-time Webhooks for Lead Events

Register a webhook with POST `/v1.0/webhook` to receive push notifications when a lead is created, assigned, or updated. The receiver can then trigger downstream automations such as sending the welcome email or notifying the assigned agent.

Example prompt: POST `/v1.0/webhook` with event='lead.created' and url='https://my-app.example/lofty-events' to subscribe.

### AI Agent CRM Updates via Jentic

An agent that reviews voicemails or emails can update Lofty automatically by logging activities, updating lead stage, or scheduling follow-up tasks. Jentic exposes the relevant Lofty endpoints as MCP tools so the agent picks the right operation by intent.

Example prompt: Through Jentic, search 'log a call on a real estate lead', load the Lofty POST `/v1.0/logType` operation, and execute it with leadId and the call summary.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/v1.0/leads` | Create a new lead |
| GET | `/v1.0/leads` | Search for leads |
| POST | `/v1.0/leads/{leadId}/transaction` | Add a transaction to a lead |
| POST | `/v1.0/message/sms/send` | Send an SMS message to a lead |
| POST | `/v1.0/message/email/send` | Send an email message to a lead |
| POST | `/v1.0/webhook` | Subscribe to a webhook event |
| POST | `/v1.0/tasks` | Create a new task on a lead |
| POST | `/v1.0/logType` | Log a call, email, or text activity |

## Key resources

- **Leads** — Create, update, delete, and search lead records
- **Transactions** — Manage transactions and property addresses on a lead
- **Tasks** — Create, update, and delete tasks attached to leads
- **Notes** — Add, retrieve, and search notes on lead records
- **Communications** — Send SMS and email and search call, text, and email history
- **Webhooks** — Subscribe and unsubscribe from lead and transaction events
- **Routing** — Manage routing rules and assignment lists for inbound leads
- **Team** — List members, custom fields, tags, and lead pond resources

## Why Jentic

- **Setup:** Wiring Lofty by hand means setting up its bearer auth, attaching the token to every call against api.lofty.com, and shaping lead, message, and task request bodies yourself. Through Jentic you install once, import Lofty from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Lofty identifies leads and messages through request bodies rather than an account id in the URL path, so scoping is by operation: limit the agent to the operations it needs, such as creating leads or sending an SMS, and leave out webhook or task creation if the agent does not need them.
- **Credential handling:** Your Lofty bearer token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a real estate lead' or 'send an SMS to a lead', and Jentic returns the matching Lofty operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **HubSpot CRM** — General-purpose CRM with broader marketing and sales automation
- **Pipedrive API** — Pipeline-focused sales CRM with a simpler data model
- **Salesforce REST API** — Enterprise CRM with deep customisation
- **Twilio API** — General-purpose SMS, voice, and WhatsApp messaging

## FAQ

### Why is there no official OpenAPI spec for Lofty Service Open APIs?

Lofty does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Lofty Service Open APIs via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Lofty API use?

Lofty uses bearer token authentication. Pass the token as `Authorization: Bearer <token>` on every request. Through Jentic the token lives in the encrypted vault and is injected at execution time, never exposed to the agent.

### Can I send SMS messages to leads with the Lofty API?

Yes. Call POST `/v1.0/message/sms/send` with the leadId and message body. The API records the outbound message in the lead's communication history so it appears in the timeline alongside calls and emails.

### How do I subscribe to webhook events in Lofty?

Call POST `/v1.0/webhook` with the event type and your callback URL. Use GET `/v1.0/webhooks` to list active subscriptions and DELETE `/v1.0/webhook/{subscribeId}` to remove one.

### How do I create a real-estate lead through Jentic?

Run `pip install jentic`, search Jentic for 'create a real estate lead', load the Lofty POST `/v1.0/leads` operation, and execute it with the lead's contact details. Jentic returns the created lead id.

### What are the rate limits for the Lofty API?

The spec does not declare specific numeric rate limits. Implement exponential backoff on HTTP 429 responses. Jentic surfaces 429s so the agent can retry with delay.

### Can I limit what my agent is allowed to do with the Lofty API?

Yes. Because you run Jentic One yourself, your own rules decide which Lofty operations and credentials the agent may use, and Lofty scopes access by operation rather than by an account id in the URL. You can allow only the operations the agent needs, such as creating leads with POST `/v1.0/leads` or sending an SMS with POST `/v1.0/message/sms/send`, while leaving out webhook subscription (POST `/v1.0/webhook`) or task creation (POST `/v1.0/tasks`). The agent can call only what you permit, and the stored bearer token is injected at execution time rather than exposed to the agent.
