Developers

Generate audio. Start a conversation.

Two plain requests: one returns a recording in any preset voice, the other brings your agent into a live call.

  • JSON over HTTPS
  • Signed webhooks
  • Audio or video sessions
POST/v1/audio Generate audio
{"voice": "lilt","language": "fr","title": "Welcome to Hearthlane","text": "Bienvenue chez Hearthlane. Je suis Neri…"}
201aud_7Kq2 0:30
POST/v1/agents/neri/sessions Start a session
{"mode": "video","fallback": "audio"}

Response201 Created

{"id": "ses_41Hd","participant": "Neri · AI agent","state": "connecting"}
Neri, the Hearthlane onboarding agent Neri AI agent connected · 0:04
Hearthlane · Your first session

Hearthlane

Your first session

Twenty minutes, one topic you choose. Neri can walk you through it before you book.

  • Pick one topic
  • Choose a time
  • Meet your tutor
Book your session
Neri AI agent
Start video Audio only

Put Neri on a page in three lines

Load the script, place the agent, choose a mode. Visitors meet the same character you rehearsed.

HTMLfirst-session.html Embed
  1. 1<script src="voicelabs-embed.js" defer></script>
  2. 2<voicelabs-agent agent="neri" mode="video"
  3. 3 fallback="audio"></voicelabs-agent>
  1. 1

    Load the embed once. One script per page, on the domains you list.

  2. 2

    Place the agent. Neri appears where the tag sits, video first.

  3. 3

    Set a fallback. No camera or a weak network, and she carries on by audio.

What a meeting connection asks for

Neri joins as a named participant who can hear, speak and show video. Nothing else is requested.

  1. 1Named, alwaysThe name and the AI agent label are set by Voicelabs. Your code cannot hide them.
  2. 2Video is optionalLeave video.show out and Neri joins by audio, same voice and personality.
Meeting connection scope v1
Neri, the Hearthlane onboarding agent

Neri · AI agent would like to join

Hearthlane onboarding · Tuesday 10:00 · requested by Sela Renn

Allowed

  • Join as a named participantShown to everyone as “Neri · AI agent”participant.join
  • Hear the meeting audioLive, for the length of the callaudio.listen
  • Speak in the meetingWith the voice preset Liltaudio.speak
  • Show video OptionalNeri's face and speaking expressionsvideo.show

Not asked

  • Record the meetingNever without everyone's consent
  • Read the chat history
  • Send invitations for you
Revoke at any time Not nowAllow
  1. 3Recording needs consentVoicelabs never records a meeting without the consent of everyone in it.
  2. 4Revoke, and Neri leavesRemoving the connection ends her place in the call at once.

When video drops, the call continues

Retry video or carry on by audio. The session keeps Neri's configuration and tells your code what changed.

Video lost 10:04:51

Video connection lost

Neri is still in the call. Choose how to continue.

Retry videoContinue with audio
Neri AI agent
Configuration kept Voice LiltWarm, concise, curiousEN, FRHandoff: billing
Session events ses_41Hd
  1. 10:02:11session.connectingmode=video
  2. 10:02:14session.connectedparticipant="Neri · AI agent"
  3. 10:04:51session.video_failedreason=network options=retry_video,continue_with_audio
  4. 10:04:58session.mode_changedfrom=video to=audio config=kept
  5. 10:04:58session.metercounting=audio_call_minutes

Handle it

session.on("video_failed", (event) => {event.continueWithAudio() // or event.retryVideo()})
  • Retry video reconnects the camera while the audio carries on.

  • Continue with audio keeps the same voice, personality and facts.

  • Minutes follow the mode. From the switch, they count as audio-call minutes.

Webhooks

Every change arrives as an event

Point one endpoint at Voicelabs and follow recordings and sessions as they happen.

POST/hooks/voicelabs Your endpoint
{"type": "session.handoff","session": "ses_41Hd","agent": "neri","reason": "billing","to": "Sela Renn's team"}
  • Signed with your workspace secret
  • Retried until your endpoint answers 2xx
  • In order within each session
Event When it fires Includes
session.connecting The agent is joining the call id, mode
session.connected The agent is in, named as an AI agent participant, mode
session.video_failed The video connection dropped reason, options
session.mode_changed The call moved between video and audio from, to, config
session.handoff A person was brought in at your handoff point reason, to, summary
session.ended The call is over and its minutes are counted audio_minutes, video_minutes

The minutes in audio.ready and session.ended match the meters on your bill. See pricing

The Voicelabs cast together in couture on a pearl-grey studio backdrop: Pell, Maru, Neri, Ivo and Sabe

Meet your agent before your customers do

Cast it, rehearse it, then invite it into the call.