HotelNative API Reference
Comprehensive API documentation for the HotelNative hospitality platform
Base URL
https://hotelnative.ai
API Format
REST / JSON
Authentication
NextAuth + Cookie Sessions
Platform Overview
HotelNative is an AI-native Property Management System (PMS) and Channel Manager built for independent hotels. It provides a unified API layer that replaces Opera PMS + SiteMinder + a hotel website in a single multi-tenant platform.
PMS
Front desk, reservations, housekeeping, invoicing
Channel Manager
Sync to Booking.com, Expedia, Airbnb via Channex or RoomCloud
Booking Engine
Direct booking widget with payment processing (Tilopay)
Guest Portal
Self-service app with AI concierge (Claude claude-sonnet-4-6)
Travel Agent Portal
Negotiated rates, bookings, commission statements
Visitor Analytics
Real-time hotel website visitor tracking β no third-party tools
Authentication Methods
PMS SessionAll PMS endpoints use NextAuth.js session authentication. Staff sign in at /dashboard/login with email + password. The session token is stored in a secure httpOnly cookie.
guest_session cookieGuests authenticate via a magic link emailed to them. A 7-day session cookie (`guest_session`) is set on successful verification. No password required.
ta_session cookieTravel agents authenticate via magic link. A 30-day session cookie (`ta_session`) is set. The portal is accessible from the hotel website footer.
NoneBooking engine, availability, and visitor tracking endpoints are public. They are scoped to a hotel by the `appFolder` parameter.
Channel Manager Integration
| Feature | Channex | RoomCloud |
|---|---|---|
| Availability push | β Separate call | β Combined (modifyInventory) |
| Rate push | β Separate call | β Combined (modifyInventory) |
| Reservation push | β Create + update | β Not supported (pull only) |
| Webhook receive | β | β /api/pms/roomcloud/webhook |
| Poll mode | β | β /api/pms/roomcloud/poll |
| OTAs supported | Booking.com, Expedia, Airbnb, 450+ | Booking.com, Expedia, Airbnb, 150+ |
Authentication
HotelNative uses three distinct authentication mechanisms depending on the caller type.
Dashboard (Staff) Authentication
NextAuth.jsUsed by all /api/pms/ endpoints. Staff log in via email + password at /dashboard.
{
"POST /api/auth/signin": "Standard NextAuth signin endpoint",
"cookies": {
"next-auth.session-token": "Secure httpOnly cookie (auto-managed by NextAuth)"
}
}Guest Portal Authentication
Magic LinkGuests receive a magic link by email. On verification, a 7-day guest_session cookie is set.
{
"flow": [
"POST /api/guest/auth/request β email sent",
"GET /api/guest/auth/verify?token=XXX β cookie set",
"All /api/guest/* calls use cookie automatically"
]
}Travel Agent Portal Authentication
Magic LinkSame magic-link pattern. 30-day ta_session cookie. Agents log in from the hotel website footer.
{
"flow": [
"POST /api/travel-agents/portal/auth/login β email sent",
"GET /api/travel-agents/portal/auth/verify?token=XXX β cookie set",
"All /api/travel-agents/portal/* calls use cookie automatically"
]
}AI Agents
Flagship FeatureHotel Native ships with a built-in AI agent layer powered by Claude (claude-sonnet-4-6) with full authenticated access to every PMS domain. Unlike Cloudbeds β which requires third-party integrations like Whistle or Revinate to add AI β Hotel Native has Claude baked in at every layer.
π€ What makes this different from Cloudbeds
Cloudbeds has no native AI agent. Every competing PMS requires third-party add-ons (Whistle, Operto, Revinate) to add AI capabilities β each one a separate contract, separate integration, separate cost. Hotel Native ships with Claude built in at every layer: guest-facing portal, staff dashboard, and developer API.
Guest Concierge Agent
In-room AI assistant for checked-in guests via the Guest Portal
/api/guest/conciergeIn-house guests interact via the Guest Portal after authenticating via magic link. The agent has read access to the guest's current reservation, folio charges, and service request history. It can answer questions, submit service requests, and provide local recommendations β all grounded in real hotel data.
Request
{
"message": "What time is checkout and can I get late checkout?",
"bookingId": "uuid"
}Response
{
"reply": "Standard checkout is at noon. I can request a 2pm late checkout for you β would you like me to do that?",
"actions": [
{
"type": "service_request",
"label": "Request late checkout",
"data": {
"type": "late_checkout"
}
}
]
}guest_session) required. Agent is scoped to the authenticated guest's booking only.Staff Operations Agent
Natural language PMS queries for hotel staff from the dashboard
Hotel staff interact with the AI assistant from within the PMS dashboard. The agent has full read/write access to all PMS domains under the authenticated organization. Staff can query reservations in natural language, get housekeeping summaries, draft guest communications, and surface anomalies.
βShow me all checkouts tomorrowβ
Lists due-out reservations with room numbers and guest names
βWhich rooms are dirty and unassigned?β
Returns housekeeping status + assigns tasks if requested
βDraft a WhatsApp message for room 204 about checkoutβ
Generates message using guest name + checkout time from booking
βAny overdue checkouts or unpaid folios?β
Cross-references booking status with payment records
Agent Capabilities Matrix
What the AI agent can read and write across each PMS domain
| Domain | Agent Read | Agent Write | Examples |
|---|---|---|---|
| Reservations | β | β | Create, modify dates, update guest info, check-in, check-out |
| Rooms & Rates | β | β | Check availability, update rates, block rooms |
| Housekeeping | β | β | Query room status, assign tasks, mark rooms clean |
| Guests | β | β | Look up guest history, add notes, update profile |
| Payments & Folio | β | β οΈ with approval | View charges; post charges requires manager confirmation |
| Service Requests | β | β | View and create service requests from guest context |
| Staff | β | β | Query schedules, clock records (read only) |
| Channel Manager | β | β | Push availability and rate updates |
| Reports & Analytics | β | β | Revenue summaries, occupancy stats, visitor analytics |
AI Image Generation
Generate photorealistic images from text prompts using Google Gemini
/api/agentic/imagesGenerate AI images for hotel marketing, website content, and social media. Uses Gemini image generation models with automatic prompt enhancement, style control, and direct upload to Cloudflare R2 CDN. Images are auto-converted to WebP and saved to the media library.
image-generator agent configured in AI Agents with a Gemini API key in organization integrations.Request
{
"organizationId": "uuid",
"prompt": "Luxury hotel pool area at sunset with tropical plants",
"style": "professional photography",
"enhancePrompt": true,
"sectionContext": {
"sectionType": "hero",
"title": "Welcome to KC Hotel",
"industry": "hospitality"
}
}Response
{
"success": true,
"cdnUrl": "https://media.hellonative.ai/tenants/org-uuid/ai-generated-1709832000.webp",
"url": "https://media.hellonative.ai/tenants/org-uuid/ai-generated-1709832000.webp",
"prompt": "A photorealistic luxury hotel pool area at golden hour sunset...",
"model": "gemini-2.0-flash-exp-image-generation"
}Prompt Enhancement
AI refines your prompt using section context and the agent system prompt for better results
Auto R2 Upload
Generated images are converted to WebP, uploaded to Cloudflare R2 CDN, and saved to the media library
Style Control
Pass a style parameter (e.g. "professional photography", "minimalist", "watercolor") to guide the output
Photorealistic Default
All prompts are augmented with photorealistic instructions to prevent cartoon/illustration outputs
AI Vision (Image Analysis)
Analyze images using multimodal AI β describe, extract text, identify objects
/api/agentic/visionAnalyze hotel images, guest documents, receipts, and property photos using multimodal AI. Supports URL-based or base64 image input. Use cases include passport/ID reading for digital check-in, property photo descriptions for SEO alt text, and receipt processing.
Request
{
"organizationId": "uuid",
"imageUrl": "https://media.hellonative.ai/tenants/org/photo.webp",
"prompt": "Describe this hotel room photo for a website listing",
"task": "describe"
}Response
{
"description": "A spacious junior suite with king-size bed, warm wooden accents, floor-to-ceiling windows overlooking tropical gardens, and a modern en-suite bathroom.",
"tags": [
"hotel room",
"junior suite",
"king bed",
"garden view"
]
}task: βdescribeβ
Generate natural language descriptions for property photos
task: βextractβ
OCR text extraction from documents, passports, and receipts
task: βanalyzeβ
Identify objects, room features, and quality issues in photos
Booking Engine
Public-facing endpoints used by the hotel website booking widget. No authentication required β requests are scoped to a hotel by `appFolder`.
Reservations (PMS)
Create, manage, and update hotel reservations from the Property Management System. All endpoints require dashboard authentication.
Rooms & Rates (PMS)
Manage room types, rate plans, pricing, and physical room inventory.
Guests (PMS)
Guest profiles, history, and notes. Guest records are automatically created from bookings and linked across stays.
Custom Fields
Define extra fields to store arbitrary data on reservations or guests. Admins create field definitions (name, type, applies_to) in Settings β Policies β Custom Fields. Values are stored per entity (booking or guest) and can be retrieved or upserted via the API.
Housekeeping
Manage room cleaning status, housekeeping tasks, and daily assignment sheets.
Invoices & Payments
Manage folio charges, invoices, and electronic invoicing (Hacienda β Costa Rica tax authority).
Accounting
Transaction ledger and trial balance API. Combines folio charges and payments into a unified view for accounting exports and end-of-day reporting.
POS & Folio Charges
Post restaurant, spa, minibar, and other point-of-sale charges directly to a guest folio. Supports tax calculation, void/reversal, and fires `accounting/transaction` webhooks on every mutation.
Staff Management
Staff directory, role assignments, shift tracking, and time-clock operations.
Travel Agents (PMS)
Manage travel agent accounts, negotiated rates, commission tracking, and settlement statements.
Allotment Blocks
Pre-allocated inventory held for groups, conferences, and travel agency partners. Separate from maintenance room blocks β allotments are tentative or definite holds that count against availability.
Guest Portal
Self-service portal for in-house guests. Magic link authentication β no password required. Session cookie: `guest_session` (7-day TTL).
Travel Agent Portal
Self-service portal for travel agents to view negotiated rates, submit bookings for approval, and track commissions. Magic link auth β session cookie: `ta_session` (30-day TTL).
Channel Manager
Integrate with OTAs via Channex or RoomCloud. Both providers are supported via a factory pattern controlled by integrations.activeChannelManager in the organization record ("channex" | "roomcloud" | "none"). RoomCloud uses XML over HTTP; Channex uses REST. The pushAvailabilityUpdate() factory function routes to the correct provider automatically.
Digital Check-In
QR-code-based self check-in flow. A unique token is issued per booking; guests complete registration, upload their ID, and sign digitally.
Visitor Analytics
Real-time and historical website visitor tracking for hotel websites. No third-party tools β all data stays in your database.
Service Requests
In-room service requests from guests (via Guest Portal) managed by hotel staff.
Door Locks
Provider-agnostic digital key management. Tracks key lifecycle (issue, cancel, expire) for mobile keys and keycards. Integrate any lock provider (Dormakaba, ASSA ABLOY, Salto, VingCard) by listening to the `doorLockKey/key_requested` outbound webhook and writing back `externalKeyId` via PATCH.
Groups
Manage group bookings: corporate events, weddings, tour operators. A group has a header record, client roster, reservations, and notes.
Floor Plan
Manage the physical layout of the property β buildings, floors, and per-room positions used by the visual floor-plan view.
Hotel Settings
Property configuration including check-in/out times, late checkout policies, tax rates, and per-room-type pricing rules.
Webhooks (Inbound)
Inbound webhook receivers for external integrations β payment processors, CRM platforms, and channel managers.
Webhooks (Outbound)
HotelNative fires HTTP POST events to your endpoint when key operations happen in the PMS. Subscribe via PMS β Settings β Webhooks UI or the API below. SIGNATURE VERIFICATION β Every outbound request includes an X-HotelNative-Signature header using HMAC-SHA256 (Stripe-style). The format is: t=<unix_timestamp>,v1=<hmac_hex>. To verify: concatenate the timestamp + "." + raw request body, then HMAC-SHA256 it with your subscription secret. Compare to the v1 value. Reject if |now - t| > 300s to prevent replay attacks. SUPPORTED EVENTS (14 total): Reservations: reservation/created, reservation/updated, reservation/cancelled, reservation/checked_in, reservation/checked_out, reservation/status_changed Payments: payment/received, payment/refunded Guests: guest/created, guest/updated Housekeeping: housekeeping/task_created, housekeeping/task_completed Rates: rate/updated System: webhook/test All events share a common envelope: { id, event, organizationId, timestamp, data }.
Sandbox
Test your integration against a dedicated sandbox organization pre-seeded with demo rooms, bookings, and guests. Sandbox data is isolated from production and can be reset at any time. To get a sandbox account, email hello@hotelnative.ai.
AI-Native Platform
The core differentiator of Hotel Native: every module is connected to AI. Unlike legacy PMS platforms bolted with chatbots, Hotel Native is built AI-first β Claude Sonnet 4.6 powers the concierge, the upsell engine, staff automation, and agentic workflows that act autonomously across reservations, housekeeping, communications, and revenue management.
Self-Check-In Kiosk
Hotel Native includes a full touchscreen self-check-in kiosk at /kiosk. Guests scan a QR code or enter their booking reference, verify identity, optionally upload ID documents, and complete check-in without front desk staff. Supports bilingual EN/ES interface and integrates with door lock providers.
Upsell Engine
Hotel Native's multi-channel upsell engine sends personalized upgrade and add-on offers to guests via email and WhatsApp. Templates are configurable per property and triggered automatically based on check-in timing. All sends are logged with delivery status.
WhatsApp Integration
Hotel Native uses Baileys β a self-hosted WhatsApp Web client β to send and receive WhatsApp messages directly without Meta's Business API fees. The connection is managed server-side via QR code pairing. Inbound messages can trigger AI concierge responses, service requests, and booking lookups.
Email & SMS
Hotel Native sends transactional and marketing emails via SMTP (configurable per property). Automated emails fire for booking confirmation, check-in instructions, upsell offers, invoice delivery, and travel agent communications. SMS is supported via third-party integrations (Twilio, Telnyx) for OTP and guest notifications.
Marketing & Ads
Hotel Native integrates with Google Analytics 4, Meta (Facebook) Pixel, Google Ads conversions, and Google Search Console. Booking events fire automatically as conversions. The visitor analytics module tracks multi-touch attribution so you know which channels are generating reservations.
Blog & Media
Hotel Native ships a markdown-based blog CMS for each property. Blog posts are stored as markdown files and served with full SEO metadata, bilingual support, and structured data. Media (images, documents) is stored on Cloudflare R2 (S3-compatible) via signed upload URLs.
Channex Channel Manager
Hotel Native is a certified Channex channel manager integration. Channex syncs room availability and rates to OTA channels (Booking.com, Expedia, Airbnb, and 400+ others) in real-time via XML APIs. Hotel Native also supports RoomCloud as an alternative channel manager β switchable at runtime without a restart.
Event Catalogue
All events are delivered with this envelope:
{
"id": "evt_uuid",
"event": "reservation/created",
"timestamp": "2026-03-04T15:30:00.000Z",
"organizationId": "org_uuid",
"data": {
"bookingId": "uuid",
"bookingReference": "HN-20260304-ABCD",
"...": "..."
}
}| Event | Trigger | data fields |
|---|---|---|
reservation/created | New booking created via PMS or public booking engine | { bookingId, bookingReference, guestName, guestEmail, checkIn, checkOut, numAdults, roomTypeId, totalAmount, source } |
reservation/status_changed | Booking status changes (e.g. confirmed β checked_in) | { bookingId, previousStatus, newStatus, changedAt } |
reservation/dates_changed | Check-in or check-out date modified | { bookingId, previousCheckIn, previousCheckOut, newCheckIn, newCheckOut } |
reservation/accommodation_changed | Room type or room number reassigned | { bookingId, previousRoomTypeId, newRoomTypeId, roomNumber } |
reservation/notes_changed | Special requests or internal notes updated | { bookingId, notes, specialRequests } |
roomblock/created | Room block created (maintenance, renovation, group hold) | { blockId, count, reason, startDate, endDate } |
roomblock/removed | Room block released | { blockId, roomId, reason } |
roomblock/details_changed | Block reason, dates, or status updated | { blockId, changes: Record<string, unknown> } |
housekeeping/room_condition_changed | Housekeeping status updated on any room | { roomId, roomNumber, previousStatus, newStatus, updatedBy } |
night_audit/completed | Night audit run successfully | { auditDate, checkouts, noShows, totalRevenue, nightAuditId } |
accounting/transaction | Folio charge posted or voided | { bookingId, chargeId, chargeType, amount, currency, description, action } |
guest/created | New guest profile created | { guestId, firstName, lastName, email, nationality } |
guest/details_changed | Guest profile updated | { guestId, changes: Record<string, unknown> } |
X-HotelNative-Signature: t=<unix>,v1=<hex>. Compute HMAC-SHA256(secret, "<t>.<body>") and compare. Reject requests older than 5 minutes.Errors & Status Codes
All endpoints return JSON. Errors always include an `error` or `message` field.
| Code | Status | Meaning |
|---|---|---|
| 200 | OK | Request succeeded. Response body contains data. |
| 201 | Created | Resource created successfully. |
| 400 | Bad Request | Missing or invalid parameters. Check the `error` field. |
| 401 | Unauthorized | No valid session. User must authenticate. |
| 403 | Forbidden | Authenticated but insufficient permissions. |
| 404 | Not Found | Resource not found or invalid `appFolder`. |
| 409 | Conflict | Conflict β typically used for availability sold out. |
| 500 | Server Error | Unexpected server error. Check server logs. |
Standard Error Response
{
"ok": false,
"error": "Room type not found",
"code": "NOT_FOUND"
}