Documentação

Transcrever áudio

POST
/transcriptions

Três formas de enviar: corpo binário (audio/*, video/* ou application/octet-stream, opções na query), multipart/form-data (campo file e opções como campos) ou JSON com audio_url ou upload_id. Áudio curto volta pronto (200). Áudio longo, ou pedido com webhook_url, volta 202 e o resultado chega pelo webhook ou por GET /transcriptions/{id}.

Autorização

bearerAuth
AuthorizationBearer <token>

Em: header

Parâmetros na URL

diarization?boolean

Separa quem fala. Incluído no preço do minuto, sem custo a mais.

Defaultfalse
sentiment?boolean

Sentimento por trecho. +R$ 0,002 por minuto. Faz parte da assinatura: sem assinatura ativa, a resposta é 402 plan_required.

Defaultfalse
entities?boolean

E-mail, CPF, telefone, CEP e valores.

Defaulttrue
keyterms?array<>

Termos que o modelo deve priorizar. Repita o parâmetro ou separe por vírgula. Até 200, cada um com até 60 caracteres.

Itemsitems <= 200
redact?|array<>

Mascara dados pessoais no texto, nas palavras e nas entidades. all cobre todas as espécies; ou liste as que quiser. Vale para o que é gravado, não só para a resposta, e não tem volta: o valor original não fica guardado em lugar nenhum.

formato?string

limpo tira marcador de conversa e repetição imediata; literal devolve a fala como saiu, com [inaudível MM:SS] e [sobreposição], que é o que uma degravação precisa ter. O que fica guardado é sempre o literal: o formato é uma vista, não uma gravação.

Default"limpo"

Value in

  • "limpo"
  • "literal"
webhook_url?string

URL HTTPS pública que recebe o resultado. Com ela, a resposta é sempre 202.

Formaturi
title?string

Nome da transcrição. Sem ele, o nome do arquivo.

Lengthlength <= 200

Cabeçalhos

Idempotency-Key?string

Repetir o pedido com a mesma chave devolve a mesma transcrição, sem cobrar de novo.

Lengthlength <= 255

Tipos em TypeScript

Use the request body type in TypeScript.

body*string

Áudio bruto, até 100 MB. Content-Length é obrigatório.

Resposta

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/transcriptions" \  -H "Content-Type: application/json" \  -d '{    "audio_url": "https://exemplo.com.br/gravacoes/atendimento-0412.mp3",    "diarization": true,    "keyterms": [      "TJSP",      "habeas corpus"    ]  }'
{  "id": "tr_8Hc2kQ9mZr4TpX1vLb7NwE",  "status": "completed",  "title": "atendimento-0412.wav",  "created_at": "2026-09-13T14:02:11.000Z",  "duration_s": 42.5,  "model": "aether",  "version": 1,  "text": "Meu e-mail é ana.lima@exemplo.com e meu CPF é 123.456.789-09.",  "words": [    {      "text": "Meu",      "start_s": 0.42,      "end_s": 0.61,      "confidence": 0.98,      "speaker": "spk0"    }  ],  "entities": {    "emails": [      {        "value": "ana.lima@exemplo.com",        "said": "ana ponto lima arroba exemplo ponto com",        "start_s": 1.1,        "end_s": 3.9,        "confidence": 0.91,        "speaker": "spk0"      }    ],    "cpfs": [      {        "value": "123.456.789-09",        "said": "um dois três quatro cinco seis sete oito nove zero nove",        "start_s": 4.2,        "end_s": 8,        "confidence": 0.95,        "speaker": "spk0",        "valid": true      }    ],    "phones": [],    "ceps": [],    "amounts": []  },  "speakers": [    {      "speaker": "spk0",      "start_s": 0,      "end_s": 9.1,      "label": null    }  ],  "sentiment": null,  "conversation": null,  "timing": {    "receive_ms": 180,    "queue_ms": 12,    "decode_ms": 40,    "gpu_ms": 300,    "format_ms": 20,    "analysis_ms": 0,    "total_ms": 552  },  "billing": {    "seconds": 43,    "cost_brl": 0.02,    "balance_brl": 42.35  }}