Skip to documentation
Let’s build
PUBLIC TECHNICAL PREVIEW Production access and integration details are agreed during onboarding.
Amora Docs/Real-time voice calls

DEVELOPER DOCUMENTATION

Real-time voice calls

Server-initiated calls, signed connections and lifecycle management.

The voice experience combines a configured character, real-time audio transport and the lifecycle controls in your application.

Try the demonstration

Use Call Amora on the homepage to open the in-page call panel. You can also use the existing character call page. Microphone permission is requested when you start a call; you can mute or hang up from the panel.

Server-initiated architecture

User chooses Call
  → Browser obtains microphone permission
  → Your backend creates a character call
  → Backend returns scoped connection data
  → Audio client establishes the real-time connection
  → Your application tracks connection and completion

The account-level API key remains on your server. Browsers receive signed session data rather than that key.

Illustrative creation contract

A call-creation integration can use a fixed configured character and a server-enforced duration limit. This request is a preview of the integration pattern; use your assigned production contract before deployment.

{
  "character": "YOUR_ASSIGNED_CHARACTER",
  "call_time_limit_seconds": "300"
}

The integration returns call-specific connection data. While a call is starting, the application checks readiness before opening the audio connection. Preserve signed URLs and query parameters exactly as issued.

Call states

StateApplication behavior
IdleShow the call action and recorded preview
ConnectingPrevent duplicate starts; allow cancellation
ConnectedShow elapsed time, voice activity, mute and hang-up
EndedRelease microphone and audio resources; offer another call
ErrorShow a clear message and an explicit retry action

Microphone and cleanup

Acquire audio only after the user's call action. Keep ownership of the microphone stream so cancellation can stop it even if initialization is incomplete. Stop late-resolving streams after cancellation.

On close, hang-up or page exit, stop local tracks, close the audio client and request server-side call termination. Stop the voice preview before opening a live call.

Mobile behavior

Use HTTPS, clear permission guidance, touch-sized controls and safe-area spacing. Handle permission denial, unavailable devices, network changes and interruptions. Review the mobile guide for the channel-specific considerations.

Building something personal?

Talk to our team about your architecture, character and launch.

Discuss your integration ↗