Transcreva áudio e vídeo
Suba um áudio ou vídeo, transcreva com tempo por frase e, se quiser, quem está falando. Baixe em JSON, SRT, VTT ou texto.
A transcrição é independente da clipagem: serve para podcast, aula, entrevista ou qualquer arquivo de áudio ou vídeo. O resultado vem em frases com início e fim em segundos.
Peça a URL de upload
curl -X POST https://api.cut.pro/api/v1/transcriptions/upload \
-H "X-Api-Key: $CUTPRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "file_name": "entrevista.mp3", "file_size": 48210000, "content_type": "audio/mpeg" }'{ "media_id": "7412950033118822", "kind": "audio", "upload_url": "https://...", "expires_in": 3600 }A extensão de file_name decide se é áudio ou vídeo. O teto é o menor entre o limite de upload do plano e o espaço livre no storage.
Envie o arquivo
curl -X PUT "$UPLOAD_URL" \
-H "Content-Type: audio/mpeg" \
--upload-file entrevista.mp3O Content-Type precisa ser o mesmo do passo anterior.
Transcreva
curl -X POST https://api.cut.pro/api/v1/transcriptions \
-H "X-Api-Key: $CUTPRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"media_id": "7412950033118822",
"file_name": "entrevista.mp3",
"file_size": 48210000,
"source_language": "pt",
"speaker_labels": true
}'{ "id": "7412950040021177", "status": "processing", "credits_charged": 42 }| Campo | Descrição |
|---|---|
media_id | O do upload, ou um que já está na sua biblioteca. |
file_name, file_size | Obrigatórios para um arquivo recém-enviado. |
source_language | Idioma falado, como pt. Sem ele, a detecção é automática. Fixe em áudios curtos: a detecção confunde português com espanhol. |
speaker_labels | Identifica quem fala em cada frase. Custa mais. |
Espere ficar pronta
curl https://api.cut.pro/api/v1/transcriptions/7412950040021177 \
-H "X-Api-Key: $CUTPRO_API_KEY"Consulte a cada 5 a 10 segundos enquanto status for processing. Termina em ready, no_speech (o áudio não tem fala) ou failed. A resposta traz language, duration_seconds e, com speaker_labels, speaker_count.
Pegue o texto
Em JSON, para indexar ou desenhar sua própria interface:
curl https://api.cut.pro/api/v1/transcriptions/7412950040021177/transcript \
-H "X-Api-Key: $CUTPRO_API_KEY"{
"language": "pt",
"speaker_labels": true,
"cues": [
{ "start": 0.48, "end": 3.12, "text": "Bem-vindo de volta ao programa.", "speaker": "A" },
{ "start": 3.40, "end": 5.95, "text": "Obrigado pelo convite.", "speaker": "B" }
]
}Como arquivo de legenda:
curl -o entrevista.srt "https://api.cut.pro/api/v1/transcriptions/7412950040021177/download?format=srt" \
-H "X-Api-Key: $CUTPRO_API_KEY"format aceita srt (padrão), vtt e txt. O corpo é o arquivo, não JSON. Numa transcrição com speaker_labels, os nomes dos falantes entram no arquivo; speakers=false tira.
As duas rotas respondem 409 TRANSCRIPTION_NOT_READY enquanto a transcrição processa.
Custo
| Situação | Cobrança |
|---|---|
| Transcrição nova | Por minuto de áudio medido (duration_seconds), debitada ao começar. |
Com speaker_labels | Acréscimo por minuto. |
| O mesmo arquivo de novo | Grátis: responde 200 ready na hora, com credits_charged: 0. |
| Áudio sem fala | Grátis: 200 no_speech. |
Para acrescentar falantes a uma transcrição que foi feita sem eles, peça de novo com o mesmo media_id e speaker_labels: true. O áudio é processado outra vez e cobrado.
DELETE /transcriptions/{id} tira a transcrição das listas, mas o arquivo fica na biblioteca. Transcrever o mesmo media_id depois sai de graça.
Erros
| Code | Quando |
|---|---|
INVALID_FILE_TYPE | Extensão de arquivo não aceita. extra.allowed_extensions traz as aceitas. |
FILE_TOO_LARGE | Passa do teto efetivo, em extra.max_size. |
STORAGE_LIMIT_EXCEEDED | O storage do plano está cheio. |
MEDIA_METADATA_REQUIRED | Faltou file_name ou file_size para um arquivo recém-enviado. |
MEDIA_TOO_LONG | Duração acima do permitido. extra.duration e extra.max_duration dizem quanto. |
MEDIA_NOT_FOUND | O media_id não existe neste workspace. |
MEDIA_UNREADABLE | O arquivo enviado não é um áudio ou vídeo legível. |
INSUFFICIENT_CREDITS | Saldo insuficiente. extra.credits_needed diz quanto falta. |