Appearance
Inquiries API
POST /inquiries
Submit an inquiry for a listing. No authentication required.
Body
json
{
"listingId": "uuid",
"name": "John Doe",
"email": "john@example.com",
"phone": "514-555-0123",
"message": "Is this still available?"
}name,email,message,listingIdare requiredphoneis optional- Rate limited to 5 inquiries per email per hour
- If user is logged in, their userId is automatically linked
- Server automatically captures submitter metadata (IP, user agent, device type, browser, OS, locale, referer) and stores it in a
metadataJSONB column for admin review - Triggers emails:
inquiry-sentconfirmation to the sender +inquiry-receivednotification to the listing landlord (via RabbitMQ email queue)
Response (201)
json
{
"inquiry": { "id": "uuid" }
}GET /inquiries/my
Get the current user's sent inquiries. Requires authentication.
Response (200)
json
{
"inquiries": [
{
"id": "uuid",
"listingId": "uuid",
"message": "Is this still available?",
"status": "new",
"createdAt": "2026-03-02T00:00:00.000Z",
"listingTitle": "Bright 3.5 on Plateau"
}
]
}GET /inquiries/listing/:listingId
Get inquiries received for a specific listing. Requires authentication as listing owner.
Response (200)
json
{
"inquiries": [
{
"id": "uuid",
"name": "John Doe",
"email": "john@example.com",
"phone": "514-555-0123",
"message": "Is this still available?",
"status": "new",
"createdAt": "2026-03-02T00:00:00.000Z"
}
]
}