---
title: "Validate answers against the current host form and prepare an expiring proposal. This does not submit an enquiry or notify the host. Present the complete returned review, property and chosen contact details to the guest, then ask for explicit approval. Keep the approval token private; it is bound to this exact proposal. Use a fresh UUID idempotencyKey for each new proposal and reuse it for network retries."
method: POST
path: "/api/public/v1/properties/{id}/enquiry-proposals"
---

# Validate answers against the current host form and prepare an expiring proposal. This does not submit an enquiry or notify the host. Present the complete returned review, property and chosen contact details to the guest, then ask for explicit approval. Keep the approval token private; it is bound to this exact proposal. Use a fresh UUID idempotencyKey for each new proposal and reuse it for network retries.

`POST /api/public/v1/properties/{id}/enquiry-proposals`

## Request

- Base URL: `https://chucho.ai`
- URL: `https://chucho.ai/api/public/v1/properties/{id}/enquiry-proposals`
- Auth: none required

## Path parameters

- `id` string, required

## Request body

- object
  - `revision` integer, required
  - `locale` 'en' | 'es', required
  - `answers` object, required
  - `idempotencyKey` string, uuid, required

## Response `200`

Enquiry workflow result

- object
  - `approvalToken` string, required
  - `expiresAt` string, required
  - `review` object[], required
    - `title` string, required
    - `titleEs` string, nullable, required
    - `fields` object[], required
      - `id` string, required
      - `type` 'short' | 'long' | 'choice' | 'ack' | 'date' | 'time' | 'contact' | 'names' | 'email' | 'phone' | 'party_size', required
      - `label` string, required
      - `labelEs` string, nullable, required
      - `value` union, required
        - string
        - number
        - boolean
  - `propertyId` string, required
  - `propertyName` string, required
  - `bookingStatus` 'requires_host_confirmation', required
  - `reservationCreated` false, required

## Other responses

- `400`: Invalid form or approval
- `403`: Approval token invalid
- `404`: Property or form unavailable
- `409`: Form changed or idempotency conflict
- `410`: Proposal expired
- `429`: Rate limit

---

[API](https://skmtc.dev/chucho/apis/chucho-public-property-discovery.md) · [All operations](https://skmtc.dev/chucho/apis/chucho-public-property-discovery/llms.txt) · [OpenAPI document](https://skmtc.dev/chucho/apis/chucho-public-property-discovery/revisions/b80049fc8cf0?raw)
