Skip to main content

Quick start

Installation

Include the required SDK scripts in your HTML file:

<script src="https://sdk.hidoba.com/audio.js"></script>
<script src="https://sdk.hidoba.com/sdk.js"></script>

If you need conversation history support, include the history.js script as well:

<script src="https://sdk.hidoba.com/history.js"></script>

Choose Your Authentication Method

Before implementing your first call, you need to choose between two authentication methods. See Call Initiation Methods for detailed comparison.

  • Client-Side Initiation: Quick setup, API key in browser (suitable for development/prototyping)
  • Server-Side Initiation: Secure setup, API key on server (recommended for production)

Here's a complete example using client-side authentication:

<!DOCTYPE html>
<html>
<head>
<title>Voice Call - Client-Side</title>
<script src="https://sdk.hidoba.com/audio.js"></script>
<script src="https://sdk.hidoba.com/sdk.js"></script>
</head>
<body>
<button id="callButton">Call</button>
<button id="hangUpButton" disabled>Hang Up</button>
<div>Status: <span id="statusText">Ready</span></div>

<script>
// Configuration
const API_KEY = "YOUR_API_KEY";
const PARTNER = "github:partner";
const CHARACTER = "character";

// Define callbacks
const callbacks = {
onCallStart: () => {
console.log("Call starting...");
document.getElementById('callButton').disabled = true;
document.getElementById('hangUpButton').disabled = false;
},
onStatusUpdate: (status) => {
console.log(status);
document.getElementById('statusText').textContent = status;
},
onCallError: () => {
console.log("Call error");
document.getElementById('statusText').textContent = "Error";
document.getElementById('callButton').disabled = false;
document.getElementById('hangUpButton').disabled = true;
},
onHangUp: () => {
console.log("Call ended");
document.getElementById('statusText').textContent = "Call ended";
document.getElementById('callButton').disabled = false;
document.getElementById('hangUpButton').disabled = true;
},
onConnected: () => {
console.log("Connected!");
document.getElementById('statusText').textContent = "Connected";
}
};

// Create CallManager
const callManager = new CallManager(callbacks);

// Button event handlers
document.getElementById('callButton').onclick = () => {
callManager.handleCall2(PARTNER, CHARACTER, API_KEY);
};

document.getElementById('hangUpButton').onclick = () => {
callManager.hangUp();
};
</script>
</body>
</html>

Next Steps

For Client-Side Implementation:

  • Replace YOUR_API_KEY, PARTNER, and CHARACTER with your actual credentials
  • See SDK Setup for credential setup and configuration

For Server-Side Implementation:

Additional Features:

  • Device Management: See SDK Reference for microphone/speaker selection
  • Conversation History: See Features for real-time transcript display
  • Advanced Configuration: See SDK Setup for detailed setup options