Skip to content

Voice Providers

Connect optional voice providers for tenant-scoped premium/custom voices. This page currently documents the public ElevenLabs endpoints.

ElevenLabs is a BYO provider integration: you supply your own ElevenLabs API key, Rymi encrypts it, syncs your available voices into the tenant voice catalog, and lets agents reference those voices. Specialist defaults do not require ElevenLabs; it remains a premium/custom override.

Status

http
GET /v1/voice-providers/elevenlabs/status

Returns connection state and cached ElevenLabs voice count for the authenticated tenant.

Response 200

json
{
  "connected": true,
  "provider": "elevenlabs",
  "account_name": "Acme ElevenLabs",
  "cached_voice_count": 18
}

Fields

FieldTypeDescription
connectedbooleanWhether active ElevenLabs credentials exist for the tenant
providerstringAlways elevenlabs
account_namestring or nullDisplay name saved during connection
cached_voice_countintegerNumber of active ElevenLabs voices cached in Rymi

Connect ElevenLabs

http
POST /v1/voice-providers/elevenlabs/connect

Validates the API key against ElevenLabs, stores it encrypted, and syncs the voice catalog.

Parameters

FieldTypeRequiredDescription
api_keystringYesElevenLabs API key
account_namestringNoDisplay name for the connected account. Defaults to ElevenLabs

Example

bash
curl -X POST https://api.rymi.live/v1/voice-providers/elevenlabs/connect \
  -H "Authorization: Bearer $RYMI_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "sk_elevenlabs_...",
    "account_name": "Acme ElevenLabs"
  }'

Response 200

json
{
  "status": "connected",
  "provider": "elevenlabs",
  "account_name": "Acme ElevenLabs",
  "voice_count": 18
}

Errors

StatusMeaning
400api_key is missing
401ElevenLabs rejected the key
500Rymi could not save credentials
502Credentials were saved but voice sync failed

Sync Voices

http
POST /v1/voice-providers/elevenlabs/sync

Refreshes the cached ElevenLabs voice catalog using active tenant credentials. Use this after adding or removing voices in ElevenLabs.

Response 200

json
{
  "status": "synced",
  "provider": "elevenlabs",
  "voice_count": 21
}

Errors

StatusMeaning
400No active ElevenLabs credentials exist for the tenant
502Voice sync failed

Disconnect ElevenLabs

http
POST /v1/voice-providers/elevenlabs/disconnect

Deactivates ElevenLabs credentials for the tenant. It does not delete anything in the ElevenLabs account.

Response 200

json
{
  "status": "disconnected",
  "provider": "elevenlabs"
}

Using Synced Voices

After syncing, call GET /v1/agents/llm-options and select an ElevenLabs voice from the returned voices array. Then create or update an agent with the selected voice, tts_provider, and tts_model if you want to override role defaults.

json
{
  "name": "Premium Support Voice",
  "agent_role": "specialist",
  "voice": "21m00Tcm4TlvDq8ikWAM",
  "tts_provider": "elevenlabs",
  "tts_model": "eleven_turbo_v2_5"
}

Cost model

ElevenLabs can be a high-quality voice option, but it is not the default Specialist economics path. Use it when custom voice quality matters and you are comfortable with the provider's separate pricing.