Inquiries
Create an inquiry
POST /api/v1/inquiries
Anything your form collects beyond the fields below goes in metadata, untyped.
Request body
application/json, shaped as InquiryInput.
| Field | Type | Description |
|---|---|---|
| propertyId | string | Must be one of your published listings. |
| firstName | string | max 100 chars |
| lastName required | string | max 100 chars |
| email required | max 200 chars | |
| phone | string | max 50 chars |
| company | string | The sender’s company, for an HR desk or an agency asking on someone’s behalf. max 200 chars |
| staying | object | Who will stay, when the sender books for someone else, such as an employee or a relative. The sender remains the contact, and a booking made from the inquiry starts with this person as staying. |
| firstName | string | max 100 chars |
| lastName required | string | max 100 chars |
| max 200 chars | ||
| phone | string | max 50 chars |
| company | string | max 200 chars |
| startDate | date | YYYY-MM-DD |
| endDate | date | Must be after startDate. YYYY-MM-DD |
| adults | integer | The tenants picker, one field per age band. 0–20 |
| children | integer | 0–20 |
| infants | integer | 0–20 |
| pets | boolean | |
| message | string | max 10000 chars |
| locale | string | Which language they were reading. max 10 chars |
| source | string | Where the form lives. Defaults to website; manual is the dashboard’s own and refused here. max 50 chars |
| form | enum | Which kind of form sent it: booking, contact, brochure or waitlist. source follows the form, and the confirmation uses that form’s wording from Website › Booking. Without it, a request naming a property or dates is a booking, anything else a contact message. "booking""contact""brochure""waitlist" |
| sendConfirmation | boolean | Sends the guest a confirmation that their request arrived, if the organisation switched on that form’s reply under Website › Booking. It goes once per inquiry, in locale, in the wording set there. metadata.page and metadata.brochureUrl fill its property and brochure links. Send false if your own system already confirms. default true |
| metadata | object | Anything else your form collects, untyped. At most 10 KB serialised. |
Response
201 { id: string }
Errors
Every failure is { error, message }; see Errors. A missing or expired bearer is a 401 on every endpoint
but the token exchange.
| Status | error | When |
|---|---|---|
| 400 | invalid_request | A bad field, with a message naming its path. An unknown or unpublished propertyId is a 400 too. |
| 429 | rate_limited | Too many requests, or the organisation’s daily allowance for website inquiries is spent (500 by default, shared with its built-in website’s forms). |
Notes
- An inquiry never blocks a day. It becomes a booking when staff convert it.