List lead sources
Lead sources configured on the property. Use a source's `code` as `resi_source_key` when submitting leads so your traffic is attributed.
/api/v1/property/{property}/lead-sourcesLead sources configured on the property. Use a source's code as resi_source_key when submitting leads so your traffic is attributed.
Path Parameters
Property UUID. This route is unauthenticated and unscoped, so it does not accept a slug — to address a property by slug, use /api/v1/connection/{connection}/property/{property}.
uuidResponse Body
application/json
application/json
curl -X GET "https://example.com/api/v1/property/019dbc38-d49e-7310-95d4-711a5b7a4b40/lead-sources"{ "propertyId": "8e8b8450-dc1b-4360-8109-7067337b42cb", "fallbackPhone": "string", "fallbackEmail": "string", "externalSourceField": "string", "sources": [ { "id": 0, "property_id": "05003a8a-8f3c-454b-8884-a906ec46f5f5", "name": "string", "code": "string", "external_source_key": "string", "source": "string", "phone": "string", "email": "string" } ], "resolution": { "sourceObservationEndpoint": "string", "clickIdParams": [ "gclid" ], "rules": [ { "id": 0, "type": "string", "parameter": "string", "pattern": "string", "value": "string", "condition_operator": "all", "conditions": [ { "type": "string", "parameter": "string", "pattern": "string", "value": "string" } ], "priority": 0, "lead_source_id": 0, "source": "string", "external_source_key": "string", "phone": "string" } ] }}List forms GET
Enabled forms for the property, with field definitions and the CRM destinations each routes to. Discover the `form_id` here rather than hardcoding it, and re-fetch when lead submission returns a `404`, which means the form no longer exists. A `422` is about the submitted values (email, `form_id`, dates), not the form.
Submit a lead POST
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.