API Overview
Use the Veridien API to build your own direct reservation website, guest app, loyalty integration, or back-office automation on top of your property's data: availability and rates, guests and loyalty, reservations, and folios. It runs on the same engine as Veridien's own reservation flows.
It is a plain HTTP and JSON API. You authenticate with an API key, send and receive JSON, and read standard status codes. Everything is scoped to one property, so a key can only read or change the data of the property it belongs to.
Built for real apps
This API drives the live booking and loyalty flow for Veridien properties end to end: search availability, hold inventory, register a guest, confirm a reservation, post folio charges, and earn or redeem loyalty points. Follow the Quickstart to run that whole flow yourself.
Base URL
Every request goes to one versioned base URL:
https://veridien.app/api/v1Each path in this reference is relative to that base. The health check, for example, is https://veridien.app/api/v1/health.
Authentication
You authenticate with a Bearer API key in the Authorization header:
Authorization: Bearer YOUR_API_KEYEach key is bound to one property and carries a set of scopes that decide which endpoints it may call. You create and revoke keys in the dashboard under Settings → API keys. The public meta endpoints (/health, /openapi.json) need no key; everything else does.
See Authentication for the key format, the full scope list, and a working example.
Conventions at a glance
- JSON in, JSON out. Send
Content-Type: application/jsonon requests with a body. Field names aresnake_case(room_type_id,check_in_date). - Money is strings. Amounts are decimal strings with two places (
"249.00"), so nothing is lost to floating-point rounding. Currency is a 3-letter ISO code. - Dates are strings. Calendar dates are
YYYY-MM-DD. Timestamps are ISO 8601 (2026-06-19T08:30:00.000Z). - Errors are uniform. Every failure returns the same
errorenvelope with a machine-readablecodeand arequest_id. - Retries are safe. Requests that change data accept an
Idempotency-Key, so a retry never double-books or double-charges.
The full rules are in Conventions.
What you can do
| Area | Endpoints |
|---|---|
| Catalog | Property details, room types, availability, rates, and add-on services. See Property and catalog. |
| Offers | List public rate plans and packages, and validate a promotion code before you quote it. See Offers and promo codes. |
| Rate management | Create and edit rate plans, promotions, seasonal intervals, inclusions, and promo codes. See Rate management. |
| Guests | Register or link a guest, read and update profiles, read loyalty, redeem points. See Guests and loyalty. |
| Reservations | Hold inventory, confirm a hold into a reservation, list and read reservations, cancel. See Reservations. |
| Folios | Read a reservation's folio and post charges to it. See Folios. |
Versioning
The API is versioned in the path (/api/v1). Changes that would break an existing integration ship under a new version; additive changes (new endpoints, new optional fields) are made within v1. Treat unknown response fields as additive and ignore them rather than failing.
OpenAPI schema
You can fetch a machine-readable OpenAPI 3.1 description of every endpoint, without a key, at:
GET https://veridien.app/api/v1/openapi.jsonUse it to generate typed clients or to check which endpoints are deployed. The response carries an ETag, so a repeat request with If-None-Match gets a 304 with no body.