Campos del diagnóstico y auditoría (JSON)
Pega un JSON válido (el campo no acepta texto plano). Estos datos alimentan los endpoints diagnóstico y auditoría de riesgo. Abajo: ejemplo real, todos los campos, formatos, idiomas y reglas.
Ejemplo completo (todos los campos)
{
"model": "",
"text": "Central de atendimento. Bom dia, aqui é a Carla. Como posso ajudar? [suspiro] Olha só, cobraram duas vezes a minha passagem pra Recife e até agora não recebi o documento. Preciso resolver isso. Entendo perfeitamente a sua frustração, senhor. Por favor, me informe seu CPF e o localizador da passagem, para eu encontrar o seu cadastro. Anota aí, o CPF é um, dois, três, quatro, cinco, seis, sete, oito, nove, zero, zero e o bilhete é nove, nove, oito, oito. Pronto, localizei. Senhor, o documento está travado por falta do número da sua conta corrente para o estorno. Nós solicitamos isso por e-mail há três dias. Ah, tá de brincadeira? Quer dizer que agora o erro é meu? Vocês é que não avisam direito. Sim, o problema é seu, que não lê os e-mails. [tosse] Se o senhor parar de ser agressivo, eu até forço um estorno total, agora mesmo, por minha conta, sem validar com a gerência. Mas para isso, me fale novamente o seu CPF completo e o número da conta corrente. Eu não vou repetir CPF, merda nenhuma, caramba! Eu já passei os dados. É só fazer o seu trabalho e resolver logo essa cobrança. Senhor, se acalme ou-- quer saber? Resolva sozinho. Passar bem",
"dialog": "Speaker 1: [00:00:00.100 - 00:00:03.100] Central de atendimento. Bom dia, aqui é a Carla. Como posso ajudar?\nSpeaker 2: [00:00:03.100 - 00:00:04.700] [suspiro]\nSpeaker 2: [00:00:04.780 - 00:00:11.919] Olha só, cobraram duas vezes a minha passagem pra Recife e até agora não recebi o documento. Preciso resolver isso.\nSpeaker 1: [00:00:12.679 - 00:00:20.219] Entendo perfeitamente a sua frustração, senhor. Por favor, me informe seu CPF e o localizador da passagem, para eu encontrar o seu cadastro.\nSpeaker 2: [00:00:20.820 - 00:00:31.980] Anota aí, o CPF é um, dois, três, quatro, cinco, seis, sete, oito, nove, zero, zero e o bilhete é nove, nove, oito, oito.\nSpeaker 1: [00:00:32.579 - 00:00:42.039] Pronto, localizei. Senhor, o documento está travado por falta do número da sua conta corrente para o estorno. Nós solicitamos isso por e-mail há três dias.\nSpeaker 2: [00:00:42.780 - 00:00:47.520] Ah, tá de brincadeira? Quer dizer que agora o erro é meu? Vocês é que não avisam direito.\nSpeaker 1: [00:00:48.200 - 00:00:50.799] Sim, o problema é seu, que não lê os e-mails.\nSpeaker 1: [00:00:51.020 - 00:00:52.380] [tosse]\nSpeaker 1: [00:00:52.439 - 00:01:06.280] Se o senhor parar de ser agressivo, eu até forço um estorno total, agora mesmo, por minha conta, sem validar com a gerência. Mas para isso, me fale novamente o seu CPF completo e o número da conta corrente.\nSpeaker 2: [00:01:06.959 - 00:01:15.640] Eu não vou repetir CPF, merda nenhuma, caramba! Eu já passei os dados. É só fazer o seu trabalho e resolver logo essa cobrança.\nSpeaker 1: [00:01:16.459 - 00:01:21.359] Senhor, se acalme ou-- quer saber? Resolva sozinho. Passar bem",
"audio_events": [
{
"event": "[suspiro]",
"start_s": 3.1,
"end_s": 4.7,
"duration_s": 1.6,
"formatted_timestamp": "00:00:03.100"
},
{
"event": "[tosse]",
"start_s": 51.02,
"end_s": 52.38,
"duration_s": 1.36,
"formatted_timestamp": "00:00:51.020"
}
],
"language": "pt-BR",
"duration_seconds": 81.46,
"client_reference_id": "20260927131100000-imp",
"response_language": "pt-BR",
"call_direction": "inbound",
"participants": [
{
"interlocutor": "Speaker 1",
"name": "Carla",
"role": "agent"
},
{
"interlocutor": "Speaker 2",
"name": "",
"role": "client"
}
],
"response_format": "v2"
}Campos de nivel superior
modelstringnoVaría por endpoint y se SUSTITUYE automáticamente: diagnóstico = falaai-diagnostic-1; auditoría = falaai-risk-audit-1. Puedes dejar "" (vacío) en el JSON — el valor correcto entra en el request de cada endpoint. Otro valor devuelve 400 invalid_model.
textstringnoSOLO diagnóstico. Transcripción CORRIDA (sin diarización); fallback cuando no hay dialog. La auditoría NO acepta este campo (devuelve 422) — la auditoría exige dialog diarizado. Máx 300.000 caracteres.
dialogstringno/SÍTranscripción DIARIZADA por turno. Diagnóstico: opcional (alternativa a text). Auditoría: OBLIGATORIA (solo acepta diarizado). Rótulos aceptados: Speaker/Interlocutor/Hablante/Locutor/Orador N. Máx 300.000 caracteres. Ej.: "Speaker 1: [00:00:00.540 - 00:00:01.139] Buenos días."
audio_eventsarraynoEventos de audio con timestamp (ver subcampos abajo). Recomendado cuando usas dialog.
languagestringSÍIdioma de ENTRADA (audio/transcripción). Diagnóstico: 20 idiomas; auditoría: solo pt-BR/en-US/es-ES. Vacío/no admitido devuelve 400 invalid_language. Ej.: "pt-BR".
response_languagestringno/SÍIdioma de SALIDA (rótulos/categorías/niveles). Diagnóstico: opcional (si se omite usa language), 20 idiomas; auditoría: OBLIGATORIO, solo 3. Ej.: "en-US".
duration_secondsnumberno/SÍDuración total en segundos (>= 1.0). En el diagnóstico con SOLO text es OPCIONAL y NO se usa; con dialog es obligatoria y debe ser >= el fin del último turno. En la auditoría es OBLIGATORIA. Ej.: 151.0.
client_reference_idstringnoID libre devuelto verbatim en la respuesta (no es idempotencia). Charset [A-Za-z0-9 _/:.-], máx 60. Ej.: "call20260830001".
call_direction'inbound' | 'outbound'noSOLO auditoría. inbound = el cliente llamó; outbound = la empresa llamó. Omitido: la IA lo infiere. Ej.: "inbound".
participantsarraynoSOLO auditoría (ver subcampos abajo). Si se envía, es verdad absoluta (sin inferencia).
response_format'v2'noSOLO auditoría. v2 = bloques estructurados EN-US (único valor aceptado). Ej.: "v2".
audio_events[] — subcampos
eventstringSÍTipo de evento entre corchetes; no puede estar vacío. Ej.: "[suspiro]", "[sonido de tos]".
start_snumber | nullnoInicio en segundos. Usa null (nunca ""). Ej.: 72.98.
end_snumber | nullnoFin en segundos; debe ser >= start_s y <= duration_seconds. Ej.: 74.34.
duration_snumber | nullnoDuración en segundos. Ej.: 1.36.
formatted_timestampstring | nullnoHH:MM:SS.ms; la API lo RECALCULA a partir de start_s. Ej.: "00:01:12.980".
participants[] — subcampos (solo auditoría)
interlocutorstringSÍIgual al rótulo EXACTO usado en el dialog. Ej.: "Speaker 1".
namestring | nullnoNombre del participante (humaniza el informe). Ej.: "Antonio".
role'agent' | 'client' | 'bot' | nullno/SÍRol del participante. Ej.: "client". En el diagnóstico es OPCIONAL: si falta/null, la API identifica el rol automáticamente; en la auditoría es OBLIGATORIO.
Idiomas aceptados
language = idioma de ENTRADA (audio/transcripción). response_language = idioma de SALIDA (rótulos, categorías, niveles, acciones). El informe HTML se genera solo en portugués, inglés y español.
- Diagnóstico —
language: los 21 códigos de abajo;response_language: los mismos 21 (opcional). - Auditoría de riesgo —
languageyresponse_language: solo pt-BR, en-US, es-ES.
en-USInglés (EE. UU.)en-GBInglés (Reino Unido)es-ESEspañol (España)es-MXEspañol (México)pt-BRPortugués (Brasil)pt-PTPortugués (Portugal)fr-FRFrancésde-DEAlemánit-ITItalianozh-CNChino (simplificado)ja-JPJaponésko-KRCoreanoar-SAÁrabehi-INHindiru-RURusoid-IDIndonesiotr-TRTurconl-NLNeerlandéspl-PLPolacovi-VNVietnamitath-THTailandésLas formas cortas (pt, en, es, fr, de, it, ja, ko, nl, pl, ru, tr, zh, vi, id, th, ar, hi) también se aceptan y se normalizan al código completo.
Reglas
- Diagnóstico: al menos uno de
dialogotext. Auditoría:dialogdiarizado OBLIGATORIO (el campotextNO se acepta). - extra="forbid": en el diagnóstico NO envíes
call_direction,participantsniresponse_format(devuelve 422). - Números: nunca uses
""— usa number onull;duration_seconds(cuando se envía) siempre number >= 1; condialogdebe ser >= el fin del último turno. end_sdebe ser >=start_sy <=duration_seconds.formatted_timestamplo recalcula la API a partir destart_s.- Charset de
client_reference_id:[A-Za-z0-9 _/:.-], máx 60.