ARIA/Developer Documentation
ARIA Labs SRL · Romania

ARIA Developer Documentation

ariaknows.com is the product site. This is the engineering companion to it.

ARIA is an AI front desk. It answers a business's own customers on WhatsApp and by telephone, in Romanian and English, from that business's own knowledge base and its own connected systems. This site documents how ARIA connects to a property management system, what it reads, what it will never read, and what it will never say.

Every section is labelled

Live runs in production today. Specification is the contract we implement against, not a claim that a given vendor is already connected. Planned does not exist and cannot be relied on. We would rather be dull and accurate than impressive and wrong.

Direction of integration Live

ARIA is a client, not a platform. In a PMS integration, ARIA calls the PMS. The PMS calls nothing. There is no API for a PMS vendor to implement, no SDK to embed, no webhook to build and no engineering effort required on the vendor's side.

This is deliberate. A hotel already owns credentials to its own PMS. It can grant them to a supplier it chooses, and withdraw them, without its PMS vendor becoming a party to the arrangement. The vendor keeps its contractual position and takes on no liability for what a third party does with a customer's own data.

Guest, on WhatsApp or the telephone
      |
      v
ARIA assistant            does not hold PMS credentials, and cannot
      |
      |  internal request, bearer token, read paths only
      v
The property's own ARIA instance      PMS credentials live here, and only here
      |
      |  HTTPS, allowlisted read methods
      v
The property management system

One property, one instance, one credential. There is no shared process holding several properties' PMS keys. A fault in one property's integration is invisible to every other property.

The integration contract Specification

The document a PMS vendor actually needs from an assistant vendor is not a list of endpoints it could call. It is a statement of what the assistant will do inside a customer's account. Six questions, answered in writing, and each one is a section below.

QuestionAnswerSection
What do you read?A fixed capability set. Availability, rates, a reservation belonging to the person messaging, meal plan, extra services.Capability set
What can you write?Nothing. Enforced by an allowlist in code, with no write method referenced anywhere in the client.Read-only
Who holds the key?The property, inside its own instance. Never the assistant process, never a shared store.Credentials
How does the owner stop you?One switch in their own interface. It takes effect on the next message, with nothing to redeploy.Consent
How much load do you add?Conversation-driven, not polled. Design budget of under 200 requests per property per day, and one guest question costs about three of them.Load
What happens when it breaks?The assistant goes quiet and hands the conversation to a human. It never guesses.Failure

Capability set Specification

ARIA consumes capabilities, not vendor endpoints. Each PMS connector maps these to whatever that vendor calls them. A connector that can satisfy only some of them is still useful, and the assistant simply declines to answer in the areas it cannot serve.

CapabilityWhat the guest askedRequired
availability.searchDo you have a room on these dates for this many peopleFor availability answers
rates.quoteWhat does that cost per nightFor price answers
reservation.findByGuestPhoneWhat are the dates of my bookingFor personal answers
reservation.mealPlanIs breakfast included on my bookingOptional
property.extrasWhat else do you offerOptional
property.identityNot guest-facing. Used to verify the credential belongs to this property.Strongly recommended, see below

A guest is matched to a reservation only by the telephone number they are messaging from, compared against the number stored on the reservation. If that does not resolve to exactly one active reservation, ARIA answers nothing personal and hands the conversation to staff. Zero matches and two matches are treated identically. There is no fuzzy fallback, because the failure mode of a fuzzy match is telling one guest about another guest's booking.

Read-only enforcement Live

Read-only is a property of the code, not a promise in a contract.

The practical consequence for a vendor: even a credential that is technically capable of writing, because the vendor issues one token for read and write with no scopes, cannot be used to write by this software. We still ask vendors for a least-privilege credential where one exists, as defence in depth.

Credentials and custody Live

The property owner enters the credential once, in the integrations page of their own instance. From that point:

Connecting an integration does not switch anything on for guests. Each integration carries per-consumer flags, and their defaults are deliberately asymmetric:

ConsumerDefault on connectWhy
Staff assistantEnabledThe owner's own tool, reading the owner's own data, seen by the owner's own team.
Guest-facing assistantDisabledExposing a data source to the public must be a deliberate act, never a side effect of connecting.

The owner turns the guest-facing flag on, and off, from a control in their own interface. The check is enforced at the data boundary rather than in the interface, so revoking it stops the very next message. Nothing needs to be redeployed and nobody needs to be called.

Property identity check Live

Why a connector needs this

A credential is scoped to one property. Paste the credential of a different property, which is easy when one owner runs several, and everything looks correct: the key is valid, the PMS answers, the rooms and prices returned are real. No layer in the stack can detect it, because no layer is malfunctioning.

The only signal available is the property name the PMS itself returns for that credential. ARIA stores it at connect time and compares it with the identity of the business the instance belongs to. On a mismatch it refuses to serve guests, while leaving the staff assistant working, because a person reading an unexpected property name on their own screen can see what it means and a guest on WhatsApp cannot.

Two names for one property is normal, so an owner may confirm the pairing once and is believed afterwards. This is why property.identity matters in a connector even though no guest ever asks for it.

Described honestly, because a control claim should survive being read closely: this is a name-overlap heuristic, not an assertion of identity. It compares distinctive words after dropping generic ones such as hotel, casa, residence, pensiune and srl. If either name reduces to nothing distinctive, it allows rather than blocks, because refusing to serve a property on the strength of our own inability to compare two names would be the worse failure. It catches the case it was built for, a credential belonging to a visibly different property, and it is one layer among several rather than a guarantee.

Request volume and limits Specification

