Quickstart
Tu primera transcripción en menos de 5 minutos. Sin auth todavía (cambiará a Bearer token cuando se active el rate limit pago).
curl (cualquier terminal)
# Transcripción JSON con timestamps
curl -X POST https://escribelo.4l3.org/v1/transcribe \
-F "file=@episodio_podcast.mp3" \
-F "tier=standard" \
-F "language=es" \
-F "output=json"
# Subtítulos SRT para YouTube
curl -X POST https://escribelo.4l3.org/v1/transcribe \
-F "[email protected]" \
-F "tier=accuracy" \
-F "output=srt" \
-o subtitulos.srt
Python (requests)
import requests
with open("audio.mp3", "rb") as f:
r = requests.post(
"https://escribelo.4l3.org/v1/transcribe",
files={"file": f},
data={"tier": "standard", "language": "es", "output": "json"},
timeout=120,
)
data = r.json()
print(data["text"])
for seg in data["segments"]:
print(f"[{seg['start']:.1f}-{seg['end']:.1f}] {seg['text']}")
Node.js (fetch + FormData)
import fs from "node:fs";
import { FormData, File } from "node:buffer";
const buffer = fs.readFileSync("audio.mp3");
const form = new FormData();
form.append("file", new File([buffer], "audio.mp3", { type: "audio/mpeg" }));
form.append("tier", "standard");
form.append("output", "json");
const r = await fetch("https://escribelo.4l3.org/v1/transcribe", {
method: "POST",
body: form,
});
const data = await r.json();
console.log(data.text);
PHP (cURL)
<?php
$ch = curl_init("https://escribelo.4l3.org/v1/transcribe");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
"file" => new CURLFile("audio.mp3"),
"tier" => "standard",
"output" => "json",
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
echo $data["text"];
Próximos pasos
- Revisa la API Reference para todos los parámetros
- Free tier: 60 minutos/mes. Cuando lo agotes, PAYG $0.005/min sin suscripción.
- Para volumen alto: Pro $9/mes (5h) o Scale $29/mes (30h).
- Si necesitas async (audios >5 min sync), espera v2 con webhook callbacks.