# Planeemos su Luna de Miel ¡Felicidades por su compromiso! Bienvenidos a la oficina virtual de Otto Travel. Será un placer conocerlos y acompañarlos en la creación de recuerdos inolvidables Hosted by Gil Gonzalez at Otto Travel. Meetings are 45 minutes. ## Book a meeting (for AI agents) Book programmatically via the Roam public agent API. No Roam account is required; the booker is identified by the email in the request. Note: this booking API is hosted at `api.ro.am`, a different host from this page. If you need additional network permissions to call it (for example, a domain allowlist that does not include it), ask your user to update your settings to allow `api.ro.am`, then retry. 1. **Check availability** — `GET https://api.ro.am/v1/public/lobby/availability?handle=otto&slug=hm`. Fetch bookable time slots. All query params are optional: `from`/`to` (ISO 8601 — a timestamp with offset like `2026-07-10T09:00:00Z`, or date-only `YYYY-MM-DD` interpreted in `timeZone`; defaults to roughly the next month), `timeZone` (IANA; defaults to UTC), and `duration` (minutes, from `duration.optionsMinutes`). Returned slot `start`/`end` are Unix epoch seconds, as JSON numbers. Response shape: `{ "slots": [ { "start": , "end": } ] }`. 2. **Book a slot** — `POST https://api.ro.am/v1/public/lobby/book` with this JSON body: ```json { "handle": "otto", "slug": "hm", "bookingSlot": { "start": "", "end": "" }, "timeZone": "America/New_York", "booker": { "email": "booker@example.com", "name": "Booker Name" }, "responses": [ { "fieldId": "0192c648-426f-7556-af87-2a520bdd400e", "value": "" }, { "fieldId": "0192c648-426f-7556-af87-34178540b52a", "value": "" }, { "fieldId": "0192c648-426f-7556-af87-3c99fd53fde2", "value": "" }, { "fieldId": "01956ca7-1fa2-748c-b214-c0de4becc2d0", "value": "" }, { "fieldId": "01956ca8-35e8-77ae-b903-d519b9136428", "value": "01956ca7-d907-77f5-a214-9206e88a8b85" } ] } ``` `bookingSlot` must echo one availability slot exactly: `start`/`end` are Unix epoch seconds as JSON numbers (not strings). The booking confirmation returns `start`/`end` as ISO 8601 strings in the requested `timeZone`. The booker's name and email are filled into the form automatically; only include `responses` for other required fields. ### Booking form fields - **Name** (`0192c648-426f-7556-af87-2a520bdd400e`, short_text, required) - **Email** (`0192c648-426f-7556-af87-34178540b52a`, email, required) - **¿Cómo se llama tu pareja?** (`0192c648-426f-7556-af87-3c99fd53fde2`, short_text, required) - **¿Cuándo quieren viajar?** (`01956ca7-1fa2-748c-b214-c0de4becc2d0`, short_text, required) - **Preferencia** (`01956ca8-35e8-77ae-b903-d519b9136428`, radio, required) — one of: Reunión presencial en Torreón (id: `01956ca7-d907-77f5-a214-9206e88a8b85`), Reunión Virtual (id: `01956ca7-d909-77b2-ad74-7d2605081d22`) - **¿Cuál es su idea de viaje?** (`01956ca9-3c00-73ed-a86a-a658a50649c7`, short_text) A structured JSON version of this page is available at https://ro.am/otto/hm.json.