API

Dos rutas.
Una respuesta cada una.

Envía texto y recibe un archivo WAV. Envía audio y recibe el texto en kreyòl. Cada llamada responde directamente, sin tareas que consultar.

Necesitas una clave de API

Crea una clave en tu panel, en Claves de API, y envíala con cada solicitud: Authorization: Bearer lb_…. Una clave se muestra una sola vez; puedes tener hasta 10 y revocar cualquiera en todo momento. Mantenla en secreto: llama a la API desde tu servidor, nunca desde una página web. Cada dirección sigue limitada además a 90 solicitudes de texto y 30 transcripciones cada diez minutos.

Crear una clave de API

Para asistentes de IA y generadores de código

La misma documentación en archivos simples que un asistente de IA lee de una vez: dale el primer enlace y podrá escribir para ti código que funciona.

Precios

1 crédito por minuto de audio.

1 crédito = 1 minuto de audio = 2 HTG, cobrado por segundo: texto a voz cuenta los segundos de audio que produce; voz a texto, los segundos que escucha (como máximo 120 por solicitud). Los 5 minutos gratis de cada cuenta al mes (hora de Haití) se usan primero; se comparten con tus asistentes y el Studio. Una solicitud que falla no se cobra. Añade crédito con MonCash o con tarjeta en tu panel.

Lo que costó cada solicitud

X-Charged-Seconds header

Segundos de audio cobrados: producidos (texto a voz) o escuchados (voz a texto).

X-Credits-Used header

Créditos que tomó esta solicitud; 0 mientras quepa en tus minutos gratis.

X-Credits-Left header

Créditos que quedan en tu cuenta.

X-Free-Seconds-Left header

Segundos gratis que quedan en tu cuenta este mes.

Las dos rutas envían estas cabeceras. Voz a texto también devuelve las mismas cifras en su JSON, como charged.

Texto a voz

POST /api/tts

Lee un fragmento de kreyòl con Fatiman y responde con audio/wav, 24 kHz, 16 bits, mono. Las cabeceras indican la duración del audio (X-Audio-Seconds), cuánto tardó en generarse (X-Made-Ms) y los ajustes usados (X-Settings).

text string, obligatorio

Hasta 1.200 caracteres. Números, fechas, horas, precios, porcentajes, teléfonos y direcciones web se deletrean como se dicen.

voice string

Una de female1, female2, female3, female4, female5, female6, man1, man2, man3, nouvo1, nouvo2, nouvo3, nouvo4. Por defecto female1. nouvo1 a nouvo4 son Gason 4 a 7: voces nuevas creadas a partir de las voces de hombre de Fatiman, que no pertenecen a ninguna persona real.

continues boolean

El texto continúa una frase cortada en una coma, para que la voz no la lea como una frase nueva. Por defecto false.

model string

v1 (por defecto), v2 (entrenado solo con voces humanas reales) o v3, el más reciente y el más natural en nuestras pruebas. La cabecera X-Model dice cuál leyó el texto.

temperature number

Número, de 0,1 a 1. Qué tan libre lee la voz: más bajo, más pareja. Por defecto 0,7 para v1 y v2, 0,3 para v3.

lsd_steps integer

Entero, de 1 a 8. Pasos por sonido; más es más lento. Por defecto 1.

eos_threshold number

Número, de −6 a 2. Cuándo la voz decide que el texto terminó: más bajo termina antes y puede cortar la última palabra, más alto espera más. Por defecto −4.

cfg number

Número, de 1 a 3. Por encima de 1 la voz sigue el texto más de cerca, en cerca del doble de tiempo. Por defecto 1.

pause_ms integer

Entero, 0 o de 100 a 2000. Los silencios más largos se reducen a esta duración; 0 conserva todas las pausas. Por defecto 300.

Un valor fuera de rango se lleva al límite más cercano.

Voces

idNombreGéneroCarácter
female1Fanm 1MujerClara, pareja
female2Fanm 2MujerAnimada
female3Fanm 3MujerSuave
female4Fanm 4MujerGrave, muy serena
female5Fanm 5MujerClara, luminosa
female6Fanm 6MujerTranquila
man1Gason 1HombreBrillante
man2Gason 2HombreGrave
man3Gason 3HombreCálida, serena
nouvo1Gason 4HombreGrave, tranquilavoz nueva
nouvo2Gason 5HombreClara, naturalvoz nueva
nouvo3Gason 6HombreLigeravoz nueva
nouvo4Gason 7HombreFirmevoz nueva

Modelos: v1 (por defecto), v2 y v3. Cada uno lee con su propia temperatura por defecto: 0.7 para v1 y v2, 0.3 para v3.

Cabeceras de la respuesta

X-Audio-Seconds header

Duración del audio, en segundos.

X-Made-Ms header

Cuánto tardó la voz en generarlo, en milisegundos.

X-Model header

El modelo que lo leyó: v1, v2 o v3.

X-Settings header

Los ajustes de lectura realmente usados, en JSON, después de llevar los valores fuera de rango al límite más cercano.

