Record a source observation
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.
/api/v1/source-observationsRecords 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.
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/source-observations" \ -H "Content-Type: application/json" \ -d '{ "property_id": "05003a8a-8f3c-454b-8884-a906ec46f5f5" }'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "status": "string", "lead_source_id": "469d28fe-9089-451a-9760-3aacea46022c", "resi_source_key": "string", "resi_source_name": "string"}Record a demand event POST
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.
Purge the website cache for a property or portfolio POST
Purges the page cache of the website host connected to the target (Kinsta or WP Engine), and of any merged parent property's site. It does not reach any other CDN — wire your own revalidation alongside it. Exactly one of `property_id` or `portfolio_id` is required; sending both is rejected. Returns `202` unconditionally, including when the target does not exist or has nothing clearable — it does not confirm that a purge occurred, and it deliberately does not disclose whether the id is real. Rate limit: 30 requests/minute, keyed on the target id rather than the caller's IP.