La transcripción automática de Hushscript convierte una grabación de audio existente en una transcripción editable. En la aplicación del navegador también puedes empezar con un video local: Hushscript prepara su audio en tu dispositivo y envía solo ese audio para el reconocimiento en línea. Tú revisas y corriges el resultado; no es un servicio de transcripción revisado por humanos ni certificado.
Cómo funciona la transcripción automática
- Prepara la grabación. Usa un archivo de audio, importa un enlace de audio compatible o graba tu voz en la aplicación del navegador. Para grabaciones de video, elige un archivo local para que la aplicación prepare el audio en tu dispositivo.
- Envía y espera la transcripción. La aplicación se encarga de la subida y del estado. Un agente puede subir audio preparado por partes mediante la API REST o usar las herramientas MCP limitadas por scopes, y luego consultar el job hasta que la transcripción esté lista.
- Revisa y exporta. Edita la transcripción y las etiquetas de hablante en la aplicación, o recupera el texto mediante la API. El token de un agente también puede exportar la transcripción dentro de los scopes que se le concedieron.
Software de transcripción automática para audio y video
El software de transcripción automática de Hushscript convierte el habla grabada en texto que puedes buscar, editar y exportar. La opción de grabar de la aplicación también te permite capturar una grabación de voz antes de transcribir. Para un archivo de grabación independiente, sin transcripción, usa el grabador de voz gratuito.
La transcripción automática de video sigue el mismo flujo de texto una vez que la aplicación extrae o convierte el audio de forma local. El ejemplo de subida REST de abajo parte de audio ya preparado; para pasarle a la aplicación tu archivo de video local, usa el flujo del navegador en video a texto.
¿Puedo probar la transcripción automática gratis?
Sí. La vista previa pública transcribe hasta cinco minutos de un archivo, un enlace de audio compatible o una grabación del navegador antes de iniciar sesión, y un video local funciona una vez que el navegador prepara su audio. La transcripción completa requiere una cuenta: una cuenta personal elegible recibe 30 minutos gratis tras verificar la tarjeta (consulta los precios para ver cómo funciona), mientras que una cuenta de máquina no recibe los minutos de bienvenida y empieza con el paquete que compra al registrarse.
Automatiza transcripciones con la API o MCP
La aplicación del navegador sirve para trabajar directamente con grabaciones. Para automatizar transcripciones, la API REST y el servidor MCP permiten que un agente suba audio preparado, consulte jobs, recupere transcripciones y exporte resultados. Un agente puede abrir su propia cuenta con un flujo que empieza por el pago, sin titular humano; el pago alojado sigue necesitando un navegador, y el emisor de la tarjeta puede exigir un paso de autenticación. Una persona puede, en cambio, crear un token con scopes limitados desde una cuenta existente en la aplicación. Esta guía sigue la cuenta de máquina desde el registro hasta la rotación de credenciales.
Regístrate
POST /v1/agent/accounts abre un registro sin interfaz. Todavía no hay
cuenta, ni cookie, ni token: solo una compra pendiente.
curl -X POST https://api.hushscript.com/v1/agent/accounts \
-H "Content-Type: application/json" \
-d '{
"contact_email": "ops@example-agent.dev",
"pack_id": "300min",
"accept_terms_version": "2026-10-20",
"agent": {
"name": "research-crawler",
"platform": "langgraph",
"contact_url": "https://example-agent.dev/bots/research-crawler"
}
}'
{
"signup_id": "hsr1:eu:4c3a1f9e7b2d4e6f8a0c1b2d3e4f5061",
"claim_secret": "cs_9f3d2a1b7e6c4f5a8b9d0e1f2a3b4c5d",
"checkout_url": "https://checkout.stripe.com/c/pay/cs_test_a1B2c3D4e5F6",
"pack": "300min",
"amount": 599,
"currency": "usd",
"expires_at": 1789112400
}
contact_email sirve solo para recibos y avisos, nunca para iniciar sesión.
pack_id es uno de 45min, 300min, 900min, 1800min, 6000min; nunca
envíes tú mismo amount ni currency, ambos se derivan del paquete en el
servidor. Solo los dos paquetes más pequeños, 45min y 300min, se pueden
comprar al registrarse. Un pack_id mayor se rechaza, y el rechazo trae
details.allowed_packs, que enumera lo que esta cuenta puede comprar ahora
mismo, para que quien llama pueda reintentar sin adivinar. El resto de los
niveles se desbloquea con la antigüedad, no con el volumen: consulta Qué
puede comprar una cuenta nueva más abajo.
accept_terms_version debe coincidir exactamente con la versión de política
vigente en el servidor, o la llamada falla con policy_version_stale, que
indica el valor actual en su cuerpo. Una sugerencia opcional data_region
solo se respeta cuando coincide con la región que ya implica tu ubicación de
red. Un dry_run: true opcional valida todo sin crear una sesión de Stripe
ni realizar ningún cargo; su signup_id lleva el prefijo dry_ y nunca se
puede reclamar.
claim_secret se muestra exactamente una vez, en esta respuesta. Hushscript
solo almacena su hash. Perderlo antes de la llamada de reclamo significa
perder el registro: no existe ninguna ruta de recuperación para un secreto de
reclamo. Un registro pagado y sin reclamar entra en el proceso de reembolso
que se describe más abajo; no se puede recuperar mediante una búsqueda.
Completa el pago en tu propio navegador
checkout_url es una página de Stripe Checkout alojada. Este paso del
registro necesita un navegador, y no tiene que ser el navegador de una
persona: un agente puede manejarlo con su propia automatización (llenar los
campos de la tarjeta, enviar, seguir la redirección). Hushscript nunca ve los
datos de la tarjeta en ningún caso; Stripe sí. La ventana para completarlo y
luego reclamar es de 30 minutos, el expires_at de arriba.
Un barrido cada hora revisa los registros pagados y sin reclamar una vez pasada la ventana de reclamo de 30 minutos y una hora de gracia adicional. Intenta un reembolso completo, porque los minutos solo se acreditan al reclamar. Los intentos de reembolso fallidos se reintentan y pueden requerir gestión manual; no se garantiza que el reembolso llegue en un momento determinado.
Reclama la cuenta
POST /v1/agent/accounts/{signup_id}/claim convierte un registro pagado y
sin reclamar en una cuenta real, en una sola llamada.
curl -X POST https://api.hushscript.com/v1/agent/accounts/hsr1:eu:4c3a1f9e7b2d4e6f8a0c1b2d3e4f5061/claim \
-H "Content-Type: application/json" \
-d '{"claim_secret": "cs_9f3d2a1b7e6c4f5a8b9d0e1f2a3b4c5d"}'
{
"user_id": "usr_7d1a2b3c4d5e6f708192a3b4c5d6e7f8",
"pat": "hsr1:eu:pat.k3n2j1.8f7e6d5c4b3a29180716253443526170",
"scopes": [
"transcripts:read",
"transcripts:write",
"transcribe",
"account:read",
"export",
"billing",
"pat:rotate"
],
"balance_seconds": 18000
}
Reclamar crea exactamente una cuenta, con una identidad de inicio de sesión
sintética e irresoluble detrás, y concede el paquete pagado exactamente una vez,
sin importar cuántas veces se reintente la solicitud. Emite un PAT: el valor
pat de arriba.
Si la respuesta se pierde, repite la llamada con el mismo claim_secret. Dentro
de la hora siguiente al reclamo, y mientras el token emitido no se haya
usado nunca, el reintento devuelve 201 para la misma cuenta, con la misma
forma de respuesta y un pat nuevo. El token perdido deja de funcionar. Tras el
primer uso del token, o pasada esa hora, un reintento responde
agent_claim_invalid. Un reintento que coincida con un reclamo todavía en
curso puede recibir 429 rate_limited con un encabezado Retry-After;
reintenta tras ese plazo.
Ese primer token puede transcribir, leer y editar transcripciones, exportar, consultar el saldo de la cuenta, comprar minutos y rotarse a sí mismo. No concede scopes de Insights, de contexto, de organización ni de escritura de ajustes. El servidor MCP solo ofrece las herramientas que cubren los scopes del token.
Un secreto incorrecto, un signup_id desconocido, un registro reembolsado, uno
vencido y un reclamo repetido cuyo token ya se usó o cuya hora ya pasó
responden todos con el mismo error agent_claim_invalid. A propósito, quien llama no tiene forma de
distinguirlos a partir de la respuesta. Solo una vez que el secreto en sí es
válido entra en juego el estado del pago: una Checkout Session que todavía no
se liquidó responde wrong_state en su lugar.
El balance_seconds de arriba es todo el saldo inicial. Las cuentas de
agente no reciben ningún bono de bienvenida ni minutos gratis por
verificación de tarjeta como sí recibe la primera cuenta de una persona;
parten de nada más que el paquete que pagaron. Eso es deliberado: la cuenta
ya estaba pagada antes de existir.
Compra más minutos
Desde aquí la cuenta usa la superficie /v1/ que
/developers documenta por completo.
curl -X POST https://api.hushscript.com/v1/billing/purchase \
-H "Authorization: Bearer hsr1:eu:pat.k3n2j1.8f7e6d5c4b3a29180716253443526170" \
-H "Content-Type: application/json" \
-d '{
"pack": "300min",
"quick_payment_method_id": "pm_1PqR2sT3uV4wX5yZ",
"idempotency_key": "purchase-2026-09-11-01"
}'
{
"balance_seconds": 36000
}
Esto necesita el scope billing, que la respuesta de reclamo de arriba ya
concedió. El reclamo también activa la facturación en el token y en la
cuenta; un token creado por una persona necesita el scope billing y que
ambos interruptores de facturación estén activados. Las llamadas de
facturación con PAT comparten un límite más estricto de 60 solicitudes por
minuto por cuenta en las rutas de facturación que llaman a Stripe, antes de
sus solicitudes a Stripe.
Qué puede comprar una cuenta nueva
El tamaño de paquete se desbloquea según la antigüedad de los pagos liquidados, no según cuánto gasta una cuenta. Una compra cuenta para el siguiente nivel solo una vez que pasaron 7 días desde su propia fecha de pago, así que una cuenta recién creada no puede alcanzar los paquetes grandes comprando rápido.
| Pagos liquidados con más de 7 días | Paquetes que puede comprar |
|---|---|
| Todavía ninguno, incluido un reclamo recién hecho | 45min, 300min |
| Al menos el equivalente a 45 minutos | añade 900min, 1800min |
| Al menos el equivalente a 15 horas | añade 6000min |
Una compra rechazada indica el conjunto actual en details.allowed_packs en
lugar de fallar a ciegas. La llamada de registro aplica la primera fila de
esa tabla, por eso la guía de arriba compra 300min y no algo más grande.
Aparte de los niveles, un tope móvil de consumo de 24 horas limita qué tan
rápido se puede gastar el saldo que todavía no superó en antigüedad la
ventana de disputa. La compra del registro cuenta para los tres intentos de
compra de la cuenta en un periodo móvil de 24 horas; los intentos rechazados
tras la reserva también cuentan.
Transcribe
Subir y transcribir es el mismo flujo multiparte que en cualquier otra cuenta. El ejemplo de la API envía audio ya preparado; no sube el archivo fuente de un video local.
curl -X POST https://api.hushscript.com/v1/uploads \
-H "Authorization: Bearer hsr1:eu:pat.k3n2j1.8f7e6d5c4b3a29180716253443526170" \
-H "Content-Type: application/json" \
-d '{
"size_bytes": 48213504,
"duration_seconds": 1860,
"title": "weekly-standup-2026-09-11",
"idempotency_key": "upload-2026-09-11-01"
}'
{
"job_id": "job_3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d",
"part_urls": [
{ "n": 1, "url": "https://r2.hushscript.com/uploads/job_3a2b1c0d.../part-1?X-Amz-Signature=..." }
]
}
Haz PUT de cada parte a su URL prefirmada, luego haz POST a /complete
del mismo job con el n y el etag de cada parte enviada de esa forma.
Después, consulta el job:
curl https://api.hushscript.com/v1/jobs/job_3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d \
-H "Authorization: Bearer hsr1:eu:pat.k3n2j1.8f7e6d5c4b3a29180716253443526170"
{
"id": "job_3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d",
"state": "done",
"transcript_id": "trs_6f5e4d3c2b1a0908f7e6d5c4b3a29180"
}
curl https://api.hushscript.com/v1/transcripts/trs_6f5e4d3c2b1a0908f7e6d5c4b3a29180 \
-H "Authorization: Bearer hsr1:eu:pat.k3n2j1.8f7e6d5c4b3a29180716253443526170"
{
"id": "trs_6f5e4d3c2b1a0908f7e6d5c4b3a29180",
"language": "en",
"duration_seconds": 1860,
"body": "..."
}
Rota la credencial
Una cuenta de máquina no tiene contraseña ni un buzón de correo utilizable, así que no existe la ruta de ‘olvidé mi contraseña’ si un PAT se filtra o simplemente hay que reemplazarlo. La rotación es esa ruta.
curl -X POST https://api.hushscript.com/v1/agent/credentials/rotate \
-H "Authorization: Bearer hsr1:eu:pat.k3n2j1.8f7e6d5c4b3a29180716253443526170"
{
"pat": "hsr1:eu:pat.p9q8r7.1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d",
"pat_id": "p9q8r7",
"scopes": [
"transcripts:read",
"transcripts:write",
"transcribe",
"account:read",
"export",
"billing",
"pat:rotate"
],
"expires_at": null
}
La llamada no lleva cuerpo. Emite un sucesor para el token que autenticó la solicitud. El sucesor conserva los scopes, el permiso de facturación, el nombre, la etiqueta de cliente y la política de vencimiento del predecesor. Esta ruta no toca nada más que el propio token de quien llama: no puede listar, emitir ni revocar ninguna otra credencial de la cuenta. Es la única ruta de recuperación de credenciales que tiene una cuenta de máquina, así que rota antes de descartar el token anterior, no después.
El token anterior no se revoca de inmediato. Tras rotar, solo sirve para una
cosa: llamar de nuevo a rotate. Eso dura hasta que el token nuevo haga su
primera solicitud correcta o pase una hora, lo que ocurra primero. En cualquier
otra ruta, el token anterior responde 401 de inmediato.
Si se pierde la respuesta con el token nuevo, llama de nuevo a rotate con el
token anterior mientras el nuevo siga sin usar. Obtienes un secreto nuevo para
el mismo pat_id, y el secreto nuevo emitido antes deja de funcionar.
Conserva el token anterior hasta que el nuevo haya funcionado una vez. Luego haz
enseguida una llamada con el token nuevo, como GET /v1/account. Esa primera
solicitud correcta retira el token anterior para siempre.
Errores
| Status | Code | Slug | Significado |
|---|---|---|---|
| 401 | 2000 | unauthorized |
Token bearer ausente o inválido |
| 403 | 2023 | pat_scope_missing |
Al token le falta el scope que esta llamada necesita, o la facturación está desactivada para la cuenta |
| 403 | 4021 | pat_purchase_requires_app |
No se indicó ninguna tarjeta guardada, o el cargo fue rechazado; no se cobró nada |
| 403 | 4023 | pat_purchase_requires_authentication |
El emisor de la tarjeta pide una verificación que quien llama no puede completar; la tarjeta en sí está bien |
| 402 | 3001 | insufficient_balance |
Saldo insuficiente para admitir el job |
| 429 | 5000 | rate_limited |
Demasiadas solicitudes; espera el Retry-After |
Estos errores cubren los controles de registro y de compra de los agentes. El tope de compras también se aplica a las compras con PAT en una cuenta humana; una compra con sesión humana está exenta.
| Status | Code | Slug | Significado |
|---|---|---|---|
| 409 | 4035 | agent_signup_pending |
Todavía hay un registro abierto para este contact_email. Espera a que se reclame, se reembolse o venza, o usa otra dirección |
| 401 | 4036 | agent_claim_invalid |
Secreto incorrecto, registro desconocido, reembolsado, vencido, o ya reclamado con el token ya usado o la hora ya pasada. Idéntico a propósito |
| 403 | 4037 | agent_pack_locked |
El nivel de esta cuenta todavía no permite ese paquete. Trae details.allowed_packs; reintenta con uno de esos |
| 429 | 4038 | agent_purchase_capped |
3 intentos de compra en las últimas 24 horas, incluidos los fallos tras la reserva y la compra de registro de una cuenta de agente. Se cuenta por cuenta, a través de todas las credenciales, así que rotar no lo reinicia. Trae details.retry_after_seconds |
Una vez que el secreto de reclamo en sí es válido, una Checkout Session sin
pagar responde wrong_state (4001) en lugar de agent_claim_invalid. El
catálogo completo está en el
documento OpenAPI.
Límites
Las llamadas están limitadas a 1,200 por minuto. Para una cuenta de agente, ese presupuesto pertenece a la cuenta, no al token individual: cada credencial del linaje de rotación consume del mismo cupo, así que rotar un PAT no le da al sucesor una asignación nueva. Las llamadas de facturación con PAT que llegan a Stripe comparten un límite más estricto de 60 por minuto por cuenta. Esto incluye la configuración y la compra, los cambios y la eliminación de la tarjeta predeterminada, y los fallos de caché en la lista de tarjetas; la comprobación se ejecuta antes de la llamada a Stripe. El tope de compra de 24 horas de arriba se cuenta de la misma forma, por cuenta en lugar de por credencial.
Más información
Esta página cubre el ciclo de vida de la cuenta: abrirla, financiarla y mantener viva su credencial. Para todo lo que la cuenta puede hacer después, consulta la API REST, incluido el documento OpenAPI completo, o el servidor MCP para la misma cuenta mediante herramientas en lugar de HTTP puro.