跳至主要內容

自動化使用

代理程式能夠從頭到尾開設 Hushscript 帳戶、付款、轉錄錄音,並自行復原憑證,全程無需任何人登入。

開設 Hushscript 帳戶過去至少需要一個人親自參與,如今情況不再如此。一套以付款為優先的流程,讓代理程式能自行開設帳戶、為帳戶儲值並運行帳戶,整個流程完全不需要任何人類帳戶擁有者。/developers/mcp 記載了此帳戶接下來會使用的兩種介面;本頁則說明如何取得這樣一個帳戶。

註冊

POST /v1/agent/accounts 會開啟一次無人值守的註冊。此時尚無帳戶、無 Cookie,也無權杖,只有一筆待處理的購買。

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 僅用於收據與通知,絕不作為登入方式。pack_id 必須是 45min300min900min1800min6000min 其中之一;切勿自行傳送 amountcurrency,兩者都由伺服器依套餐自動推算。註冊時只能購買兩個最小的套餐,45min300min。指定較大的 pack_id 會遭拒絕,拒絕回應會附上 details.allowed_packs,列出此帳戶目前可以購買的項目,讓呼叫端無須猜測即可重試。其餘等級則隨帳戶年齡解鎖,而非隨消費量解鎖,詳見下方的新帳戶可購買的內容accept_terms_version 必須與伺服器目前的政策版本完全一致,否則呼叫會以 policy_version_stale 失敗,並在回應內容中指出目前的版本值。選填的 data_region 提示,只有在與您網路位置已隱含的區域一致時才會被採用。選填的 dry_run: true 會驗證所有內容,但不會建立 Stripe 工作階段,也不會產生任何收費;其 signup_id 會以 dry_ 開頭,且永遠無法被認領。

claim_secret 只會在此回應中顯示一次,Hushscript 僅儲存其雜湊值。若在呼叫認領之前遺失它,就等於失去這次註冊:claim_secret 沒有任何復原途徑,而託管中的款項會由下方描述的排程掃描自動退還,而不是透過查詢取回。

在您自己的瀏覽器中完成 Checkout

checkout_url 是一個託管的 Stripe Checkout 頁面。這是整個流程中唯一需要瀏覽器的步驟,而且不必是人類使用的瀏覽器:代理程式可以用自己的自動化工具操作它(填入卡片欄位、送出、跟隨重新導向)。無論如何,Hushscript 都不會看到卡片明細,Stripe 才會。完成此步驟並接著認領的時限是 30 分鐘,也就是上方的 expires_at

已付款但從未被認領的註冊,會在該 30 分鐘時限結束後大約一小時,由每小時執行一次的排程掃描自動退款。退款是全額的,因為分鐘數只會在認領時才會計入餘額,所以未被認領的註冊從一開始就沒有任何分鐘數可以消耗。

認領帳戶

POST /v1/agent/accounts/{signup_id}/claim 會在一次呼叫中,將已付款但尚未認領的註冊轉為真正的帳戶。

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
}

認領動作只能使用一次。它會建立恰好一個帳戶,背後對應一個合成且無法反查的登入身分,即使請求被重試,也只會授予一次已付款的套餐,並且只會產生一個 PAT:也就是上方的 pat 值,同樣只會顯示一次。

無論是密鑰錯誤、signup_id 不存在、註冊已被認領、已退款,或已過期,都會回傳同一個 agent_claim_invalid 錯誤。呼叫端無法從回應內容分辨究竟是哪一種情況,這是刻意的設計。只有在密鑰本身驗證通過之後,付款狀態才會被納入考量:尚未結算的 Checkout Session 會改為回傳 wrong_state

上方的 balance_seconds 就是全部的起始餘額。代理程式帳戶不會像一般人的首個帳戶那樣獲得歡迎獎勵,也不會因卡片驗證而取得免費分鐘數;帳戶一開始只有已付款的那個套餐,別無其他。這是刻意的設計,而不是缺漏:這個帳戶在存在之前就已經付過款了。

購買更多分鐘數

從這裡開始,這個帳戶的運作方式就與其他帳戶完全相同,走的是同一組 /v1/ 介面,/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
}

這需要 billing 範圍,上方的認領回應已經授予了這項權限;此路由與儲存卡片的路由共用每個帳戶每分鐘 60 次請求的較嚴格限制,在各自呼叫 Stripe 之前就先受此限制。

新帳戶可購買的內容

