lyre.au/Documentation
Dashboard

Quickstart

Deploy your first AI voice agent in under 5 minutes. This guide walks you through API key generation, provider configuration, agent creation, making a WebRTC call, and monitoring.

Prerequisites: A LYRE account at dashboard.lyre.au and provider API keys for at least one STT, LLM, and TTS service.
1

Get your API key

Log into the LYRE dashboard and navigate to Settings → API Keys. Click Generate Key, give it a name, and copy the key. You will not be able to see the full key again.

Store it as an environment variable

export LYRE_API_KEY="lyre_sk_live_abc123..."

All API requests authenticate via a Bearer token in the Authorization header.

2

Configure providers

LYRE needs three provider types: STT (speech-to-text), LLM (language model), and TTS (text-to-speech). Configure them in the dashboard under Providers or via the API.

curl — add a Groq LLM provider

curl -X POST https://api.lyre.au/v1/providers \
  -H "Authorization: Bearer $LYRE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "llm",
    "provider": "groq",
    "api_key": "gsk_...",
    "models": ["llama-3.3-70b-versatile"]
  }'

curl — add Deepgram STT

curl -X POST https://api.lyre.au/v1/providers \
  -H "Authorization: Bearer $LYRE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "stt",
    "provider": "deepgram",
    "api_key": "dg_...",
    "models": ["nova-2"]
  }'

curl — add ElevenLabs TTS

curl -X POST https://api.lyre.au/v1/providers \
  -H "Authorization: Bearer $LYRE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "tts",
    "provider": "elevenlabs",
    "api_key": "el_...",
    "models": ["eleven_flash_v2_5"]
  }'
3

Create an agent

An agent defines the voice persona, system prompt, model stack, and compliance settings. Create one via the API or the dashboard.

curl — create agent

curl -X POST https://api.lyre.au/v1/agents \
  -H "Authorization: Bearer $LYRE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Ava — Sales",
    "first_message": "Hi, this is Ava from Acme. How can I help you today?",
    "system_prompt": "You are Ava, a friendly Australian sales agent for Acme...",
    "stt": { "provider": "deepgram", "model": "nova-2", "language": "en-AU" },
    "llm": { "provider": "groq", "model": "llama-3.3-70b-versatile" },
    "tts": { "provider": "elevenlabs", "model": "eleven_flash_v2_5", "voice_id": "pFZP5JQG7iQjIQuC4Bku" },
    "compliance": {
      "ai_disclosure": true,
      "recording_consent": "all_party",
      "dncr_check": true
    }
  }'

Python — create agent

import requests

resp = requests.post(
    "https://api.lyre.au/v1/agents",
    headers={"Authorization": f"Bearer {LYRE_API_KEY}"},
    json={
        "name": "Ava — Sales",
        "first_message": "Hi, this is Ava from Acme. How can I help you today?",
        "system_prompt": "You are Ava, a friendly Australian sales agent...",
        "stt": {"provider": "deepgram", "model": "nova-2", "language": "en-AU"},
        "llm": {"provider": "groq", "model": "llama-3.3-70b-versatile"},
        "tts": {"provider": "elevenlabs", "model": "eleven_flash_v2_5",
                "voice_id": "pFZP5JQG7iQjIQuC4Bku"},
        "compliance": {"ai_disclosure": True, "recording_consent": "all_party",
                       "dncr_check": True},
    },
)
agent = resp.json()
print(agent["id"])  # agent_abc123
4

Start a call (WebRTC)

Create a call session to get a LiveKit room token, then connect from the browser using the LYRE Web SDK or any LiveKit client.

curl — create a WebRTC call

curl -X POST https://api.lyre.au/v1/calls \
  -H "Authorization: Bearer $LYRE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "agent_abc123",
    "type": "web",
    "metadata": { "customer_id": "cust_456" }
  }'

# Response:
# {
#   "id": "call_xyz789",
#   "status": "connecting",
#   "room_url": "wss://lk.lyre.au",
#   "token": "eyJ..."
# }

Browser — connect with LiveKit

import { LiveKitRoom, useVoiceAssistant } from "@livekit/components-react";

function CallWidget({ token, roomUrl }) {
  return (
    <LiveKitRoom token={token} serverUrl={roomUrl} connect={true}>
      <AgentView />
    </LiveKitRoom>
  );
}
5

Monitor calls

View live and historical calls in the dashboard under Calls. You can also poll the API or register a webhook.

curl — list recent calls

curl https://api.lyre.au/v1/calls?limit=10 \
  -H "Authorization: Bearer $LYRE_API_KEY"

# Each call includes: id, agent_id, status, duration_ms,
# cost, transcript_url, recording_url

curl — get call details

curl https://api.lyre.au/v1/calls/call_xyz789 \
  -H "Authorization: Bearer $LYRE_API_KEY"

Set up webhooks at Settings → Webhooks to receive real-time events for call.started, call.ended, transcript.ready, and more.

Next steps