Going live
There is no separate sandbox or test mode. You integrate against the live service. The first launch is limited and partners are hand-picked, so Kheelona may add a test mode later. Until then, build carefully, and expect your tests to use real sessions.
Every session counts against your account: it takes one of your concurrent places and its minutes are counted. Test within your session limit. Ask the Kheelona team what your limits are: the maximum number of sessions at once, the longest session and, if one is set, a monthly allowance. See Limits.
Kheelona is best effort during the partner pilot, and planned maintenance is announced in advance. Your product should cope with a refused session, a busy answer and a dropped connection.
Checklist
Section titled “Checklist”Keys and secrets
- The API key is only on your server, in a secret store, and in no repository, page, app or log.
- Your mint route authenticates the user before it creates a session.
- You know how to rotate a key, and you have done it once.
Browsers
- Your production page is on
https, and its origin is in Allowed origins. - You asked Kheelona to turn development access off, and the page still works.
- Your page has a strict Content Security Policy. See Security.
- The microphone is requested from a click, and the page explains what to do when it is denied.
- “Tap to allow sound” is handled with
resumeAudio(). - You tested on the browsers and phones your users have, on a mobile network too, which may use the WebSocket fallback.
Errors and limits
- You handle every code in Errors and retries, and you retry only what is retryable, with a new session after a failed connect.
- When Kheelona is busy, your product says so kindly and tries again after the wait.
- When the session is about to end (the
warningevent), your product can say goodbye or start a new session. - You keep the
request_idof every HTTP error, and the session ID with the code of everyerrorevent, so we can find it.
Users and privacy
-
end_user_refis an opaque ID of yours, andmetadataholds no personal data. -
instructionsholds only what the voice needs. - You have the consent you need from your users, including a parent’s approval for children, and you tell them that conversations are handled by AI services. See the data and privacy policy.
- You know what you do with captions and transcripts: Kheelona does not keep them.
- If you use the
safetyevent for safeguarding, someone is responsible for reading it.
The conversation
- You tried every language you declare. Beta and alpha languages are marked, so test them with care.
- You chose
interruptionsfor your devices. See Interruptions and echo. - A long silence and the time limit end a session cleanly in your product.
Start small. Let a few real users in, watch the Connection log and Usage pages of your console and your own logs, then widen.