Zum Hauptinhalt springen

Automatisierte Nutzung

Ein Agent kann ein Hushscript-Konto eröffnen, es bezahlen, Aufnahmen transkribieren und seine eigenen Zugangsdaten wiederherstellen, von Anfang bis Ende, ohne dass sich ein Mensch anmeldet.

Ein Hushscript-Konto zu eröffnen brauchte früher zumindest einmal einen Menschen. Das ist nicht mehr die ganze Geschichte. Ein zahlungsorientierter Ablauf lässt einen Agenten ein eigenes Konto eröffnen, finanzieren und betreiben, ohne dass irgendwo ein menschlicher Kontoinhaber im Spiel ist. /developers und /mcp dokumentieren die beiden Schnittstellen, die dieses Konto danach nutzt; diese Seite ist die Anleitung, um eines zu bekommen.

Registrieren

POST /v1/agent/accounts startet eine kopflose Registrierung. Es gibt noch kein Konto, kein Cookie und kein Token: nur einen ausstehenden Kauf.

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-08-01",
    "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 dient nur für Belege und Benachrichtigungen, niemals als Login. pack_id ist eines von 45min, 300min, 900min, 1800min, 6000min; senden Sie amount oder currency niemals selbst, beide werden auf dem Server aus dem Paket abgeleitet. Nur die beiden kleinsten Pakete, 45min und 300min, können bei der Registrierung gekauft werden. Ein größeres pack_id wird abgelehnt, und die Ablehnung enthält details.allowed_packs mit den Paketen, die dieses Konto gerade kaufen darf, sodass ein Aufrufer es ohne Raten erneut versuchen kann. Der Rest der Stufenleiter schaltet sich mit dem Alter frei, nicht mit dem Volumen: siehe Was ein neues Konto kaufen darf weiter unten. accept_terms_version muss exakt der aktuellen Richtlinienversion des Servers entsprechen, sonst schlägt der Aufruf mit policy_version_stale fehl, dessen Body den aktuellen Wert nennt. Ein optionaler data_region-Hinweis wird nur berücksichtigt, wenn er mit der Region übereinstimmt, die Ihr Netzwerkstandort ohnehin nahelegt. Ein optionales dry_run: true validiert alles ohne Stripe-Sitzung und ohne Belastung; seine signup_id trägt das Präfix dry_ und kann nie beansprucht werden.

claim_secret wird nur einmal angezeigt, in dieser Antwort. Hushscript speichert nur dessen Hash. Wird es vor dem Claim-Aufruf verloren, ist die Registrierung verloren: Es gibt keinen Wiederherstellungsweg für ein Claim-Secret, und die treuhänderisch gehaltene Zahlung wird durch den unten beschriebenen Sweep erstattet, nicht durch eine Abfrage zurückgegeben.

Checkout im eigenen Browser abschließen

checkout_url ist eine gehostete Stripe-Checkout-Seite. Sie ist der einzige Schritt in diesem gesamten Ablauf, der einen Browser braucht, und es muss nicht der Browser eines Menschen sein: Ein Agent kann sie mit eigener Automatisierung steuern (Kartenfelder ausfüllen, absenden, der Weiterleitung folgen). Hushscript sieht die Kartendaten so oder so nie; Stripe schon. Das Zeitfenster, um sie abzuschließen und danach zu beanspruchen, beträgt 30 Minuten, das expires_at oben.

Eine Registrierung, die bezahlt, aber nie beansprucht wird, wird automatisch durch einen stündlichen Sweep erstattet, etwa eine Stunde nachdem sich dieses 30-Minuten-Fenster schließt. Die Erstattung ist vollständig, denn Minuten werden erst bei der Beanspruchung einem Guthaben gutgeschrieben, sodass eine unbeanspruchte Registrierung nie welche zum Verbrauchen hatte.

Konto beanspruchen

POST /v1/agent/accounts/{signup_id}/claim verwandelt eine bezahlte, unbeanspruchte Registrierung in einem einzigen Aufruf in ein echtes Konto.

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
}

