# Bohita Presence > Presence is a realtime audio-and-video agent that can notice the person it > is talking to, remain interruptible, and keep the conversation moving while > tools run asynchronously. ## Install Presence If a human sent you here to add Presence to a product, start with the small web installation path. Load the complete corpus only if you prefer one request: - [Current public API contract: hosted web Sessions](https://presence.bohita.com/llms/install-web.txt) - [Curated Presence OpenAPI](https://presence.bohita.com/openapi.json) - [Capability availability](https://presence.bohita.com/llms/capabilities.txt) - [Complete one-request corpus](https://presence.bohita.com/llms-full.txt) - [Create or manage an API key](https://presence.bohita.com/account/api-keys) - [Buy Presence minutes](https://presence.bohita.com/#pricing) The human signs in once and creates an API key. Creating a key establishes application identity but grants no usage and cannot access the free demo. Paid Session creation reserves Presence credits and returns HTTP `402` when the account does not have enough. Purchasing credits activates existing keys immediately; no rotation is required. Never ask the human to paste an API key into frontend source, chat logs, a URL, or a browser-exposed environment variable. The `presence_server` customer API key supports Presence drafts and publishing, custom role/guidance, knowledge, and tools, plus web, voice, meeting, and approved outbound-phone Sessions. Inbound phone remains carrier-originated; managed outbound phone requires Bohita approval. Trusted local agents, CLIs, desktop applications, servers, and browser BFFs use: ```bash export BOHITA_API_BASE_URL=https://api.bohita.com export BOHITA_API_KEY=bohita_sk_live_... ``` The self-serve integration requires a trusted place to hold that key: an existing BFF, serverless function, traditional server, trusted local coding agent process, or desktop host. Framework choice is not the constraint; a Vite or other static frontend works when it calls such a boundary. A browser-only production SPA with no trusted process cannot use the secret API key directly. The browser-safe, origin-scoped bootstrap credential for that topology is not self-serve yet. [Contact Bohita](mailto:hello@bohita.com) before choosing that architecture. ## Minimal web Session Create short-lived web Sessions through: ```http POST https://api.bohita.com/v1/sessions Authorization: Bearer $BOHITA_API_KEY Idempotency-Key: Content-Type: application/json { "external_id": "your-opaque-user-or-guest-id", "surface": {"type": "web"}, "startup": "managed" } ``` Keep the idempotency key stable for network retries of the same user action. Generate a new key only when the user deliberately starts a new Session. The response contains an opaque `embed_url`. Return only the safe session fields to the authenticated browser and mount that URL unchanged: ```html ``` Keep `display-capture` in the permission policy so the hosted client can offer screen sharing after an explicit user action. Screen sharing remains optional. For local testing, serve the page from `http://localhost`; do not double-click the HTML file or open it with a `file://` URL. For example, run `python3 -m http.server 8000` in its directory and open `http://localhost:8000`. A `file://` page can leave the hosted frame blank in a way that looks like a Presence failure. Treat `embed_url` as opaque. The full contract covers response fields, readiness, typed errors, privacy, session cleanup, sharing, and payments. After a Session ends, read its owner-authorized durable results from `GET /v1/sessions/{session_id}/outputs`. Summaries and notes retained by the published Presence appear as artifacts alongside any transcript or recording manifest. Outputs may finish after `/end`; do not assume the first read is final. Public HTTP errors include `400`, `401`, `402`, `403`, `404`, `409`, `422`, `429`, `500`, and `503`. `Idempotency-Key` is required for Session creation and explicit Session end; omitting it returns `400`. Error bodies have a top-level `detail` containing either a string, a typed `{code,message}` object, or validation details. Branch on HTTP status first, then use a typed code when present. Use bounded backoff for `429`, `500`, and `503`; `Retry-After` is not currently guaranteed. ## Evaluating rather than integrating - [Evaluation index](https://presence.bohita.com/llms/evaluate.txt) - [Product and live demo](https://presence.bohita.com/) - [Product trials and onboarding](https://presence.bohita.com/try-your-product) - [Benchmarks](https://presence.bohita.com/benchmarks) - [Coding agents](https://presence.bohita.com/coding-agents) - [Security and privacy](https://presence.bohita.com/security) - [Forty-turn voice benchmark](https://presence.bohita.com/posts/what-happens-on-turn-forty) - [Recorded coding-agent run](https://presence.bohita.com/evidence/clerk-auth-evidence-v1.txt) ## Release and changelog This site is pinned to Presence public contract release `v0.1.5`, commit `5d1d6f4d2276253dc3f037e0c83e3af4cc405a42`. - [Changelog](https://presence.bohita.com/changelog.txt) - [Repository](https://github.com/virevolai/presence) ## Demo and pricing The launch demo includes five sessions per enrolled account, each capped at five connected minutes. Paid Presence Sessions are billed by occupied time. Public offers are $9 for 60 minutes and $100 for 1,000 minutes; credits do not expire. - [Try Presence and see pricing](https://presence.bohita.com/#pricing) ## Support - Product availability and integration support: [email Bohita](mailto:hello@bohita.com)