การเปิดบัญชี Hushscript เคยต้องมีบุคคลเข้ามาเกี่ยวข้องอย่างน้อยหนึ่งครั้ง แต่
นั่นไม่ใช่เรื่องทั้งหมดอีกต่อไป ขั้นตอนที่ให้ชำระเงินก่อนทำให้เอเจนต์เปิด
บัญชีของตัวเอง เติมเงิน และใช้งานบัญชีนั้นได้ โดยไม่มีเจ้าของบัญชีที่เป็น
มนุษย์อยู่ในกระบวนการเลย /developers และ /mcp เป็นเอกสารของสองอินเทอร์เฟซ
ที่บัญชีนี้ใช้งานต่อจากนั้น ส่วนหน้านี้คือขั้นตอนทั้งหมดสำหรับการเปิดบัญชี
หนึ่งบัญชี
สมัคร
POST /v1/agent/accounts เปิดการสมัครแบบไม่มีหน้าจอ ยังไม่มีบัญชี ไม่มีคุกกี้
และไม่มีโทเคน มีเพียงการซื้อที่รอดำเนินการเท่านั้น
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 เป็นหนึ่งใน 45min, 300min, 900min, 1800min, 6000min
ห้ามส่ง amount หรือ currency เอง ทั้งสองค่านี้คำนวณจากแพ็กเกจที่ฝั่ง
เซิร์ฟเวอร์เสมอ เฉพาะแพ็กเกจสองขนาดเล็กที่สุดคือ 45min และ 300min
เท่านั้นที่ซื้อได้ตอนสมัคร pack_id ที่ใหญ่กว่าจะถูกปฏิเสธ และคำตอบปฏิเสธ
นั้นจะมี details.allowed_packs ระบุรายการแพ็กเกจที่บัญชีนี้ซื้อได้ในตอนนี้
เพื่อให้ผู้เรียกลองใหม่ได้โดยไม่ต้องเดา ขั้นที่เหลือของบันไดจะปลดล็อกตาม
อายุ ไม่ใช่ตามปริมาณ ดูบัญชีใหม่ซื้ออะไรได้บ้างด้านล่าง
accept_terms_version ต้องตรงกับเวอร์ชันนโยบายปัจจุบันของเซิร์ฟเวอร์แบบเป๊ะ
มิฉะนั้นคำขอจะล้มเหลวด้วย policy_version_stale ซึ่งระบุค่าปัจจุบันไว้ใน
เนื้อหาการตอบกลับ คำใบ้ data_region ที่เป็นตัวเลือกจะถูกยอมรับก็ต่อเมื่อ
สอดคล้องกับภูมิภาคที่ตำแหน่งเครือข่ายของคุณบ่งชี้อยู่แล้วเท่านั้น
dry_run: true ที่เป็นตัวเลือกจะตรวจสอบทุกอย่างโดยไม่มีเซสชัน Stripe และไม่มี
การเรียกเก็บเงิน signup_id ของมันจะมีคำนำหน้า dry_ และไม่สามารถเคลมได้
เลย
claim_secret จะแสดงเพียงครั้งเดียวในคำตอบนี้ Hushscript เก็บเฉพาะแฮชของมัน
เท่านั้น หากทำหายก่อนเรียกใช้การเคลม เท่ากับเสียการสมัครนั้นไปเลย ไม่มี
ช่องทางกู้คืนรหัสลับสำหรับการเคลม และเงินที่พักไว้จะถูกคืนโดยกระบวนการ
กวาดล้างที่อธิบายไว้ด้านล่าง ไม่ใช่คืนผ่านการค้นหา
ทำการชำระเงินให้เสร็จสิ้นในเบราว์เซอร์ของคุณเอง
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 วัน | แพ็กเกจที่ซื้อได้ |
|---|---|
| ยังไม่มีเลย รวมถึงบัญชีที่เพิ่งเคลม | 45min, 300min |
| อย่างน้อยมูลค่า 45 นาที | เพิ่ม 900min, 1800min |
| อย่างน้อยมูลค่า 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 แต่ละส่วนไปยัง URL ที่มีลายเซ็นล่วงหน้าของมัน จากนั้น POST ไปยัง
/complete ของงานเดียวกันพร้อม n และ etag ของทุกส่วนที่ส่งไปแบบนั้น
จากนั้น poll งานนั้น:
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 เก่าจะใช้งานไม่ได้ตั้งแต่คำขอถัดไป ที่ใช้มัน โทเคนตัวต่อไปจะคงขอบเขต สิทธิ์การเรียกเก็บเงิน ชื่อ ป้ายไคลเอนต์ และนโยบายวันหมดอายุของตัวก่อนหน้าไว้ทั้งหมด เส้นทางนี้แตะต้องแค่โทเคนของ ผู้เรียกเองเท่านั้น: มันไม่สามารถแสดงรายการ ออก หรือเพิกถอนข้อมูลรับรองอื่น ใดในบัญชีได้ นี่คือเส้นทางกู้คืนข้อมูลรับรองเพียงเส้นทางเดียวที่บัญชีของ เครื่องจักรมี ดังนั้นให้หมุนเวียนก่อนที่โทเคนเก่าจะถูกทิ้ง ไม่ใช่หลังจากนั้น
ข้อผิดพลาด
| สถานะ | รหัส | Slug | ความหมาย |
|---|---|---|---|
| 401 | 2000 | unauthorized |
ไม่มีโทเคนแบบ bearer หรือโทเคนไม่ถูกต้อง |
| 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 |
ข้อผิดพลาดทั้งสี่รายการนี้เฉพาะเจาะจงกับบัญชีของเอเจนต์ และบัญชีของบุคคล ทั่วไปจะไม่มีวันได้รับมัน:
| สถานะ | รหัส | Slug | ความหมาย |
|---|---|---|---|
| 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 |
ซื้อไป 3 ครั้ง ไม่ว่าสำเร็จหรือถูกปฏิเสธ ภายใน 24 ชั่วโมงที่ผ่านมา นับต่อบัญชีในทุกข้อมูลรับรองที่บัญชีนั้นเคยถืออยู่ ดังนั้นการหมุนเวียนจะไม่รีเซ็ตตัวนับ มีข้อมูล details.retry_after_seconds แนบมาด้วย |
เมื่อรหัสลับสำหรับเคลมถูกต้องแล้ว Checkout Session ที่ยังไม่ชำระเงินจะได้
รับ wrong_state (4001) แทนที่จะเป็น agent_claim_invalid แคตตาล็อกฉบับ
เต็มอยู่ในเอกสาร OpenAPI
ขีดจำกัด
คำขอถูกจำกัดไว้ที่ 1,200 ครั้งต่อนาที สำหรับบัญชีของเอเจนต์ โควตานี้เป็น ของบัญชี ไม่ใช่ของโทเคนแต่ละตัว: ข้อมูลรับรองทุกตัวในสายการหมุนเวียนใช้ โควตาเดียวกัน ดังนั้นการหมุนเวียน PAT จึงไม่ได้มอบโควตาใหม่ให้กับตัวต่อไป การเขียนข้อมูลการเรียกเก็บเงินสองอย่างคือการบันทึกบัตรและการซื้อแพ็กเกจ ใช้ขีดจำกัดที่เข้มกว่าคือ 60 ครั้งต่อนาทีต่อบัญชีร่วมกัน ก่อนที่จะเรียก Stripe ไม่ว่าจะเป็นฝั่งใดก็ตาม เพดานการซื้อ 24 ชั่วโมงด้านบนก็นับแบบเดียวกัน คือต่อบัญชี ไม่ใช่ต่อข้อมูลรับรอง
ดูเพิ่มเติม
หน้านี้ครอบคลุมวงจรชีวิตของบัญชี: การเปิดบัญชี การเติมเงิน และการรักษา ข้อมูลรับรองให้ใช้งานได้ สำหรับทุกสิ่งที่บัญชีทำได้หลังจากนั้น ดูที่ REST API รวมถึงเอกสาร OpenAPI ฉบับเต็ม หรือเซิร์ฟเวอร์ MCP สำหรับบัญชีเดียวกันผ่านเครื่องมือแทนที่ จะเป็น HTTP ดิบๆ