Voice

Run Audition

Synthesise `text` (at most 200 characters) with 1-5 voices. Each sample comes back in full quality and in phone quality (8 kHz mu-law, what a caller hears) with the provider's time to first byte. Per-sample failures (no key, a cap reached, the provider refused) are reported in the sample, never retried. Caps: 30 new samples per workspace and UTC day (cached replays are free) and a daily character budget per provider on the platform's keys. Owners and admins.

API key access

Needs the admin scope with an API key (ro_pat_...). A signed-in session uses the caller's role.
POST/api/v1/voice/audition
AuthorizationBearer <token>

Access token from /api/v1/auth/login, or an API key (ro_pat_..., RO-176) from /api/v1/workspaces/current/api-keys: the key implies its workspace and needs the route's scope. MCP connectors (/api/v1/mcp only) may use an OAuth access token (ro_oat_..., RO-284).

In: header

Header Parameters

X-Workspace-Id?X-Workspace-Id

Id of the workspace to act on (must be a member).

textText

The sentence to say (at most 200 characters).

Length1 <= length <= 200
language?Language

Language of the text: en, te, hi, te-IN, ...

Default"en"
Match^[A-Za-z]{2,3}([-_][A-Za-z]{2})?$
voicesVoices

1 to 5 voices.

Items1 <= items <= 5

Response Body

curl -X POST "http://localhost:8000/api/v1/voice/audition" \  -H "X-Workspace-Id: string" \  -H "Content-Type: application/json" \  -d '{    "text": "string",    "voices": [      {        "provider": "cartesia"      }    ]  }'
{
  "text": "string",
  "language": "string",
  "samples": [
    {
      "provider": "cartesia",
      "voice": "string",
      "model": "string",
      "language": "string",
      "ok": true,
      "cached": true,
      "key_source": "workspace",
      "error_code": "string",
      "error": "string",
      "ttfb_ms": 0,
      "total_ms": 0,
      "streaming": true,
      "duration_seconds": 0,
      "full": {
        "mime_type": "audio/wav",
        "sample_rate": 0,
        "data_base64": "string"
      },
      "phone": {
        "mime_type": "audio/wav",
        "sample_rate": 0,
        "data_base64": "string"
      }
    }
  ],
  "usage": {
    "samples_today": 0,
    "daily_samples": 0,
    "remaining": 0
  }
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}
Empty