Das Beanspruchen ist Einmalgebrauch. Es erstellt genau ein Konto mit einer synthetischen, nicht auflösbaren Login-Identität dahinter, gewährt das bezahlte Paket genau einmal, selbst wenn der Aufruf wiederholt wird, und prägt genau ein PAT: den pat-Wert oben, ebenfalls nur einmal angezeigt.

Ein falsches Secret, eine unbekannte signup_id, eine bereits beanspruchte, eine erstattete und eine abgelaufene Registrierung beantworten alle mit demselben Fehler agent_claim_invalid. Ein Aufrufer kann diese Fälle absichtlich nicht anhand der Antwort unterscheiden. Erst wenn das Secret selbst stimmt, kommt der Zahlungsstatus ins Spiel: Eine Checkout Session, die noch nicht abgerechnet ist, antwortet stattdessen mit wrong_state.

Das balance_seconds oben ist das gesamte Startguthaben. Agenten-Konten erhalten keinen Willkommensbonus und keine kostenlosen Minuten durch Kartenverifizierung, wie es beim ersten Konto einer Person der Fall ist; sie starten mit nichts außer dem Paket, das sie bezahlt haben. Das ist Absicht, keine Lücke: Das Konto war bereits bezahlt, bevor es existierte.

Weitere Minuten kaufen

Von hier an verhält sich das Konto wie jedes andere, über dieselbe /v1/-Oberfläche, die /developers vollständig dokumentiert.

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
}

Das erfordert den Scope billing, den die Claim-Antwort oben bereits gewährt hat, und teilt sich mit der Route zum Speichern der Karte ein engeres Limit von 60 Anfragen pro Minute und Konto, noch vor dem Stripe-Aufruf, den jede der beiden macht.

Was ein neues Konto kaufen darf

Die Paketgröße schaltet sich anhand des Alters abgerechneter Zahlungen frei, nicht danach, wie viel ein Konto ausgibt. Ein Kauf zählt erst zur nächsten Stufe, sobald er 7 Tage nach seinem eigenen Zahlungsdatum liegt, sodass ein brandneues Konto die großen Pakete nicht durch schnelles Kaufen erreichen kann.

Abgerechnete Zahlungen, die 7 Tage alt sind Pakete, die gekauft werden dürfen
Noch keine, auch nicht direkt nach dem Beanspruchen 45min, 300min
Mindestens im Wert von 45 Minuten fügt 900min, 1800min hinzu
Mindestens im Wert von 15 Stunden fügt 6000min hinzu

Ein abgelehnter Kauf nennt die aktuelle Auswahl in details.allowed_packs, statt blind zu scheitern. Der Registrierungsaufruf wendet die erste Zeile dieser Tabelle an, weshalb die Anleitung oben 300min kauft und nicht etwas Größeres. Unabhängig von der Stufenleiter begrenzt eine gleitende 24-Stunden-Verbrauchsgrenze, wie schnell Guthaben ausgegeben werden kann, das das Streitfenster noch nicht überschritten hat.

Transkribieren

Hochladen und Transkribieren laufen über denselben mehrteiligen Ablauf wie bei jedem anderen Konto.

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=..." }
  ]
}

Laden Sie jeden Teil per PUT an seine vorsignierte URL hoch, senden Sie dann ein POST an /complete desselben Jobs mit dem n und etag jedes so gesendeten Teils. Pollen Sie danach den 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": "..."
}

PAT rotieren

Ein Maschinenkonto hat kein Passwort und kein nutzbares Postfach, daher gibt es keinen „Passwort vergessen”-Weg, falls ein PAT durchsickert oder einfach ersetzt werden muss. Rotation ist dieser Weg.

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
}

