Dialt
Get API key

Developer documentation

Build a realtime voice experience

Dialt is a realtime voice layer you can deploy quickly and improve on your own data, through a simple, opinionated SDK built around your business goals and policies.

Choose your path

Core concepts

The Dialt primitives

  1. Session and audio lifecycle. The Browser SDK handles microphone capture, playback, interruption, reconnects and typed events.
  2. Client tools. Declare what the voice agent can call: name, description, JSON parameters and execution policy. The basic loop is tool_call → host executes → tool_result.
  3. Tool policies. read_only: safe to execute speculatively. requires_permission: Dialt obtains spoken permission before sending the call. expected_duration: what the caller should hear, the answer directly for fast lookups or an acknowledgement first for anything that takes more than about a second. status_label: a safe description of pending work.
  4. Background tools. deferred: true lets long-running work detach from the voice turn. The host retains a stable handle and can later send progress, partial results, completion or cancellation.
  5. Progress and partial results. tool_progress: activity update; does not invoke the model. tool_partial_result: structured intermediate information. reply: true asks Dialt to narrate that partial proactively.
  6. Interactions. A partial can include an interaction when the background job needs a human decision. A resolver binds each answer to an exact client tool and arguments, making approvals and choices deterministic.
  7. Evidence-backed completion. Every result has outcome and verified. Only succeeded + verified: true authorizes Dialt to claim confirmed success. This prevents "I opened it" or "payment sent" claims without evidence.
  8. Stable state and lifecycle events. Tool IDs, deferred handles, interaction IDs, acknowledgements and narration-state events let the client survive queuing, interruption, supersession and reconnects without guessing.
  9. Context injection and typed turns. sendText: submit a user turn. injectContext: add host context. reply: true: request a proactive response to injected context.

The central design choice is deciding which work should be synchronous, backgrounded, proactively narrated, or require a user interaction. The Browser SDK guide, Background tools guide and WebSocket protocol cover those surfaces.

Browser quickstart

Four steps to your first conversation

  1. Install the SDK. Run npm install @dialt/sdk. View it on npm.
  2. Create a persistent key. Keep it on your backend; never ship it in browser JavaScript.
  3. Mint a scoped session credential. Your authenticated backend calls POST /api/v1/session-keys with the persistent key.
  4. Connect the browser SDK. Pass the scoped credential to DialtClient, then unlock audio, connect and start the microphone from a user gesture.

Open the browser guide →

Guides and references

Go deeper