Inquiries
Enquiries people have made about your properties, and the state you have moved each one to. Scoped to the properties your organisation owns: an enquiry belongs to whoever owns the property it is about.
/v1/api/inquiriesinquiries:readList inquiries
Enquiries about your properties, newest first.
Cursor paginated like every other collection. Filter by property or by status to build a work queue rather than paging the lot.
Query parameters
| Name | Type | Description |
|---|---|---|
status | enum | Only enquiries in this state. new | read | replied | closed | spam example: new |
property_id | string | Only enquiries about this property. example: prop_9ad0ddd2e01949ddb471899aba67d577 |
limit | integer | Page size. Clamped to 200. default: 50example: 50 |
cursor | string | Opaque cursor from the previous page's meta.next_cursor. example: eyJpZCI6InByb3BfMWI3N2UwYTRmMiJ9 |
sort | string | Field to order by. Prefix with a minus for descending. example: -created_at |
Response
{
"data": [
{
"id": "inq_db6f3d5316884c649ea1848c278bbf44",
"property_id": "prop_f954911b55e14b65b762ee55f01e03b7",
"sender_name": "Anna Schmidt",
"sender_email": "anna@example.com",
"sender_phone": "+49 30 555",
"message": "Is the balcony south facing?",
"status": "new",
"channel": "web",
"consent_text": "I agree to be contacted about this property.",
"consented_at": "2026-08-13T10:43:26Z",
"created_at": "2026-08-13T10:43:26Z"
}
],
"meta": { "has_more": false, "limit": 50 }
}https://api.skautik.com/v1/api/inquiries
GET /v1/api/inquiries?status=new&property_id=prop_9ad0ddd2e01949ddb471899aba67d577&limit=50 HTTP/1.1
Host: api.skautik.com
Authorization: Bearer sk_live_…/v1/api/inquiries/{inquiry_id}inquiries:readRetrieve an inquiry
One enquiry in full.
An enquiry about a property your organisation does not own answers exactly as a missing one does, so the API cannot be used to probe for records you cannot read.
Path parameters
| Name | Type | Description |
|---|---|---|
inquiry_idrequired | string | Inquiry identifier. example: inq_db6f3d5316884c649ea1848c278bbf44 |
https://api.skautik.com/v1/api/inquiries/{inquiry_id}
GET /v1/api/inquiries/inq_db6f3d5316884c649ea1848c278bbf44 HTTP/1.1
Host: api.skautik.com
Authorization: Bearer sk_live_…/v1/api/inquiries/{inquiry_id}/readinquiries:readMark as read
Record that you have seen it.
read_at is set once and does not move on later calls. It answers when you first saw the enquiry, which is what the person waiting for a reply cares about; overwriting it would answer when you last looked, which nobody asked. Marking read will not pull a status backwards: an enquiry you have already replied to stays replied.
Path parameters
| Name | Type | Description |
|---|---|---|
inquiry_idrequired | string | Inquiry identifier. example: inq_db6f3d5316884c649ea1848c278bbf44 |
https://api.skautik.com/v1/api/inquiries/{inquiry_id}/read
POST /v1/api/inquiries/inq_db6f3d5316884c649ea1848c278bbf44/read HTTP/1.1
Host: api.skautik.com
Authorization: Bearer sk_live_…/v1/api/inquiries/{inquiry_id}inquiries:readSet the status
Move an enquiry through your workflow.
Setting replied records when it happened, and that record survives a later move to closed: the fact that somebody was answered is not undone by filing the conversation away.
Path parameters
| Name | Type | Description |
|---|---|---|
inquiry_idrequired | string | Inquiry identifier. example: inq_db6f3d5316884c649ea1848c278bbf44 |
Body fields
| Name | Type | Description |
|---|---|---|
statusrequired | string | The state to move it to. new | read | replied | closed | spam example: new |
Request body
{ "status": "replied" }https://api.skautik.com/v1/api/inquiries/{inquiry_id}
PATCH /v1/api/inquiries/inq_db6f3d5316884c649ea1848c278bbf44 HTTP/1.1
Host: api.skautik.com
Authorization: Bearer sk_live_…
Content-Type: application/json
{ "status": "replied" }