Hen Hideaways
APIZapier API

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:

ParameterTypeDefaultDescription
limitinteger100Maximum 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:

ParameterTypeDefaultDescription
limitinteger50Maximum number of enquiries to return (1-100)
property_idstring (UUID)-Filter by specific property
statusenum-Filter by status: sent, responded, or archived
sincestring (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:

ParameterTypeDescription
idstring (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:

ParameterTypeDescription
idstring (UUID)Enquiry ID

Request Body:

FieldTypeRequiredDescription
statusenumYesNew 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:

FieldTypeRequiredDescription
targetUrlstring (URL)YesYour webhook endpoint URL
propertyIdstring (UUID)NoFilter 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:

FieldTypeRequiredDescription
targetUrlstring (URL)YesThe webhook URL to remove
propertyIdstring (UUID)NoProperty 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

  1. Use webhooks instead of polling when possible for real-time data
  2. Cache property lists - they rarely change
  3. Handle errors gracefully - implement retry logic with exponential backoff
  4. Respect rate limits - implement request queuing if needed
  5. Validate responses - check for errors before processing data
  6. Use HTTPS - all API requests must use HTTPS

Need Help?

On this page