Der Aufruf braucht keinen Body. Er prägt atomar einen Nachfolger und widerruft das Token, das die Anfrage authentifiziert hat, sodass das alte PAT beim allernächsten damit ausgeführten Aufruf fehlschlägt. Der Nachfolger übernimmt die Scopes, die Abrechnungsberechtigung, den Namen, das Client-Label und die Ablaufrichtlinie des Vorgängers. Diese Route fasst nichts an außer dem eigenen PAT des Aufrufers: Sie kann kein anderes Zugangstoken des Kontos auflisten, prägen oder widerrufen. Es ist der einzige Weg zur Wiederherstellung von Zugangsdaten, den ein Maschinenkonto hat, also rotieren Sie, bevor das alte PAT verworfen wird, nicht danach.

Fehler

Status Code Slug Bedeutung
401 2000 unauthorized Fehlendes oder ungültiges Bearer-Token
403 2023 pat_scope_missing Dem Token fehlt der für diesen Aufruf nötige Scope, oder die Abrechnung ist für das Konto deaktiviert
403 4021 pat_purchase_requires_app Keine gespeicherte Karte genannt, oder die Belastung wurde abgelehnt; es wurde nichts berechnet
403 4023 pat_purchase_requires_authentication Der Kartenaussteller verlangt eine Bestätigung, die der Aufrufer nicht durchführen kann; die Karte selbst ist in Ordnung
402 3001 insufficient_balance Nicht genug Guthaben, um den Job zuzulassen
429 5000 rate_limited Zu viele Anfragen; warten Sie auf Retry-After

Diese vier sind spezifisch für Agenten-Konten und werden von einem menschlichen Konto nie erreicht:

Status Code Slug Bedeutung
409 4035 agent_signup_pending Für diese contact_email ist noch eine Registrierung offen. Warten Sie, bis sie beansprucht, erstattet oder abgelaufen ist, oder verwenden Sie eine andere Adresse
401 4036 agent_claim_invalid Falsches Secret, unbekannte Registrierung, bereits beansprucht, erstattet oder abgelaufen. Absichtlich identisch
403 4037 agent_pack_locked Die Stufe dieses Kontos erlaubt dieses Paket noch nicht. Enthält details.allowed_packs; erneut mit einem davon versuchen
429 4038 agent_purchase_capped 3 Käufe, bezahlt oder abgelehnt, in den letzten 24 Stunden. Wird pro Konto über alle jemals gehaltenen Zugangsdaten hinweg gezählt, Rotation setzt das also nicht zurück. Enthält details.retry_after_seconds

Sobald das Claim-Secret selbst stimmt, antwortet eine unbezahlte Checkout Session mit wrong_state (4001) statt mit agent_claim_invalid. Der vollständige Katalog ist das OpenAPI-Dokument.

Limits

Aufrufe sind auf 1.200 pro Minute begrenzt. Bei einem Agenten-Konto gehört dieses Budget dem Konto, nicht dem einzelnen Token: Jedes Zugangstoken in der Rotationslinie greift auf dasselbe Budget zu, Rotation eines PAT verschafft dem Nachfolger also kein frisches Kontingent. Die beiden abrechnungsbezogenen Schreibvorgänge, das Speichern einer Karte und der Kauf eines Pakets, teilen sich ein engeres Limit von 60 pro Minute und Konto, noch vor dem Stripe-Aufruf, den jeder der beiden macht. Die 24-Stunden-Kaufgrenze oben wird auf dieselbe Weise gezählt, pro Konto statt pro Zugangstoken.

Mehr erfahren

Diese Seite behandelt den Lebenszyklus des Kontos: es eröffnen, finanzieren und sein Zugangstoken am Leben halten. Alles, was das Konto danach tun kann, zeigt die REST-API, einschließlich des vollständigen OpenAPI-Dokuments, oder der MCP-Server für dasselbe Konto über Tools statt über rohes HTTP.

Transkription starten – 30 Minuten zum Ausprobieren

Eine Autorisierung von 1 Dollar bestätigt Ihre Karte und wird sofort freigegeben – Sie werden nie belastet, und Ihre 30 Freiminuten werden sofort gutgeschrieben.

Starten – 30 kostenlose Minuten