API: GET /v1/voices returns an object envelope

GET /v1/voices now returns an object envelope instead of a bare JSON array, so the list can carry pagination and future sibling fields without another breaking change.

Before (pin 2026-06-26 or earlier): a bare array of voice objects.

After (2026-06-27+):

1{
2 "voices": [ { "id": "george", "display_name": "George", "...": "..." } ],
3 "next_cursor": null,
4 "has_more": false
5}

By default the full catalogue is returned in a single response (next_cursor is null). Pagination is opt-in: pass limit (and then cursor from the previous response) to page through the list while has_more is true.

Migrating

Read the array from the voices field instead of treating the response body as the array. Callers that pin a Speechify-Version date of 2026-06-26 or earlier continue to receive the legacy bare array; the official SDKs pin their build date automatically.