La transcription automatique de Hushscript transforme un enregistrement audio existant en une transcription modifiable. Dans l’application web, vous pouvez aussi partir d’une vidéo locale : Hushscript prépare son audio sur votre appareil et envoie uniquement cet audio pour la reconnaissance en ligne. Vous vérifiez et corrigez vous-même le résultat : ce service ne propose ni relecture humaine ni transcription certifiée.
Comment fonctionne la transcription automatique
- Préparez l’enregistrement. Utilisez un fichier audio, importez un lien audio pris en charge ou enregistrez votre voix dans l’application web. Pour une vidéo, choisissez un fichier local afin que l’application prépare l’audio sur votre appareil.
- Envoyez l’audio et attendez la transcription. L’application gère le téléversement et le suivi. Un agent peut téléverser l’audio préparé par parties via l’API REST ou utiliser les outils MCP selon ses autorisations, puis vérifier l’état du travail jusqu’à ce que la transcription soit prête.
- Vérifiez et exportez. Modifiez la transcription et les étiquettes de locuteurs dans l’application, ou récupérez le texte via l’API. Le jeton d’un agent peut aussi exporter la transcription selon ses autorisations.
Logiciel de transcription automatique pour l’audio et la vidéo
Le logiciel de transcription automatique de Hushscript transforme la parole enregistrée en texte que vous pouvez rechercher, modifier et exporter. L’option d’enregistrement de l’application permet aussi d’enregistrer votre voix avant la transcription. Pour obtenir un fichier d’enregistrement seul, sans transcription, utilisez le Dictaphone gratuit.
La transcription automatique d’une vidéo suit le même parcours une fois que l’application a extrait ou converti l’audio localement. L’exemple de téléversement REST ci-dessous part d’un audio préparé ; pour fournir plutôt votre fichier vidéo local à l’application, suivez le parcours web de vidéo en texte.
Puis-je essayer la transcription automatique gratuitement ?
Oui. L’aperçu public transcrit jusqu’à cinq minutes d’un fichier, d’un lien audio pris en charge ou d’un enregistrement réalisé dans le navigateur avant la connexion. Une vidéo locale fonctionne aussi, une fois son audio préparé par le navigateur. La transcription complète nécessite un compte : un compte personnel éligible reçoit 30 minutes gratuites après vérification de carte (voir les tarifs), tandis qu’un compte machine ne reçoit pas de minutes de bienvenue et commence avec le pack acheté à l’inscription.
Automatisez la transcription avec l’API ou MCP
L’application web permet de travailler directement avec les enregistrements. Pour automatiser la transcription, l’API REST et le serveur MCP permettent à un agent de téléverser l’audio préparé, de suivre les travaux, de récupérer les transcriptions et d’exporter les résultats. Un agent peut ouvrir son propre compte par un parcours où le paiement précède la création du compte, sans titulaire humain ; le paiement hébergé nécessite toujours un navigateur et l’émetteur de la carte peut demander une étape d’authentification. Une personne peut aussi créer un jeton aux autorisations limitées depuis un compte existant dans l’application. Ce guide suit le compte machine de l’inscription à la rotation de ses identifiants.
S’inscrire
POST /v1/agent/accounts lance une inscription sans interface graphique.
Il n’y a pas encore de compte, de cookie ni de jeton : seulement un achat en attente.
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 sert uniquement aux reçus et aux notifications, jamais à la
connexion. pack_id vaut 45min, 300min, 900min, 1800min ou 6000min ;
n’envoyez jamais vous-même amount ou currency, tous deux calculés à partir
du pack côté serveur. Seuls les deux plus petits packs, 45min et 300min,
peuvent être achetés à l’inscription. Un pack_id plus grand est refusé ;
la réponse contient details.allowed_packs, qui indique ce que ce compte
peut acheter maintenant, pour que l’appelant puisse réessayer sans deviner.
Les autres paliers se débloquent selon l’ancienneté des paiements, et non le
volume : voir Ce qu’un nouveau compte peut acheter ci-dessous.
accept_terms_version doit correspondre exactement à la version actuelle de
la politique du serveur. Sinon, l’appel échoue avec policy_version_stale,
qui indique la valeur actuelle dans sa réponse. L’indication facultative
data_region n’est respectée que si elle correspond à la région déjà déduite
de votre localisation réseau. L’option dry_run: true valide tout sans session
Stripe ni débit ; son signup_id porte le préfixe dry_ et ne peut jamais
être utilisé pour activer un compte.
claim_secret n’est affiché qu’une seule fois, dans cette réponse. Hushscript
ne conserve que son empreinte de hachage. Le perdre avant l’appel d’activation
signifie perdre l’inscription : il n’existe aucune procédure de récupération
de ce secret. Une inscription payée mais non activée entre dans le processus
de remboursement décrit ci-dessous ; une recherche ne permet pas de la récupérer.
Finalisez le paiement dans votre propre navigateur
checkout_url est une page Stripe Checkout hébergée. Cette étape de
l’inscription nécessite un navigateur, qui peut être celui d’un agent :
celui-ci peut le piloter avec son automatisation pour remplir les champs de
carte, valider et suivre la redirection. Hushscript ne voit jamais les données
de la carte ; Stripe les reçoit. Vous disposez de 30 minutes pour terminer le
paiement puis activer le compte, selon le expires_at ci-dessus.
Une tâche horaire vérifie les inscriptions payées mais non activées après la fenêtre d’activation de 30 minutes et un délai supplémentaire d’une heure. Elle tente un remboursement intégral, car les minutes ne sont créditées qu’à l’activation. Les tentatives de remboursement échouées sont renouvelées et peuvent nécessiter un traitement manuel ; aucun délai précis de réception du remboursement n’est garanti.
Activez le compte
POST /v1/agent/accounts/{signup_id}/claim transforme une inscription payée
mais non activée en un compte réel, en un seul appel.
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
}
L’activation crée exactement un compte associé à une identité de connexion
synthétique qui ne correspond à aucune adresse utilisable, et accorde le pack
payé une seule fois, quel que soit le nombre de répétitions de la requête. Elle
génère un PAT : la valeur pat ci-dessus.
Si la réponse est perdue, répétez l’appel avec le même claim_secret. Dans
l’heure qui suit l’activation, et tant que le jeton émis n’a jamais été utilisé,
la nouvelle tentative renvoie 201 pour le même compte, avec la même forme de
réponse et un nouveau pat. Le jeton perdu cesse de fonctionner. Après la
première utilisation du jeton, ou passé cette heure, une nouvelle tentative
renvoie agent_claim_invalid. Une nouvelle tentative qui chevauche une
activation encore en cours peut recevoir 429 rate_limited avec un en-tête
Retry-After ; réessayez après ce délai.
Ce premier jeton permet de transcrire, lire et modifier les transcriptions, exporter, consulter le solde du compte, acheter des minutes et effectuer sa propre rotation. Il n’accorde pas les autorisations Insights, de contexte, d’organisation ou de modification des paramètres. Le serveur MCP propose uniquement les outils couverts par les autorisations du jeton.
Un secret erroné, un signup_id inconnu, une inscription remboursée ou
expirée, et une activation répétée dont le jeton a déjà servi ou dont l’heure
est écoulée renvoient tous la même erreur agent_claim_invalid.
La réponse ne permet volontairement pas de les distinguer. L’état du paiement
n’intervient qu’une fois le secret lui-même validé : une session Checkout dont
le paiement n’est pas encore réglé renvoie alors wrong_state.
Le balance_seconds ci-dessus représente la totalité du solde de départ.
Les comptes d’agents ne reçoivent ni bonus de bienvenue ni minutes gratuites
après vérification de carte, contrairement au premier compte d’une personne ;
ils commencent uniquement avec le pack payé. C’est volontaire : le paiement
précède l’existence du compte.
Achetez davantage de minutes
À partir d’ici, le compte utilise l’interface /v1/, documentée intégralement
sur /developers.
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
}
Cet appel nécessite l’autorisation billing, déjà accordée dans la réponse
d’activation ci-dessus. L’activation autorise aussi la facturation sur le
jeton et le compte ; un jeton créé par une personne nécessite l’autorisation
billing et l’activation des deux réglages de facturation. Les appels de
facturation PAT partagent une limite plus stricte de 60 requêtes par minute
et par compte sur les routes qui appellent Stripe, avant leurs requêtes Stripe.
Ce qu’un nouveau compte peut acheter
La taille des packs se débloque selon l’ancienneté des paiements réglés, et non les sommes dépensées. Un achat ne compte pour le palier suivant qu’une fois 7 jours écoulés depuis sa date de paiement. Un compte tout neuf ne peut donc pas accéder aux grands packs en multipliant rapidement les achats.
| Paiements réglés depuis plus de 7 jours | Packs accessibles |
|---|---|
| Aucun, y compris juste après l’activation | 45min, 300min |
| Au moins l’équivalent de 45 minutes | ajoute 900min, 1800min |
| Au moins l’équivalent de 15 heures | ajoute 6000min |
Un achat refusé indique les packs actuellement accessibles dans
details.allowed_packs. L’appel d’inscription applique la première ligne du
tableau, d’où le choix de 300min dans ce guide plutôt qu’un pack plus grand.
Indépendamment des paliers, un plafond de consommation sur 24 heures glissantes
limite la vitesse à laquelle peut être dépensé un solde dont l’ancienneté n’a
pas encore dépassé la fenêtre de contestation. L’achat à l’inscription compte
parmi les trois tentatives d’achat du compte sur 24 heures glissantes ; les
tentatives refusées après réservation comptent aussi.
Transcrivez
Le téléversement et la transcription suivent le même parcours en plusieurs parties que pour tout autre compte. L’exemple API envoie de l’audio préparé ; il ne téléverse pas le fichier source d’une vidéo locale.
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=..." }
]
}
Envoyez chaque partie par PUT à son URL présignée, puis appelez POST sur
le /complete du même travail avec le n et l’etag de chaque partie ainsi
envoyée. Interrogez ensuite régulièrement le travail :
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": "..."
}
Effectuez la rotation de l’identifiant
Un compte machine n’a ni mot de passe ni boîte mail utilisable. Il n’existe donc pas de parcours « mot de passe oublié » si un PAT est divulgué ou doit simplement être remplacé. La rotation assure ce remplacement.
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
}
L’appel ne prend aucun corps. Il génère un successeur pour le jeton ayant authentifié la requête. Le successeur conserve les autorisations, la permission de facturation, le nom, le libellé client et la politique d’expiration du prédécesseur. Cette route touche uniquement le jeton de l’appelant : elle ne peut ni lister, ni générer, ni révoquer un autre identifiant du compte. C’est la seule procédure de récupération d’identifiant d’un compte machine : effectuez la rotation avant de supprimer l’ancien jeton, pas après.
L’ancien jeton n’est pas révoqué tout de suite. Après la rotation, il ne sert
plus qu’à une chose : appeler de nouveau rotate. Cela dure jusqu’à la première
requête réussie du nouveau jeton, ou jusqu’à une heure écoulée, selon ce qui
arrive en premier. Sur toutes les autres routes, l’ancien jeton reçoit aussitôt
401.
Si la réponse portant le nouveau jeton est perdue, appelez de nouveau rotate
avec l’ancien jeton tant que le nouveau n’a pas servi. Vous obtenez un nouveau
secret pour le même pat_id, et le précédent nouveau secret cesse de
fonctionner.
Conservez l’ancien jeton jusqu’à ce que le nouveau ait fonctionné une fois.
Faites ensuite aussitôt un appel avec le nouveau jeton, par exemple
GET /v1/account. Cette première requête réussie retire définitivement
l’ancien jeton.
Erreurs
| Statut | Code | Slug | Signification |
|---|---|---|---|
| 401 | 2000 | unauthorized |
Jeton porteur manquant ou invalide |
| 403 | 2023 | pat_scope_missing |
Le jeton n’a pas l’autorisation requise pour cet appel, ou la facturation est désactivée sur le compte |
| 403 | 4021 | pat_purchase_requires_app |
Aucune carte enregistrée n’a été indiquée, ou le paiement a été refusé ; rien n’a été débité |
| 403 | 4023 | pat_purchase_requires_authentication |
L’émetteur de la carte demande une vérification que l’appelant ne peut pas effectuer ; la carte elle-même est valide |
| 402 | 3001 | insufficient_balance |
Solde insuffisant pour accepter le travail |
| 429 | 5000 | rate_limited |
Trop de requêtes ; attendez le délai indiqué par Retry-After |
Ces erreurs couvrent les contrôles de l’inscription et des achats d’agents. Le plafond d’achat s’applique aussi aux achats par PAT sur un compte humain ; un achat effectué dans une session humaine en est exempté.
| Statut | Code | Slug | Signification |
|---|---|---|---|
| 409 | 4035 | agent_signup_pending |
Une inscription pour ce contact_email est encore ouverte. Attendez son activation, son remboursement ou son expiration, ou utilisez une autre adresse |
| 401 | 4036 | agent_claim_invalid |
Secret erroné, inscription inconnue, remboursée, expirée, ou déjà activée dont le jeton a déjà servi ou dont l’heure est passée. Réponse volontairement identique |
| 403 | 4037 | agent_pack_locked |
Le palier de ce compte n’autorise pas encore ce pack. Contient details.allowed_packs ; réessayez avec l’un de ces packs |
| 429 | 4038 | agent_purchase_capped |
3 tentatives d’achat sur les 24 dernières heures, y compris les échecs après réservation et l’achat à l’inscription d’un compte d’agent. Comptées par compte, tous identifiants confondus : la rotation ne réinitialise pas le compteur. Contient details.retry_after_seconds |
Une fois le secret d’activation lui-même validé, une session Checkout non payée
renvoie wrong_state (4001) plutôt que agent_claim_invalid. Le catalogue
complet figure dans le document OpenAPI.
Limites
Les appels sont limités à 1 200 par minute. Pour un compte d’agent, ce quota appartient au compte, pas à chaque jeton : tous les identifiants de la lignée de rotation utilisent le même compteur. La rotation d’un PAT ne donne donc pas de nouveau quota au successeur. Les appels de facturation PAT qui atteignent Stripe partagent une limite plus stricte de 60 par minute et par compte. Cela comprend l’enregistrement et l’achat, le changement de carte par défaut, la suppression d’une carte et les consultations de la liste des cartes absente du cache ; le contrôle précède l’appel Stripe. Le plafond d’achat sur 24 heures ci-dessus est également compté par compte, et non par identifiant.
En savoir plus
Cette page couvre le cycle de vie du compte : l’ouvrir, le financer et garder son identifiant actif. Pour tout ce que le compte peut ensuite faire, consultez l’API REST, dont le document OpenAPI complet, ou le serveur MCP pour utiliser le même compte via des outils plutôt que des appels HTTP bruts.