Skip to content

Quick Start

This guide will have you generating audio in under 5 minutes.

Create a Client

import elevenlabs "github.com/agentplexus/go-elevenlabs"

// Uses ELEVENLABS_API_KEY environment variable
client, err := elevenlabs.NewClient()
if err != nil {
    log.Fatal(err)
}

List Available Voices

ctx := context.Background()

voices, err := client.Voices().List(ctx)
if err != nil {
    log.Fatal(err)
}

for _, v := range voices {
    fmt.Printf("%s: %s\n", v.VoiceID, v.Name)
}

Generate Speech

Simple Method

// Generate speech with default settings
audio, err := client.TextToSpeech().Simple(ctx,
    "21m00Tcm4TlvDq8ikWAM",  // Voice ID (Rachel)
    "Hello, this is a test of the ElevenLabs API.")
if err != nil {
    log.Fatal(err)
}

// Save to file
f, _ := os.Create("output.mp3")
defer f.Close()
io.Copy(f, audio)

With Options

resp, err := client.TextToSpeech().Generate(ctx, &elevenlabs.TTSRequest{
    VoiceID: "21m00Tcm4TlvDq8ikWAM",
    Text:    "Hello with custom settings!",
    ModelID: "eleven_multilingual_v2",
    VoiceSettings: &elevenlabs.VoiceSettings{
        Stability:       0.5,
        SimilarityBoost: 0.75,
        Style:           0.2,
    },
    OutputFormat: "mp3_44100_128",
})

Generate Sound Effects

audio, err := client.SoundEffects().Simple(ctx, "thunder and rain storm")
if err != nil {
    log.Fatal(err)
}

f, _ := os.Create("thunder.mp3")
defer f.Close()
io.Copy(f, audio)

Check Your Usage

sub, err := client.User().GetSubscription(ctx)
if err != nil {
    log.Fatal(err)
}

fmt.Printf("Characters used: %d / %d\n",
    sub.CharacterCount, sub.CharacterLimit)
fmt.Printf("Remaining: %d\n", sub.CharactersRemaining())

Complete Example

package main

import (
    "context"
    "fmt"
    "io"
    "log"
    "os"

    elevenlabs "github.com/agentplexus/go-elevenlabs"
)

func main() {
    client, err := elevenlabs.NewClient()
    if err != nil {
        log.Fatal(err)
    }

    ctx := context.Background()

    // List voices
    voices, _ := client.Voices().List(ctx)
    fmt.Printf("Found %d voices\n", len(voices))

    // Generate speech using first voice
    if len(voices) > 0 {
        audio, err := client.TextToSpeech().Simple(ctx,
            voices[0].VoiceID,
            "Hello from go-elevenlabs!")
        if err != nil {
            log.Fatal(err)
        }

        f, _ := os.Create("hello.mp3")
        defer f.Close()
        n, _ := io.Copy(f, audio)
        fmt.Printf("Saved %d bytes to hello.mp3\n", n)
    }
}

Next Steps