version is already v3.0, VOICE_MIGRATE_NOT_NEEDED is returned (modules/voiceFactory.js:1006).VOICE_MIGRATE_NOT_ALLOWED is a parent code shared by two entirely different reasons;message and do not enter the HTTP body:| Actual reason | Internal sub-code | HTTP body code |
|---|---|---|
| Source or target version is v4.0 (cross model family) | none | VOICE_MIGRATE_NOT_ALLOWED |
| Voice has professional-cloning (LoRA) artifacts | VOICE_MIGRATE_LORA_VOICE | VOICE_MIGRATE_NOT_ALLOWED |
message, not by code.modules/voiceFactory.js:999-1001).Legacy alias: /api/tts/voice/{id}/migrateV3— 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.