data is the string itself, not an object).routes/voice/prompt.js:30-85):textAsr → return it directly;textAsr and recompute base speech rate;{ "status": 200, "data": null } is returned; this is not an error.SYSTEM_INTERNAL_ERROR.RESOURCE_NOT_FOUND (note: not VOICE_NOT_FOUND).modules/routeHelpers.js:254-280, modules/voiceFactory.js:257-270):VOICE_NOT_FOUND (the three cases are not distinguished)status = creating → 409 VOICE_CREATINGstatus = failed → 400 VOICE_CREATE_FAILEDfrom != upload (e.g. a market-purchased / community-imported voice) → 403 AUTH_FORBIDDENSYSTEM_INTERNAL_ERROR (retryable)Legacy alias: /api/tts/voice/{id}/prompt/{promptId}/stt— still supported for backward compatibility; use the primary path for new integrations.
{ status, code, message, requestId? }. code is always the parent code — sub codes only change message and never appear in the body. requestId is present only on reportable-tier errors, so use the X-Vocu-App-Request-Id response header when troubleshooting (it is written unconditionally on every response). See the "Errors" document for the full code reference.