HotelNative API Reference

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 Dashboard (NextAuth)PMS Session

All 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 Portal (Magic Link)guest_session cookie

Guests authenticate via a magic link emailed to them. A 7-day session cookie (`guest_session`) is set on successful verification. No password required.

Travel Agent Portal (Magic Link)ta_session cookie

Travel agents authenticate via magic link. A 30-day session cookie (`ta_session`) is set. The portal is accessible from the hotel website footer.

Public EndpointsNone

Booking engine, availability, and visitor tracking endpoints are public. They are scoped to a hotel by the `appFolder` parameter.

Channel Manager Integration

FeatureChannexRoomCloud
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 supportedBooking.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.js

Used 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 Link

Guests 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 Link

Same 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 Feature

Hotel 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

POST/api/guest/concierge

In-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"
      }
    }
  ]
}
Auth: Guest session cookie (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

DomainAgent ReadAgent WriteExamples
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 approvalView 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

POST/api/agentic/images

Generate 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.

Prerequisite: Requires an 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

POST/api/agentic/vision

Analyze 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

Chat Model: Anthropic Claude (claude-sonnet-4-6) Β Β·Β Image Model: Google Gemini (gemini-2.0-flash) Β Β·Β Vision Model: Multimodal AI Β Β·Β Context: Full PMS data per request Β Β·Β Scoping: All agent calls are organization-scoped β€” no cross-tenant data access

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",
    "...": "..."
  }
}
EventTriggerdata fields
reservation/createdNew booking created via PMS or public booking engine{ bookingId, bookingReference, guestName, guestEmail, checkIn, checkOut, numAdults, roomTypeId, totalAmount, source }
reservation/status_changedBooking status changes (e.g. confirmed β†’ checked_in){ bookingId, previousStatus, newStatus, changedAt }
reservation/dates_changedCheck-in or check-out date modified{ bookingId, previousCheckIn, previousCheckOut, newCheckIn, newCheckOut }
reservation/accommodation_changedRoom type or room number reassigned{ bookingId, previousRoomTypeId, newRoomTypeId, roomNumber }
reservation/notes_changedSpecial requests or internal notes updated{ bookingId, notes, specialRequests }
roomblock/createdRoom block created (maintenance, renovation, group hold){ blockId, count, reason, startDate, endDate }
roomblock/removedRoom block released{ blockId, roomId, reason }
roomblock/details_changedBlock reason, dates, or status updated{ blockId, changes: Record<string, unknown> }
housekeeping/room_condition_changedHousekeeping status updated on any room{ roomId, roomNumber, previousStatus, newStatus, updatedBy }
night_audit/completedNight audit run successfully{ auditDate, checkouts, noShows, totalRevenue, nightAuditId }
accounting/transactionFolio charge posted or voided{ bookingId, chargeId, chargeType, amount, currency, description, action }
guest/createdNew guest profile created{ guestId, firstName, lastName, email, nationality }
guest/details_changedGuest profile updated{ guestId, changes: Record<string, unknown> }
Signature verification: Every delivery includes 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.

CodeStatusMeaning
200OKRequest succeeded. Response body contains data.
201CreatedResource created successfully.
400Bad RequestMissing or invalid parameters. Check the `error` field.
401UnauthorizedNo valid session. User must authenticate.
403ForbiddenAuthenticated but insufficient permissions.
404Not FoundResource not found or invalid `appFolder`.
409ConflictConflict β€” typically used for availability sold out.
500Server ErrorUnexpected server error. Check server logs.

Standard Error Response

{
  "ok": false,
  "error": "Room type not found",
  "code": "NOT_FOUND"
}
Contact Agent

Get in Touch

We'll respond within 24 hours

Or call directly

+1 305 3399576