Skip to content

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, listingId are required
  • phone is 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 metadata JSONB column for admin review
  • Triggers emails: inquiry-sent confirmation to the sender + inquiry-received notification 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"
    }
  ]
}