API: cross-resource field-naming sweep
API: cross-resource field-naming sweep
Several same-concept-different-name fields are renamed to one consistent spelling and type across the voice-agents wire. Every change is served in its pre-2026-06-28 shape to a caller that pins an earlier Speechify-Version; the official SDKs pin their build date automatically.
Voice gender notSpecified → not_specified
GET /v1/agents/voices uses not_specified for the unspecified gender (the male/female values are unchanged).
Batch recipient dynamic_vars → dynamic_variables
The per-recipient dynamic_vars field on POST /v1/agents/batch-calls and GET /v1/agents/batch-calls/{batch_call_id} is renamed dynamic_variables, matching the outbound-call and web-session surfaces. Request values may now be any JSON type (not strings only). CSV uploads still carry string values.
- Migrate: send/read
dynamic_variablesinstead ofdynamic_vars.
LLMModelInfo.class integer → string enum
GET /v1/agents/llm-models returns class as a snake_case string enum (managed/standard/premium) instead of an integer.
- Before (pin
2026-06-27or earlier):classis an integer (0/1/2). - After (
2026-06-28+):classis"managed"/"standard"/"premium". - Migrate: read
classas a string; map0→managed,1→standard,2→premium.
KB search top_k → limit
The POST /v1/agents/knowledge-bases/search request field top_k is renamed limit (top_k is reserved for LLM sampling).
- Migrate: send
limitinstead oftop_k.
Caller.identity → caller_identity
The identity field on the Caller resource (GET /v1/agents/callers, GET /v1/agents/callers/{caller_id}, PATCH /v1/agents/callers/{caller_id}) is renamed caller_identity, matching every other surface that carries the caller key.
- Migrate: read
caller_identityinstead ofidentityon the Caller.