curl -X POST https://www.lambbi.xyz/api/tts \
  -H "Authorization: Bearer $LAMBBI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "Bonjou! Ki jan ou ye jodi a?", "voice": "female1", "model": "v3"}' \
  -o bonjou.wav

Texto largo. Envía un texto largo por partes, empezando por una corta, y reproduce cada parte en cuanto llegue. La voz se genera unas dos veces más rápido de lo que suena, así que se oyen las primeras palabras en un segundo y medio, sin pausas después. El Studio funciona exactamente así.

Voz a texto

POST /api/asr

Escribe el kreyòl de un archivo de audio con Oswald-ASR-0.6-V3. Envía el archivo como cuerpo de la solicitud con su Content-Type, o en un campo de formulario multipart llamado file. Sirven WAV, MP3, M4A, OGG y WebM, hasta 25 MB; se transcriben los dos primeros minutos.

Solicitud

body / file archivo de audio, obligatorio

El audio como cuerpo crudo con su Content-Type (audio/wav, audio/mpeg, audio/mp4, audio/ogg, audio/webm…), o una subida multipart con el archivo en un campo llamado file. Como máximo 25 MB; se transcriben los dos primeros minutos.

?punctuate 0 | 1

0 devuelve el texto exactamente como se oyó, un segundo antes más o menos. Por defecto se añaden la puntuación y las mayúsculas sin cambiar ninguna palabra.

?correct 0 | 1

1 corrige también las palabras que Oswald oyó mal, la ortografía y las palabras repetidas. Una corrección que reescribe más del 40% de las palabras no se usa.

?translate en | fr | es

Traduce también la transcripción al inglés, francés o español.

Respuesta (JSON)

text string

Lo que se dijo, con ortografía kreyòl, con la puntuación y las mayúsculas que añade Lambbi AI (DeepSeek); las palabras son siempre exactamente las de Oswald. Vacío si no se oyó nada.

heard string

Lo que escribió Oswald, sin puntuación. Igual a text cuando la puntuación está desactivada o no se añadió.

punctuated boolean

Si se añadió la puntuación (no con ?punctuate=0).

corrected boolean

Si text se corrigió automáticamente (con ?correct=1); heard conserva lo que escribió Oswald.

translation string | null

Con ?translate=en, fr o es: text traducido al inglés, francés o español por Lambbi AI (DeepSeek). null si la traducción falló; ausente sin translate.

translatedTo string

El idioma de translation, cuando se pidió una traducción.

seconds number

Cuánto audio se escuchó.

ms number

Cuánto tardó en el servidor, con la puntuación, la corrección y la traducción incluidas.

maxSeconds number

El máximo de audio transcrito por solicitud, en segundos (120).

charged object

Lo que costó la solicitud: los seconds cobrados y los credits usados, y luego creditsLeft y freeSecondsLeft en tu cuenta.

# the file as the body, with its type
curl -X POST "https://www.lambbi.xyz/api/asr?correct=1&translate=en" \
  -H "Authorization: Bearer $LAMBBI_API_KEY" \
  -H "Content-Type: audio/mp4" \
  --data-binary @recording.m4a

# or as a form upload
curl -X POST "https://www.lambbi.xyz/api/asr" \
  -H "Authorization: Bearer $LAMBBI_API_KEY" \
  -F file=@recording.m4a
{
  "text": "Doktè, ou ka esplike m ankò diferans ant timè benin ak timè malfezan?",
  "heard": "doktè ou ka esplike m ankò diferans ant timè benin ak timè malfezan",
  "punctuated": true,
  "corrected": true,
  "translation": "Doctor, can you explain to me again the difference between a benign tumor and a malignant tumor?",
  "translatedTo": "en",
  "seconds": 5.2,
  "ms": 3371,
  "maxSeconds": 120,
  "charged": {
    "seconds": 5.2,
    "credits": 0,
    "creditsLeft": 25,
    "freeSecondsLeft": 287
  }
}

Errores y tiempos

400 / 405 / 413 tu solicitud

El cuerpo o un parámetro no es lo que espera la ruta, el método no era POST, o el texto o el archivo era demasiado largo. El cuerpo es JSON, {"error": "…"}, y dice cuál.

401 sin clave

No hay clave de API ("code": "no_key"), o la clave no es válida o fue revocada ("code": "bad_key"). Envía Authorization: Bearer lb_… con una clave de tu panel.

402 sin crédito

Tus minutos gratis y tu crédito se agotaron ("code": "no_credit"). Añade crédito en tu panel. Solicitudes enviadas al mismo tiempo pueden dejar tu crédito un poco por debajo de cero; la siguiente recibe entonces 402.

429 demasiadas

Espera los segundos que indica Retry-After.

502 / 504 nuestro lado

El servicio de voz falló o tardó demasiado. La primera llamada tras unos cinco minutos sin actividad arranca una máquina y carga los modelos, lo que puede tardar hasta 30 segundos: usa un tiempo de espera de al menos 60 segundos y reintenta una vez.