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

# Boomtownroi BoomTown API

Jentic publishes the only available OpenAPI specification for BoomTown API, keeping it validated and agent-ready. BoomTown is a real-estate CRM and lead management platform that helps brokerages capture, nurture, and convert prospect leads into closed transactions. The API exposes contacts, communications, todos, transactions, drip plans, and webhooks so agents and integrations can read and update lead records, log calls and texts, manage assigned tasks, and react to lifecycle events. It uses OAuth 2.0 for user authorization plus an x-api-key header derived from the client_id and client_secret hash.

## For AI agents

Manage real-estate CRM contacts, log calls and texts, run drip plans, and react to lead lifecycle webhooks across BoomTown's 142 endpoints.

## Scope

Does not handle MLS listing data, IDX search, or e-signature workflows - use for real-estate CRM contact, communication, drip, and transaction management only.

## Capabilities

- Create, search, and update real-estate contacts with addresses, phone numbers, and email records
- Log calls, texts, notes, and special dates against a contact's timeline
- Assign, pause, resume, and terminate drip plans for nurturing leads
- Manage todos and tasks for agents and contacts within an organization
- Search transactions across the organization with status aggregation
- Subscribe to webhooks for new registrations, contact updates, tags, and transaction changes
- Send and read SMS texts and email threads tied to a contact

## Use cases

### Sync website leads into BoomTown for follow-up

Brokerages pipe leads from their IDX website, paid ad campaigns, and partner portals into BoomTown so every prospect lands in one CRM with assigned ownership and a drip plan. The API accepts new contacts via POST /contacts, attaches phone, email, and address records, and assigns a drip plan in the same flow. Most brokerages launch the integration in a few days using the OAuth flow and webhook subscriptions.

Example prompt: Create a contact for buyer Jane Doe with email jane@example.com and phone +14155550100, then assign drip plan id dp_42 and confirm the assignment id

### Outbound call and text logging from a softphone

Agents make and receive calls and texts in a separate softphone or texting tool, but managers want every interaction logged on the contact's BoomTown timeline for compliance and reporting. The API offers POST /contacts/{contactId}/callLogs and read endpoints for /texts so a middleware service can post call summaries and pull text history without forcing agents to copy-paste. Setup typically takes a sprint.

Example prompt: Append a call log to contact id ct_12345 with duration 240 seconds, outcome 'left voicemail', and the agent user id usr_77

### Drip-plan automation for new buyer leads

Marketing teams run lifecycle drip campaigns that pause when a lead replies and resume after qualification. The API exposes assignedDripPlans endpoints to pause, resume, terminate, and list active plans on a contact, which lets an agent or rules engine react to inbound replies without leaving the BoomTown environment. Drip orchestration typically replaces manual list management within the first week.

Example prompt: Pause the drip plan with id adp_999 on contact ct_12345, then resume it after the agent has confirmed qualification

### Transaction pipeline reporting

Operations leaders need a live view of transactions across the brokerage by status to forecast revenue and spot stuck deals. POST /organizations/{tenantId}/transactions/search and the matching aggregate/status endpoint return filtered transaction lists and counts per status, ready to feed a BI dashboard or weekly stand-up report.

Example prompt: Search transactions for tenant org_abc with status 'pending' updated in the last 30 days and aggregate the results by status

### Agent-driven lead triage via Jentic

An AI agent triages new BoomTown registrations from a webhook, pulls the contact's recent communications, and decides whether to assign a drip plan or escalate to a human agent. Through Jentic the agent searches for 'find a BoomTown contact' and 'assign a drip plan', loads the schemas, and executes the calls without ever holding the OAuth refresh token in its context.

Example prompt: Search Jentic for 'assign a BoomTown drip plan', load the schema, and execute it against contact ct_55555 with drip plan id dp_buyer_warm

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /contacts | Create a new contact |
| GET | /contacts/{contactId} | Retrieve a contact by id |
| POST | /contacts/textSearch | Full-text search across contacts |
| POST | /contacts/{contactId}/callLogs | Log a call to a contact's timeline |
| POST | /contacts/{contactId}/assignedDripPlans | Assign a drip plan to a contact |
| POST | /organizations/{tenantId}/transactions/search | Search transactions across the organization |
| POST | /webhooks/events/contactUpdated | Subscribe to the contactUpdated webhook |
| POST | /oauth2/token | Exchange an authorization code for an access token |

