API Endpoints
Complete reference for all Hen Hideaways API endpoints.
API Endpoints Reference
Base URL: https://www.henhideaways.com/api/zapier/v1
All endpoints require authentication via API token. See the Authentication guide for details.
Authentication Test
GET /auth
Test your API connection and verify your token is valid.
Request:
curl -X GET "https://www.henhideaways.com/api/zapier/v1/auth" \
-H "Authorization: Bearer hh_owner_your_token_here"Response (200 OK):
{
"id": "uuid-of-owner",
"email": "owner@example.com"
}Error Response (401 Unauthorized):
{
"error": "Unauthorized"
}Properties
GET /properties
List all properties owned by the authenticated owner.
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 100 | Maximum number of properties to return (1-100) |
Request:
curl -X GET "https://www.henhideaways.com/api/zapier/v1/properties?limit=50" \
-H "Authorization: Bearer hh_owner_your_token_here"Response (200 OK):
{
"properties": [
{
"id": "property-uuid",
"title": "Luxury Hen House in Brighton",
"status": "active",
"location": "Brighton, East Sussex",
"url_slug": "luxury-hen-house-brighton",
"unique_code": "HH-BR-123"
},
{
"id": "property-uuid-2",
"title": "Coastal Cottage Cornwall",
"status": "active",
"location": "St Ives, Cornwall",
"url_slug": "coastal-cottage-cornwall",
"unique_code": "HH-CO-456"
}
]
}Enquiries
GET /enquiries
List or search enquiries for the authenticated owner's properties.
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 50 | Maximum number of enquiries to return (1-100) |
property_id | string (UUID) | - | Filter by specific property |
status | enum | - | Filter by status: sent, responded, or archived |
since | string (ISO 8601) | - | Only return enquiries after this timestamp |
Request:
curl -X GET "https://www.henhideaways.com/api/zapier/v1/enquiries?limit=10&status=sent" \
-H "Authorization: Bearer hh_owner_your_token_here"Response (200 OK):
{
"enquiries": [
{
"id": "enquiry-uuid",
"property_id": "property-uuid",
"property_title": "Luxury Hen House in Brighton",
"property_url": "https://www.henhideaways.com/properties/luxury-hen-house-brighton",
"subject": "Weekend Hen Party Booking Enquiry",
"message": "Hi, I'm interested in booking your property for a hen weekend...",
"status": "sent",
"user_name": "Sarah Johnson",
"user_email": "sarah@example.com",
"party_details": {
"group_size": 12,
"check_in": "2026-06-15",
"check_out": "2026-06-17",
"occasion": "hen_party"
},
"sent_at": "2026-04-15T14:30:00Z"
}
]
}GET /enquiries/:id
Retrieve a single enquiry by ID.
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string (UUID) | Enquiry ID |
Request:
curl -X GET "https://www.henhideaways.com/api/zapier/v1/enquiries/enquiry-uuid" \
-H "Authorization: Bearer hh_owner_your_token_here"Response (200 OK):
{
"enquiry": {
"id": "enquiry-uuid",
"property_id": "property-uuid",
"property_title": "Luxury Hen House in Brighton",
"property_url": "https://www.henhideaways.com/properties/luxury-hen-house-brighton",
"subject": "Weekend Hen Party Booking Enquiry",
"message": "Hi, I'm interested in booking your property for a hen weekend...",
"status": "sent",
"user_name": "Sarah Johnson",
"user_email": "sarah@example.com",
"party_details": {
"group_size": 12,
"check_in": "2026-06-15",
"check_out": "2026-06-17",
"occasion": "hen_party"
},
"sent_at": "2026-04-15T14:30:00Z"
}
}Error Response (404 Not Found):
{
"error": "Enquiry not found"
}PATCH /enquiries/:id
Update the status of an enquiry.
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string (UUID) | Enquiry ID |
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
status | enum | Yes | New status: sent, responded, or archived |
Request:
curl -X PATCH "https://www.henhideaways.com/api/zapier/v1/enquiries/enquiry-uuid" \
-H "Authorization: Bearer hh_owner_your_token_here" \
-H "Content-Type: application/json" \
-d '{"status": "responded"}'Response (200 OK):
{
"enquiry": {
"id": "enquiry-uuid",
"property_id": "property-uuid",
"property_title": "Luxury Hen House in Brighton",
"status": "responded",
"user_name": "Sarah Johnson",
"user_email": "sarah@example.com",
"sent_at": "2026-04-15T14:30:00Z"
}
}Error Response (400 Bad Request):
{
"error": "Invalid enquiry update",
"details": {
"fieldErrors": {
"status": ["Invalid enum value. Expected 'sent' | 'responded' | 'archived'"]
}
}
}Webhooks
POST /hooks/enquiries
Subscribe to receive webhook notifications for new enquiries.
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
targetUrl | string (URL) | Yes | Your webhook endpoint URL |
propertyId | string (UUID) | No | Filter to specific property (null for all properties) |
Request:
curl -X POST "https://www.henhideaways.com/api/zapier/v1/hooks/enquiries" \
-H "Authorization: Bearer hh_owner_your_token_here" \
-H "Content-Type: application/json" \
-d '{
"targetUrl": "https://hooks.zapier.com/hooks/catch/123456/abcdef/",
"propertyId": null
}'Response (200 OK):
{
"id": "subscription-uuid",
"targetUrl": "https://hooks.zapier.com/hooks/catch/123456/abcdef/",
"propertyId": null,
"event": "enquiry.created"
}Webhook Payload:
When an enquiry is created, the following payload will be sent to your target URL:
{
"event": "enquiry.created",
"enquiry_id": "enquiry-uuid",
"property_id": "property-uuid",
"property_title": "Luxury Hen House in Brighton",
"property_url": "https://www.henhideaways.com/properties/luxury-hen-house-brighton",
"owner_email": "owner@example.com",
"subject": "Weekend Hen Party Booking Enquiry",
"message": "Hi, I'm interested in booking...",
"status": "sent",
"sent_at": "2026-04-15T14:30:00Z",
"user_name": "Sarah Johnson",
"user_email": "sarah@example.com",
"party_details": {
"group_size": 12,
"check_in": "2026-06-15",
"check_out": "2026-06-17",
"occasion": "hen_party"
}
}DELETE /hooks/enquiries
Unsubscribe from webhook notifications.
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
targetUrl | string (URL) | Yes | The webhook URL to remove |
propertyId | string (UUID) | No | Property ID (must match subscription) |
Request:
curl -X DELETE "https://www.henhideaways.com/api/zapier/v1/hooks/enquiries" \
-H "Authorization: Bearer hh_owner_your_token_here" \
-H "Content-Type: application/json" \
-d '{
"targetUrl": "https://hooks.zapier.com/hooks/catch/123456/abcdef/",
"propertyId": null
}'Response (200 OK):
{
"success": true
}Error Responses
All endpoints may return the following error responses:
401 Unauthorized
The API token is missing, invalid, or has been revoked.
{
"error": "Unauthorized"
}400 Bad Request
The request body or parameters are invalid.
{
"error": "Invalid request",
"details": {
"fieldErrors": {
"status": ["Invalid value"]
}
}
}404 Not Found
The requested resource doesn't exist or you don't have access to it.
{
"error": "Not found"
}500 Internal Server Error
An unexpected error occurred on the server.
{
"error": "Internal server error"
}Rate Limiting
The API implements fair usage rate limiting:
- Standard limit: 1000 requests per hour per token
- Burst limit: 100 requests per minute per token
If you exceed the rate limit, you'll receive a 429 Too Many Requests response:
{
"error": "Rate limit exceeded",
"retryAfter": 60
}The retryAfter field indicates how many seconds to wait before retrying.
Best Practices
- Use webhooks instead of polling when possible for real-time data
- Cache property lists - they rarely change
- Handle errors gracefully - implement retry logic with exponential backoff
- Respect rate limits - implement request queuing if needed
- Validate responses - check for errors before processing data
- Use HTTPS - all API requests must use HTTPS
Need Help?
- Review the Getting Started guide
- Learn about Webhooks
- Check Authentication for token issues
- Contact support for additional assistance