List Voices

List provider (catalog) voices with optional pagination and sorting

returns IVoiceData[]

Enumerate built-in voices from a provider’s catalog (e.g., ElevenLabs, OpenAI). Supports unified CursorQuery for pagination and ordering.


Basic Usage

using Glitch9.AIDevKit;

// Provider voices
IVoiceData[] voices = await Api.ElevenLabs
    .ListVoices()       // no query = provider defaults
    .ExecuteAsync();

With Pagination & Sorting (CursorQuery)

using Glitch9.AIDevKit;
using Glitch9.IO.Networking.RESTApi;

// First page
var q = new CursorQuery {
    Limit = 50,                   // 1..100, default 20
    Order = SortOrder.Descending  // by created_at (if supported)
};

IVoiceData[] page1 = await Api.ElevenLabs
    .ListVoices(q)
    .ExecuteAsync();

// Next page (forward)
q.After = page1.Length > 0 ? page1[^1].Id : null;
IVoiceData[] page2 = await Api.ElevenLabs.ListVoices(q).ExecuteAsync();

// Previous page (backward)
q.Before = page1.Length > 0 ? page1[0].Id : null;
IVoiceData[] prev = await Api.ElevenLabs.ListVoices(q).ExecuteAsync();

💡 Persist After/Before cursors for stable navigation across sessions.


Notes

  • CursorQuery is generic: Limit, Order, After, Before.

  • Some providers support richer filters (labels, language, gender, style). Use their dedicated SDK calls if available, or filter client-side:

var enVoices = voices
    .Where(v => v.LanguageCode?.StartsWith("en", StringComparison.OrdinalIgnoreCase) == true)
    .ToArray();

Best Practices

  • Wrap in try/catch; surface partial results if paging fails.

  • Use small Limit values for UI lists and lazy-load on scroll.

  • Cache commonly used pages to avoid repeated API calls.

Last updated