Submit a lead
Creates a lead in Resi and triggers the client's leasing workflow: email notifications per the form's settings, a push through the form's CRM connections, and a `lead_submitted` demand event. **The payload is intentionally open.** Only `form_id` and `email` are validated; every other key you send is stored on the lead and forwarded to the client's CRM. Send the full context you collected — `first_name`, `phone`, `bedrooms`, `pets`, `message` — as flat top-level keys. Do not nest. **Attribution.** `resi_source_key` is matched exactly against a lead source `code` on the property and is the reliable path; `resi_source_name` is a normalized display-name fallback. Without either, the lead is stored unattributed and your traffic is invisible in the client's reporting. **No idempotency and no rate limit.** A retried request creates a second lead. Deduplicate on your side before retrying, and put your own spam controls (CAPTCHA, honeypot, edge rate limit) in front of the form.
/api/v1/leadsCreates a lead in Resi and triggers the client's leasing workflow: email notifications per the form's settings, a push through the form's CRM connections, and a lead_submitted demand event.
The payload is intentionally open. Only form_id and email are validated; every other key you send is stored on the lead and forwarded to the client's CRM. Send the full context you collected — first_name, phone, bedrooms, pets, message — as flat top-level keys. Do not nest.
Attribution. resi_source_key is matched exactly against a lead source code on the property and is the reliable path; resi_source_name is a normalized display-name fallback. Without either, the lead is stored unattributed and your traffic is invisible in the client's reporting.
No idempotency and no rate limit. A retried request creates a second lead. Deduplicate on your side before retrying, and put your own spam controls (CAPTCHA, honeypot, edge rate limit) in front of the form.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/leads" \ -H "Content-Type: application/json" \ -d '{ "form_id": "string", "email": "user@example.com" }'{ "message": "string"}List lead sources GET
Lead sources configured on the property. Use a source's `code` as `resi_source_key` when submitting leads so your traffic is attributed.
Check tour availability POST
Queries the property’s configured tour provider live and returns available slots. Booking fields are published by GET /api/v1/property/{property}/integrations under tour_types[].schema.fields. Because this proxies to a third party, clients should handle 502 responses by falling back to the lead form.