Referencia API

POST /api/v1/generate

Genera audio a partir de texto. Soporta voice design y clonación. Exclusivo del plan Pro.

Body (JSON)

textTexto a generar (máx 5000 chars). Soporta tags como [laughter]. Requerido.
languageCódigo ISO ("es", "en", "ja"…) o nombre. Multilenguaje. Default "es".
mode"design" (diseñar voz) o "clone" (clonar). Default "design".
designObjeto con gender, age, pitch, whisper, accent, dialect (ver abajo).
referenceAudioBase64Para mode=clone. Audio de referencia en base64 (WAV/MP3).
referenceTextTranscripción del audio de referencia (opcional).
savedVoiceIdID de una voz guardada tuya — alternativa al audio de referencia.
consentObligatorio al clonar: true confirma que tenés permiso para usar la voz.
speed0.5 (lento) – 2.0 (rápido). Default 1.0.
durationSecDuración fija de salida en segundos (opcional, anula speed).
quality"fast" · "balanced" · "high". Default "balanced".
seedEntero opcional para reproducibilidad.

Objeto design

gender"female" · "male"
age"child" · "teenager" · "young_adult" · "middle_aged" · "elderly"
pitch"very_low" · "low" · "moderate" · "high" · "very_high"
whispertrue / false (estilo ASMR)
accentsolo inglés: "american", "british", "australian", "indian"…
dialectsolo chino: "四川话", "东北话"…

Respuesta 200

{
  "audioBase64": "UklGRi4...",
  "mime": "audio/wav",
  "durationMs": 3200,
  "rtf": 0.025,
  "provider": "modal",
  "latencyMs": 1840
}

El audio es WAV 24 kHz mono en base64. Para los errores ver Errores.

Ejemplos

Node.js

const res = await fetch("https://kyma.synthetic.com.ar/api/v1/generate", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.KYMA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    text: "This is my voice speaking English.",
    language: "en",
    mode: "design",
    design: { gender: "male", age: "middle_aged", pitch: "low", accent: "british" },
  }),
});
const data = await res.json();
require("fs").writeFileSync("out.wav", Buffer.from(data.audioBase64, "base64"));

Python

import requests, base64

r = requests.post(
    "https://kyma.synthetic.com.ar/api/v1/generate",
    headers={"Authorization": "Bearer kyma_sk_xxx"},
    json={
        "text": "Texto generado con mi voz clonada.",
        "language": "es",
        "mode": "clone",
        "referenceAudioBase64": "<base64 del audio>",
        "consent": True,
        "quality": "high",
    },
)
open("out.wav", "wb").write(base64.b64decode(r.json()["audioBase64"]))

Límites

  • Se mide por caracteres procesados, del mismo pool mensual que tu cuenta.
  • Free: 10.000 · Creator: 200.000 · Pro: 1.000.000 caracteres/mes.
  • Rate limit: 30 requests/minuto por key.