套餐大小的解鎖依據是已結算款項的存續時間,而不是帳戶花費的金額。一筆購買要等到超過其付款日期 7 天 之後,才會計入下一個等級,因此全新的帳戶無法靠快速購買就達到較大的套餐。

超過 7 天的已結算款項 可購買的套餐
尚無任何款項,包括剛完成的認領 45min300min
至少 45 分鐘的金額 新增 900min1800min
至少 15 小時的金額 新增 6000min

遭拒絕的購買會在 details.allowed_packs 中列出目前允許的組合,而不是毫無說明地失敗。註冊呼叫套用的是這張表的第一列,這也是為什麼上方的示範購買的是 300min 而不是更大的套餐。與等級制度分開的是,一個滾動 24 小時的消耗上限,限制了尚未超過爭議期限的餘額能被花費的速度。

轉錄

上傳與轉錄的流程,與其他任何帳戶所使用的分段(multipart)流程完全相同。

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

PUT 將每個分段上傳至各自的預先簽署網址,再以 POST 呼叫同一工作的 /complete,並附上以此方式送出的每個分段的 netag。接著輪詢該工作:

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 外洩或只是單純需要更換時,並不存在「忘記密碼」這條路徑。輪替就是這條路徑。

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
}

此呼叫不需要任何請求主體。它會以原子方式產生一個後繼權杖,並撤銷用來驗證此次請求的權杖,因此舊的 PAT 會在下一次呼叫時立即失效。後繼權杖會保留前一個權杖的範圍、購買權限、名稱、用戶端標籤與到期政策。此路由只會影響呼叫端自己的權杖:無法列出、產生或撤銷帳戶上的任何其他權杖。這是機器帳戶唯一的憑證復原途徑,因此請在捨棄舊權杖之前先完成輪替,而不是之後。

錯誤

狀態碼 代碼 代稱 意義
401 2000 unauthorized 缺少或無效的持有者權杖
403 2023 pat_scope_missing 權杖缺少此呼叫所需的範圍,或帳戶已關閉購買功能
403 4021 pat_purchase_requires_app 未指定已儲存的卡片,或扣款遭拒;未產生任何收費
403 4023 pat_purchase_requires_authentication 發卡機構要求呼叫端無法完成的驗證挑戰;卡片本身沒有問題
402 3001 insufficient_balance 餘額不足以受理此工作
429 5000 rate_limited 請求過多;請依 Retry-After 等待

以下四項僅適用於代理程式帳戶,人類帳戶絕不會遇到:

狀態碼 代碼 代稱 意義
409 4035 agent_signup_pending 這個 contact_email 已有一筆尚未結束的註冊。請等待它被認領、退款或過期,或改用其他電子郵件地址
401 4036 agent_claim_invalid 密鑰錯誤、註冊不存在、已被認領、已退款,或已過期。刻意設計為完全相同
403 4037 agent_pack_locked 此帳戶目前的等級尚不允許購買該套餐。回應會附上 details.allowed_packs;請改用其中一個套餐重試
429 4038 agent_purchase_capped 在過去 24 小時內已有 3 次購買,無論成功或遭拒。此計數以帳戶為單位,涵蓋帳戶持有過的每一個權杖,因此輪替權杖不會重設計數。回應會附上 details.retry_after_seconds

一旦密鑰本身驗證通過,尚未付款的 Checkout Session 會回傳 wrong_state(4001),而不是 agent_claim_invalid。完整目錄請見 OpenAPI 文件

限制

呼叫次數限制為每分鐘 1,200 次。對代理程式帳戶而言,這個額度屬於整個帳戶,而不是個別的權杖:輪替譜系中的每一個權杖都共用同一份額度,因此輪替 PAT 並不會為後繼權杖帶來全新的額度。兩項與購買相關的寫入操作,也就是儲存卡片與購買套餐,共用每個帳戶每分鐘 60 次的較嚴格限制,在各自呼叫 Stripe 之前就先受此限制。上方提到的 24 小時購買上限,同樣是以帳戶為單位計算,而不是以權杖為單位。

深入了解

本頁涵蓋的是帳戶的生命週期:開設帳戶、為帳戶儲值,以及維持其權杖的有效性。至於這個帳戶接下來能做的所有事情,請見 REST API(包含完整的 OpenAPI 文件),或改用 MCP 伺服器,以工具而非原始 HTTP 的方式操作同一個帳戶。

開始轉錄––30 分鐘試用

$1 暫授權用於確認您的卡片,並會立即釋放——絕不收費,您的 30 分鐘免費時數也會立刻到帳。

開始––30 分鐘免費