## Key resources

- **Contacts** — Create, search, and update lead and client profiles with addresses, phones, emails, and special dates
- **Communications** — Read call logs, texts, and email threads tied to a contact
- **Todos** — Create and assign tasks to agents and contacts
- **Drip Plans** — Assign, pause, resume, and terminate nurture campaigns on contacts
- **Transactions** — Search and aggregate transactions by status for reporting
- **Webhooks** — Subscribe to lifecycle events such as contactUpdated, newRegistration, and transactionCreated
- **Tags** — Manage organization and user-level tags applied to contacts

## Why Jentic

- **Setup:** Wiring BoomTown by hand means running its OAuth token exchange, deriving the x-api-key hash from your client id and secret, and threading both headers through the CRM contact and transaction calls. Through Jentic you install once, import the BoomTown API from the API Directory, store the credentials once, and your agent calls it.
- **Permission scoping:** BoomTown puts the resource id in the URL path (/contacts/{contactId}, /organizations/{tenantId}/transactions/search), so a rule can pin your agent to one contact or tenant. You choose the operations it may call, so writes like logging a call or assigning a drip plan are only available if you add them, and a reporting agent can stay on the read paths.
- **Credential handling:** Your BoomTown OAuth refresh token and x-api-key are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'log a call in BoomTown' or 'assign a drip plan', and Jentic returns the matching BoomTown operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Real Geeks API** — Real-estate IDX website plus CRM aimed at the same brokerage segment as BoomTown.
- **HubSpot CRM Contacts API** — General-purpose CRM with contact management; not real-estate specific.
- **Pipedrive API** — Sales-pipeline CRM with deal stages but without real-estate transaction primitives.
- **HubSpot Webhooks API** — Webhooks bus often used to fan BoomTown events out to other downstream tools.

## FAQ

### Why is there no official OpenAPI spec for BoomTown API?

BoomTown does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call BoomTown API 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 BoomTown API use?

BoomTown uses OAuth 2.0 with authorization codes and refresh tokens, plus an x-api-key header containing the sha256 hash of your client_id and client_secret. The Access-Token header carries the user access token. Jentic stores both credentials in the vault and injects them at execution so they never enter the agent's context.

### Can I assign a drip plan to a contact with the BoomTown API?

Yes. POST /contacts/{contactId}/assignedDripPlans with the target drip plan id, and use the /resume, /pause, and /terminate sub-paths to control it later. GET /contacts/{contactId}/assignableDripPlans lists which plans are valid for that contact's stage.

### How do I subscribe to webhooks for new registrations through Jentic?

Search Jentic for 'subscribe to a BoomTown webhook', load the POST /webhooks/events/newRegistration schema, and execute it with your callback URL. Run pip install jentic, then call client.search, client.load, and client.execute in sequence.

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

BoomTown does not document public rate limits in the OpenAPI spec; tenants on standard plans should batch contact lookups and rely on webhooks rather than polling. Use POST /contacts/textSearch with focused filters instead of broad GETs to avoid throttling.

### How do I search transactions by status?

Use POST /organizations/{tenantId}/transactions/search for a filtered list and POST /organizations/{tenantId}/transactions/search/aggregate/status for counts grouped by status. Both accept the same filter body, so a dashboard can fetch totals and detail rows in two calls.

### Can I log calls and texts to a contact's timeline?

Yes. POST /contacts/{contactId}/callLogs records call activity with duration and outcome, and GET /contacts/{contactId}/texts returns text history. POST /contacts/{contactId}/texts/markedAsRead clears unread counts after an agent responds in another tool.

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

Yes. Because you run Jentic One yourself, your own rules decide which BoomTown operations and credentials the agent may use. BoomTown carries the resource id in the URL path, such as /contacts/{contactId} and /organizations/{tenantId}/transactions/search, so you can pin an agent to a single contact or tenant. You also choose the operations it can call, so writes like POST /contacts/{contactId}/callLogs or assigning a drip plan are available only if you add them, and a reporting agent can stay on the read and transaction-search paths.
