# Speech to text API para arquivos de áudio e vídeo

> Speech to text API: áudio e vídeo com marcações de tempo. Ative a identificação de falantes. Até 95 MB por request ou 2 GB em partes. 1 crédito/minuto.

Canonical: https://transcript1.com/pt/features/speech-to-text-api
Language: pt-BR
Last updated: 2026-10-19

Use a speech to text API para transcrever arquivos de áudio e vídeo com marcações de tempo, idioma por trecho e identificação de falantes opcional. Envie até 95 MB em um request. Arquivos maiores, de até 2 GB, vão em partes; se o upload cair, você retoma de onde parou.

- Até 95 MB em um único request
- Até 2 GB em partes, sem recomeçar se o upload cair
- Arquivo de mídia excluído 24 horas após o fim da transcrição

## Escolha como enviar o arquivo

### Áudio ou vídeo, sem extrair a faixa antes

Envie MP3, WAV, M4A, FLAC, OGG, OPUS, MP4, MOV, WebM ou MKV. O arquivo precisa conter uma faixa de áudio.

### Um request para arquivos de até 95 MB

Faça um POST /v1/transcriptions com multipart/form-data. É a forma mais direta de transcrever um arquivo de áudio via API quando ele já está no seu servidor.

### Upload em partes para arquivos de até 2 GB

Reserve o upload, envie as partes de cerca de 8 MiB e confirme a conclusão. Se a conexão cair, envie só o que falta.

### Gravações de até 5 horas

O limite de duração é separado do tamanho do arquivo. Se o áudio passar de 5 horas, a transcrição retorna media_too_long e não há cobrança.

### O texto fica; o arquivo original não

Excluímos a mídia enviada 24 horas depois que a transcrição chega ao status final. A transcrição fica salva até você excluí-la.

## Comece com um upload multipart

Envie os bytes no campo file. Você também pode incluir language, diarize, source e webhook_url como campos do formulário. Veja o [request multipart completo](https://transcript1.com/pt/docs/uploads#one-shot-upload) e como receber uma [notificação por webhook](https://transcript1.com/pt/features/webhook-transcricao).

Se o arquivo já está no servidor, basta enviá-lo com seu cliente HTTP. Deixe o cliente montar o boundary do multipart. Um caminho local dentro de um JSON não envia o arquivo: o request precisa levar os bytes. Se o arquivo estiver vazio ou tiver uma extensão incompatível, corrija isso antes de tentar de novo.

Confira tamanho e duração separadamente. Um áudio muito comprimido pode ter menos de 95 MB e passar de 5 horas. Um vídeo curto em alta resolução pode ultrapassar o limite do multipart. Escolha a forma de upload pelo tamanho em bytes e valide a duração à parte.

### cURL

```
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -F file=@interview.m4a \
  -F language=auto
```

## Reserve o upload antes de enviar um arquivo grande

Informe o nome e o tamanho do arquivo para reservar o upload. A resposta traz o plano das partes e um X-Upload-Token exclusivo desse envio. A [documentação de upload em partes](https://transcript1.com/pt/docs/uploads#chunked-upload) mostra a sequência completa.

Siga o plano retornado pela API. Cada parte tem índice, posição inicial em bytes e tamanho. Leia exatamente esse intervalo do arquivo; a última parte pode ser menor. O token autentica os requests PUT e vale por 1 hora, somente para esse upload. Ele não substitui sua chave de API nos demais endpoints.

Use a mesma Idempotency-Key se precisar repetir a reserva. Se o token expirar, repita a reserva com essa chave e os mesmos parâmetros para receber um token novo para o upload existente. Criar uma reserva a cada interrupção deixa transcrições abertas sem necessidade e dificulta acompanhar o envio.

### Reserva de upload com Idempotency-Key

```
curl -X POST "https://api.transcript1.com/v1/transcriptions" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Idempotency-Key: interview-2026-10-13" \
  -H "Content-Type: application/json" \
  -d '{"upload":{"filename":"interview.m4a","size":48210334,"mime_type":"audio/mp4"}}'
```

## Envie as partes e confirme quando terminar

Faça um PUT para cada URL recebida, usando o token de upload. Depois confirme a conclusão. O transcript1 verifica as partes e coloca a transcrição na fila. Veja os [endpoints de upload](https://transcript1.com/pt/docs/api-reference#uploads) para consultar o progresso e concluir o envio.

Para retomar, consulte GET /v1/transcriptions/:id/upload e compare received_chunks com o plano original. Envie só as partes ausentes. Reenviar uma parte substitui a anterior, mas o tamanho precisa continuar igual ao previsto. Um 401 pode indicar que o token expirou; não é motivo para gerar o arquivo de novo.

Se faltar alguma parte, a conclusão retorna 409 upload_incomplete com os índices que você precisa enviar. Quando o upload estiver completo e a transcrição entrar na fila, consulte seu status ou espere o webhook. Na interface, diferencie o progresso do upload do progresso da transcrição.

### Envio de uma parte e conclusão do upload

```
curl -X PUT "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD/upload/chunks/0" \
  -H "X-Upload-Token: t1u_..." \
  -H "Content-Type: application/octet-stream" \
  --data-binary @chunk-0.bin

curl -X POST "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD/upload/complete" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY"
```

## Upload concluído não significa transcrição pronta

Uma reserva em awaiting_upload ainda não está transcrevendo nada. Primeiro os bytes chegam, depois verificamos o upload e só então começamos a processar a mídia. Se a conexão cair depois da confirmação, consulte a transcrição antes de repetir o request de conclusão.

Cada equipe pode manter até 20 reservas abertas. Se você não concluir o upload em 24 horas, a reserva é cancelada e as partes são excluídas. Após o processamento chegar ao status final, excluímos o arquivo de mídia em 24 horas. O texto fica até você excluí-lo. Guarde o original se sua aplicação precisar reproduzir o áudio depois.

A integração não termina na transferência. Se você está criando uma tela de upload, veja o guia de [áudio para texto](https://transcript1.com/pt/features/audio-para-texto). Para entrevistas, confira como manter participantes, citações e gravações ligados no [fluxo de pesquisa](https://transcript1.com/pt/use-cases/transcrever-entrevista).

## Dúvidas frequentes

### Quais formatos a API aceita?

MP3, WAV, M4A, FLAC, OGG, OPUS, MP4, MOV, WebM e MKV, sempre com uma faixa de áudio. Outras extensões retornam 422 unsupported_media.

### Qual é o tamanho máximo do arquivo?

Até 95 MB em um único request multipart ou até 2 GB em partes. Seu plano pode definir um limite menor. Acima do limite, a API retorna 413 media_too_large.

### Por quanto tempo vocês guardam os arquivos?

A mídia é excluída 24 horas após a transcrição chegar ao status final. Se um upload ficar incompleto por 24 horas, cancelamos a reserva e excluímos as partes. O texto fica salvo até você excluí-lo.

### Dá para identificar quem está falando?

Sim. Envie diarize=true para receber rótulos como Speaker 1 e Speaker 2. Arquivos enviados por upload sempre passam pela transcrição com IA.

## Veja também

- [Identificação de falantes](https://transcript1.com/pt/features/identificar-falantes-em-audio)
- [Áudio para texto](https://transcript1.com/pt/features/audio-para-texto)
- [Upload de áudio e vídeo (docs)](https://transcript1.com/pt/docs/uploads)
- [Vídeo para texto](https://transcript1.com/pt/features/transcrever-video)
