Record a demand event
Records renter behavior into Resi's demand funnel. If you render Resi data in your own UI, sending these gives the client attribution for the engagement you drive. **Only browser-ingestible types are accepted.** `lead_submitted`, `tour_reserved`, `tour_availability_checked` and `apply_intent_clicked` are recorded server-side by Resi when you call the lead and tour endpoints — sending them yourself double-counts the client's funnel. Rate limit: 120 requests/minute per IP.
/api/v1/demand-eventsRecords renter behavior into Resi's demand funnel. If you render Resi data in your own UI, sending these gives the client attribution for the engagement you drive.
Only browser-ingestible types are accepted. lead_submitted, tour_reserved, tour_availability_checked and apply_intent_clicked are recorded server-side by Resi when you call the lead and tour endpoints — sending them yourself double-counts the client's funnel.
Rate limit: 120 requests/minute per IP.
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/demand-events" \ -H "Content-Type: application/json" \ -d '{ "event_type": "unit_viewed", "property_id": "05003a8a-8f3c-454b-8884-a906ec46f5f5" }'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "event_type": "string", "status": "recorded"}Reserve a tour POST
Books a slot with the property’s tour provider and creates a lead in Resi. Beyond the five base fields, required booking fields come from GET /api/v1/property/{property}/integrations under tour_types[].schema.fields. tour_date must be YYYY-MM-DD and tour_time must be 24-hour HH:MM. A 409 means the selected slot is no longer available.
Record a source observation POST
Records the traffic-source signals present on a page view — landing URL, referrer, query parameters, click ids — so Resi can resolve them to a lead source. Typically emitted once per session by the Resi pixel. The response reports how the observation resolved, which is the fastest way to verify your attribution setup is working. Rate limit: 240 requests/minute per IP.