ARIA does not poll. Calls are triggered by a guest asking something that needs live data, so volume tracks conversations, not clock time.

One question we ask every vendor

Where a token generation limit is documented per client and source IP, tell us which applies. One server serving many properties, each with its own client credential, can exhaust a per-IP limit even with perfect token reuse. We would rather design around it than discover it in production.

Failure behaviour Live

Every path fails closed, to a human.

ConditionWhat ARIA does
PMS unreachable, or slow past the timeoutAnswers nothing from the PMS. Says a colleague will come back, and flags the conversation to staff.
Credential invalid or revokedSame as above. The owner is notified in their own instance.
Zero or more than one matching reservationDeclines to answer anything personal. Never picks the most likely one.
A field is missing or malformedDeclines that answer specifically. Never substitutes a default.
Property identity mismatchRefuses to serve guests from that integration entirely.

An outage means the assistant is silent. It never means the assistant is wrong.

Data we never request Specification

A connector must not implement these even where the vendor exposes them.


The boundary between the assistant and the PMS Live

The guest-facing assistant does not hold PMS credentials and cannot obtain them. It asks the property's own instance a question and receives an answer. Everything below is enforced at that boundary rather than in an interface, which is what makes the owner's switch immediate.

Property of the boundaryHow it behaves
AuthenticationMachine to machine, not a user session, and it carries no user identity. Dormant unless explicitly configured, so it cannot be reached before it has been deliberately set up.
Owner consentChecked on every single call, not cached from the interface. Withdrawing it stops the next message.
Property identityVerified on every call, as described above. A mismatch stops guest answers and says why.
ScopeOne property, one instance, one credential. There is no shared process holding several properties' keys, so there is no query that could return another property's data.
Occupancy awarenessA room is offered only when it is free for every night of the stay. The rate card is never used to answer a guest, because it answers whether a room type is sold at a price on those dates, not whether one is free.
Distinguishing no from unknownAn empty result means nothing is free and is a real answer. A failure to read is a different state entirely, and it produces silence and a handover, never an implied no.
Deliberately not published

The hostnames, paths, header names and payload shapes of this internal boundary are not documented here. Nothing outside a property's own deployment is meant to call it, so publishing a callable surface would add attack surface and no integration value. A partner who needs the detail under an agreement gets it directly.


What the assistant never does Live

Connecting a PMS gives the assistant a source of facts that changes hourly. It does not relax any rule about what may be said. These gates are deterministic and sit in front of the language model, not after it.

"No" is deliberately split three ways, because they must not be said in the same words: sold out, free but nothing seats the party, and free but not priced. The last two promise a colleague.

Dates are parsed deterministically rather than by the model, because the model's failure mode is quoting a confident price for the wrong week.


Data protection posture Live

Short, and deliberately not padded. Anything we cannot state plainly is marked as absent rather than dressed up.

QuestionAnswer
RolesThe business is the controller of its guests' data. ARIA Labs SRL is its processor. Where a business connects its PMS, its PMS vendor remains that business's own processor and does not become ours: we hold no relationship with them and read only what the business authorises with its own credential.
Sub-processorsWe use sub-processors for the language model, speech to text, text to speech, telephony, WhatsApp messaging and hosting. The current named list, with locations, is provided with the data processing agreement and we notify before it changes. We do not publish it here because a stale list is worse than none.
LocationHosting is in the EU. We select EU endpoints for processing where a vendor offers one.
What we store from a PMSThe credential, and the property name returned at connect time, which is what the identity check compares against. Guest data read to answer a question is used to answer it and is not accumulated into a separate store. Disconnecting an integration removes the credential and stops all reads on the next message.
What we never requestSee Data we never request. Bulk guest contact lists are the important one.
Breach notificationWithout undue delay and within 72 hours of becoming aware, to the controller, with what we know at the time rather than after we have finished tidying it.
DPAAvailable on request and signed before any credential is issued.
Uptime commitmentNone today. One region, no standby, no status page. We would rather say that here than agree to a number we cannot hold. What we do commit to is the failure behaviour above: when we cannot answer correctly, we go quiet and hand over to a person.

Not available yet Planned

Listed so that nobody builds against something that does not exist. None of the following is implemented, and none of it should be relied on in a commercial discussion.

CapabilityWhat it would doStatus
Provisioning APICreate and configure a property programmatically, so a partner could onboard from its own interface.Planned
Status APIRead a property's assistant state, integration health and message volume.Planned
Inbound event webhookAccept a reservation event pushed by a PMS instead of being polled, reducing our call volume further.Planned
Response cachingDeduplicate repeated lookups inside one conversation, to cut upstream calls further.Planned
Additional PMS connectorsAny vendor whose API satisfies the capability set above.On request

Contact

Product, pricing and what ARIA does for a business: ariaknows.com.

Integration questions and connector proposals: hello@ariaknows.com. Security reports go to the same address with SECURITY in the subject, and we answer within one working day.

We do not operate a public sandbox. What we ask a vendor for is one test property on their side, which is where a connector gets built before it goes near a real guest.

We ask every vendor the same five things before writing a connector: a test property with credentials, who issues the credential (the property or the vendor), whether the token generation limit is per client or per source IP, whether one token may serve several properties, and whether any event push exists.

ARIA Labs SRL, Romania. CUI 55486308, J2026051630009. Not registered for VAT.

Version 2026.09.02. This page is dated on purpose: a document whose value is being honest about status should say when its status was checked.

Sections are labelled Live, Specification or Planned. Where this document and the software disagree, the software is right and this page is a bug. Tell us.