Hi HeyGen Support,

Thanks for the clear guidance — we ran your three checks just now from the same production host (UTC, 2026-07-20 ~14:26–14:27).

Account / voice (unchanged)
- voice_id: fbff3892add74ba589aebfde1b13bb26 (20260511_bp_audioclone_jackie)
- Endpoint: POST https://api.heygen.com/v3/voices/speech
- No re-cloning performed

Results (all live synthesis — each returned a unique audio id, not the cached 你好 clip)

1) Brand-new pure Chinese (no Latin / no digits)
   Text: 今日清晨巴士報為各位聽眾帶來一則關於人工智能發展的最新消息請留意下文
   Result: HTTP/2 200 in ~7s
   audio id: b37a9494-7693-4846-825c-826aff2ab862
   duration: ~6.66s
   → Real synthesis succeeded.

2) Matching mixed-script (Latin + Chinese; also re-tested original hang strings)
   a) NEW mixed: HKTVmall今日公布業績並指出收入上升百分之十二
      → HTTP/2 200 in ~6s, audio id 5c9dab7f-5549-4d2b-a5b8-0ca5c5774c1e
   b) Original hang string: 測試編號42469
      → HTTP/2 200 in ~1s, audio id 3fa5b90a-7e02-42b0-8f51-1842bbff5251
   c) Original hang string: HKTVmall今日公布業績
      → HTTP/2 200 in ~2s, audio id 452481d6-552d-4c3e-a4dc-c1b2af0e100c

3) curl -v -m 120 on the above
   - TLS + connection established every time (api.heygen.com on several edge IPs: 3.130.111.33 / 16.58.150.184 / 3.128.80.185)
   - Request fully sent over HTTP/2; server responded with HTTP/2 200
   - Response headers: date, content-type: application/json, content-length, server: gunicorn
   - No request_id / x-request-id / cf-ray / trace header observed in the verbose response
   - No hangs in this window — none of the calls approached the 120s timeout

Also ran pure Chinese with Chinese numerals only (測試編號四二四六九甲乙丙丁戊己庚) → 200 in ~9s, unique audio id 64bb7c7d-351a-46a5-b107-331d1bf5e621.

Interpretation on our side
- Your mixed-script hypothesis matched our earlier failure pattern (hangs on 測試編號42469 / HKTVmall…; cache-only on 你好).
- As of this retest, both pure Chinese and mixed-script new text synthesize successfully with Jackie’s clone voice. So either the stall cleared, or it is intermittent / fleet-side rather than a permanent client-side issue on our space.
- We did not need the number→Chinese-words workaround for these runs, but we can still implement it as a safety net if you recommend it while you monitor.

Questions for engineering
1. Did anything change on the Chinese text-normalization / Starfish path around this window that would explain pure+mixed both recovering?
2. Should we still treat mixed-script as risky and pre-normalize, or is it safe to send raw news text again?
3. If hangs return: is there a request_id (or other header) we should always log so you can pull the job? Right now verbose only shows gunicorn + content-length, no request_id before success or hang.

Avatar render check (/v3/videos): deferred for now since /v3/voices/speech is healthy on pure + mixed. Happy to run it if you still want that differential.

Happy to keep testing if you have specific strings or want continuous probes. Thanks again for the fast triage path.

Bastille Post AI Host team
