- style: use string interpolation in JsonException messages
- Replace string concatenation with double-quoted string interpolation
- in error messages thrown by JsonDecoder, JsonDeserializer, and
- JsonSerializer. The resulting messages are identical at runtime.
- Key changes:
- Replace
"..." . $jsonwith"...$json"in JsonDecoder error messages - Replace
"..." . $typewith"...$type"in JsonDeserializer error message - Replace
"..." . $unionTypewith"...$unionType"in JsonSerializer error message - 🌿 Generated with Fern
- Several public classes have been removed in this release. The following types no longer exist and must be migrated:
UpdateAssistantDtoVoicemailDetectionandAssistantOverridesVoicemailDetection— removed voicemail detection union type classes; consult the updated API types for replacements.CallControllerFindAllPaginatedRequestandCallControllerFindAllPaginatedRequestSortOrder— removed call-listing request class and sort-order enum; update call-listing code to use the new request type.SessionsListRequest— removed session-listing request class; update session-listing code to use the new request type.RetryMiddleware— removed internal retry middleware class; avoid direct references to this class.- Several public types have been removed in this release:
AssistantVoicemailDetection,CreateAssistantDtoVoicemailDetection,CreateWorkflowDtoVoicemailDetection, andUpdateWorkflowDtoVoicemailDetectionhave been deleted. Replace usages with the consolidated shared voicemail detection plan types (GoogleVoicemailDetectionPlan,OpenAiVoicemailDetectionPlan,TwilioVoicemailDetectionPlan, orVapiVoicemailDetectionPlan) directly.UpdateSupabaseCredentialDtohas been removed. Update any code that instantiated or type-hinted this class.- The
speakerLabelproperty has been removed fromBotMessage. Remove any access to$botMessage->speakerLabelin consuming code. - The
WorkflowVoicemailDetectionandWorkflowUserEditableVoicemailDetectionclasses have been removed. Additionally,AssistantsListRequesthas been renamed toListAssistantsRequest— update any references accordingly. SeveralAssistantsClientmethods (list,create,get,delete,update) andAnalyticsClient::get()now return nullable types (?Assistant,?array, etc.) instead of non-nullable types; callers should add null checks where needed. - Breaking changes in this release:
CallsListRequesthas been renamed toListCallsRequest. Update all usages accordingly.- The
callControllerFindAllPaginated()method has been removed fromCallsClient. Uselist()instead. - Return types for
CallsClientmethods (list,create,get,delete,update) and allCampaignsClientmethods are now nullable (e.g.?Callinstead ofCall). Callers must handlenullresponses. - The
voicemailDetectionfield onUpdateAssistantDtonow accepts a union of provider-specific plan objects (GoogleVoicemailDetectionPlan,OpenAiVoicemailDetectionPlan,TwilioVoicemailDetectionPlan,VapiVoicemailDetectionPlan) instead ofUpdateAssistantDtoVoicemailDetection. New features: SessionCreatedHookis now supported in thehooksarray onUpdateAssistantDto.monitorPlannow supports attaching monitors viamonitorPlan.monitorIds.- The SDK now supports squad-based campaigns via a new
squadIdfield onCreateCampaignDtoandUpdateCampaignDto, and introducesdialPlan(a list ofDialPlanEntryobjects) as an alternative tophoneNumberIdfor routing calls to different customer sets per phone number. TheChatsListRequestclass has been renamed toListChatsRequestand gains new filter fields (id,assistantIdAny,previousChatId) while removingworkflowId. Methods onChatsClient(list,get,delete,create,createResponse) now return nullable types to handle empty API responses. The underlying HTTP client has been migrated from Guzzle to PSR-18-compatible interfaces, enabling use of any PSR-18 HTTP client implementation. - All
EvalClientandFilesClientmethods now return nullable types (e.g.,?Eval_,?File,?EvalPaginatedResponse) to gracefully handle empty API responses instead of throwing a deserialization error. DateTime filter parameters are now correctly serialized before being sent as query parameters. The HTTP client dependency has been updated to use the PSR-18 standard interface, improving compatibility with non-Guzzle HTTP client implementations. - Several
PhoneNumberspublic classes have been renamed for consistency. The old names (PhoneNumbersListRequest,PhoneNumbersListResponseItem,PhoneNumbersCreateRequest,PhoneNumbersCreateResponse,PhoneNumbersGetResponse,PhoneNumbersDeleteResponse,PhoneNumbersUpdateRequest,PhoneNumbersUpdateResponse) must be replaced with their new equivalents (e.g.,ListPhoneNumbersRequest,CreatePhoneNumbersRequest,GetPhoneNumbersResponse,DeletePhoneNumbersResponse,UpdatePhoneNumbersRequest,UpdatePhoneNumbersResponse). AllPhoneNumbersClientmethods (list,create,get,delete,update,phoneNumberControllerFindAllPaginated) now return nullable types — callers must handlenullwhen the response body is empty. - Several public classes have been renamed in this release.
PhoneNumbersUpdateRequestis nowUpdatePhoneNumbersRequestBody,PhoneNumbersDeleteResponseis nowUpdatePhoneNumbersResponse,SessionsListRequestis nowListSessionsRequest, andSquadsListRequestis nowListSquadsRequest. AllProviderResourcesClientandSessionsClientmethods (list,create,get,delete,update) now return nullable types — callers must add null checks to handle empty responses. TheListSessionsRequestobject also gains new optional filter fields:id,assistantIdAny,numberE164CheckEnabled,extension,assistantOverrides,number,sipUri,email,externalId,customerNumberAny,phoneNumberId, andphoneNumberIdAny. - Several breaking changes have been introduced in this release:
- The
list,create,get,delete, andupdatemethods onSquadsClient, and all equivalent methods onStructuredOutputsClient, now return nullable types (e.g.?Squad,?StructuredOutput). Callers that previously assumed a non-null return value must now add null checks. ToolsListRequesthas been renamed toListToolsRequest, andSquadsListRequesthas been renamed toListSquadsRequest. Update any instantiation or type hints accordingly.- The HTTP client dependency has been migrated from
GuzzleHttp\ClientInterfacetoPsr\Http\Client\ClientInterface; any custom client injection must now implement PSR-18. - New capabilities in this release include a
structuredOutputControllerRun()method onStructuredOutputsClientfor on-demand structured output execution, new optionaltype,regex, andcompliancePlanfields onUpdateStructuredOutputDto, and Anthropic Bedrock model support (anthropic-bedrock) inUpdateStructuredOutputDtoModel. - Several Tools API types have been renamed to follow a consistent convention:
ToolsCreateRequest→CreateToolsRequest,ToolsListRequest→ListToolsRequest,ToolsGetResponse→GetToolsResponse,ToolsDeleteResponse→DeleteToolsResponse,ToolsUpdateRequest→UpdateToolsRequest, andToolsUpdateResponse→UpdateToolsResponse. AllToolsClientmethods (list,create,get,delete,update) now return nullable types. Two new tool variants —sipRequestandvoicemail— are now supported inCreateToolsRequest. - The
ToolsCreateResponseclass has been renamed toCreateToolsResponse. Callers must update any references toToolsCreateResponseto useCreateToolsResponseinstead. Additionally, the tools create response union now supports three new tool variants:CodeTool,SipRequestTool, andVoicemailTool, accessible via the newcode(),sipRequest(), andvoicemail()factory methods and their correspondingisCode()/asCode(),isSipRequest()/asSipRequest(), andisVoicemail()/asVoicemail()accessors. - The
ToolsDeleteResponseclass has been renamed toDeleteToolsResponsein theVapi\Tools\Typesnamespace. Consumers must update all references to use the new class name. Additionally, the response union type now supports three new tool variants:CodeTool,SipRequestTool, andVoicemailTool, each with corresponding factory methods and type-check helpers. - The
ToolsUpdateResponseclass has been renamed toGetToolsResponse. Consumers referencingToolsUpdateResponseby name must update their code to useGetToolsResponseinstead. Three new tool variants —CodeTool,SipRequestTool, andVoicemailTool— are now supported in theGetToolsResponseunion type, with corresponding factory methods (code(),sipRequest(),voicemail()) and type-check/cast helpers. - The
ToolsListResponseItemclass has been renamed toListToolsResponseItem, andToolsUpdateRequesthas been renamed toUpdateToolsRequestBody. Consumers must update any references to these class names. Both union types now also support three new tool variants:code,sipRequest, andvoicemail, with corresponding factory methods and type-safe accessors. - The
ToolsGetResponseclass has been renamed toUpdateToolsResponse. Update any references toToolsGetResponsein your code to useUpdateToolsResponseinstead. ThevoicemailDetectionproperty onAssistantandAssistantOverridesnow accepts a richer union type (GoogleVoicemailDetectionPlan,OpenAiVoicemailDetectionPlan,TwilioVoicemailDetectionPlan,VapiVoicemailDetectionPlan, or a string) instead of the previous single-type values. New tool types (CodeTool,SipRequestTool,VoicemailTool) are now supported in the tools union,SessionCreatedHookis available in hooks arrays, andAssemblyAiTranscribergains optionalvadAssistedEndpointingEnabledandspeechModelfields. - The SDK introduces several new capabilities:
- Campaigns now support a
squadIdfield and adialPlan(list of dial entries with per-number customer sets);phoneNumberIdandcustomersare now optional to accommodate the new dial plan flow. - Client messages gain two new types:
ClientMessageAssistantStartedandClientMessageAssistantSpeech.ClientMessageModelOutputandClientMessageUserInterruptednow include an optionalturnIdfor correlating LLM response tokens and interruptions. CreateAssistantDtovoicemail detection has been expanded to support multiple providers (Google, OpenAI, Twilio, Vapi) and the hooks array now acceptsSessionCreatedHook.CreateWebChatDtonow accepts either anassistantIdor an inline transientassistantobject, and supports a newsessionExpirationSecondsfield.CreateStructuredOutputDtogainstype(ai/regex),regex, andcompliancePlanfields;CreateStructuredOutputDtoModelnow supports theanthropic-bedrockprovider.- A new
CreateSonioxCredentialDtoclass is available for Soniox credential management. - Several breaking changes have been introduced in this release:
- The
Evalclass has been renamed toEval_(file renamed fromEval.phptoEval_.php). Update any references to use the new class name. - The
FallbackSpeechmaticsTranscriberclass has removed themaxSpeakers,enablePartials,enableEntities,enablePunctuation, andenableCapitalizationfields. Remove any usage of these fields from your code. - The
EvalAnthropicModelandEvalGroqModelclasses now require amessagesfield, andEvalRunnow requirescostandcostsfields — existing construction of these objects without these fields will fail. - New optional fields have also been added across multiple types:
profanityFilteronDeepgramTranscriber, VAD configuration fields onElevenLabsTranscriberandFallbackElevenLabsTranscriber,encryptionPlanonCustomCredential,vadAssistedEndpointingEnabledandspeechModelonFallbackAssemblyAiTranscriber,temperatureandspeakingRateonFallbackInworldVoice, andsubtitleTypeonFallbackMinimaxVoice. - Several breaking changes and new features are included in this release. Breaking changes:
StructuredOutputsFilterValuehas been renamed toStructuredOutputFilterDto. Update all references accordingly.UpdateTavusCredentialDtohas been renamed toUpdateSonioxCredentialDto;UpdateSmallestAiCredentialDtohas been renamed toUpdateWellSaidCredentialDto.TwilioVoicemailDetectionPlanandVapiVoicemailDetectionPlanconstructors now require aproviderfield; callers usingarray $values = []must passprovider.ToolCallHookActionconstructor now requires atypefield.- Five fields (
maxSpeakers,enablePartials,enableEntities,enablePunctuation,enableCapitalization) have been removed fromSpeechmaticsTranscriber. - The
voicemailDetectionproperty onWorkflow,WorkflowUserEditable, andUpdateWorkflowDtois now a discriminated union of concrete plan types instead of a single wrapper type. New features: - Two new sub-clients,
InsightClientandObservabilityScorecardClient, are now available as$client->insightand$client->observabilityScorecard. StructuredOutputnow supports atypefield ('ai'or'regex') and aregexfield for pattern-based extraction, as well as acompliancePlanfield.StructuredOutputModelnow supports theanthropic-bedrockprovider viaStructuredOutputModel::anthropicBedrock().- Workflow hooks arrays now accept
CallHookModelResponseTimeoutentries. - The SDK's HTTP layer has been migrated from a hard dependency on
guzzlehttp/guzzleto PSR-18/PSR-17 interfaces resolved at runtime viaphp-http/discovery. Any PSR-18-compatible client (Guzzle, Symfony HTTP Client, etc.) can now be used. TheChatsListRequestSortOrderenum has been renamed toListChatsRequestSortOrder; update any references accordingly. Multipart form-data uploads are now supported via the newMultipartApiRequest,MultipartFormData, andMultipartFormDataPartclasses, and the retry logic now honoursRetry-AfterandX-RateLimit-Resetresponse headers. - The
SessionsListRequestSortOrderenum has been renamed toListSessionsRequestSortOrder. Update any references to this enum in your code to use the new name. - The
AzureCredentialRegionandAzureOpenAiCredentialRegionenums have had theAustraliacase renamed toAustraliaeast; update any references accordingly. Several new region cases have been added (Centralus,Germanywestcentral,Polandcentral,Spaincentral,Westeurope). - Additional improvements include new
AssistantStartedandAssistantSpeechStartedserver message enum cases, correct UTC datetime serialization usingZsuffix, accurate bool serialization/deserialization, and support for serializing explicitly-set null properties via a new_setField()helper on model classes. - The
CartesiaExperimentalControlsSpeedenum has been renamed toCartesiaExperimentalControlsSpeedZero. Update any references to this enum in your code. Additionally, thedoproperty ofCallHookCallEndingnow usesCallHookCallEndingDoIteminstead ofToolCallHookAction. The SDK also expandsCallEndedReasonwith ~60 new error/status cases (Vapi/WellSaid voice failures, Baseten/Minimax LLM errors, Soniox transcriber errors, and new SIP call failure codes), andCartesiaVoiceLanguagewith 27 new language codes. - The SDK now supports additional Azure regions (
australiaeast,centralus,germanywestcentral,polandcentral,spaincentral,westeurope) inCreateAzureCredentialDtoRegionandCreateAzureOpenAiCredentialDtoRegion. Two new server message types (assistant.started,assistant.speechStarted) are available inCreateAssistantDtoServerMessagesItem, andChatEvalToolResponseMessageEvaluationis now a valid message type inCreateEvalDto. - The SDK now includes expanded OpenAI GPT-5.x model enum cases (
gpt-5.4,gpt-5.4-mini,gpt-5.4-nano,gpt-5.2,gpt-5.1, and more) inEvalOpenAiModelModel, along with new regional deployment cases for GPT-4.1, GPT-4.1-mini, and GPT-4o (westeurope, germanywestcentral, polandcentral, spaincentral).FallbackCartesiaVoiceLanguagenow supports 25+ additional languages (Arabic, Bulgarian, Bengali, Czech, Danish, etc.). TheFallbackAzureVoiceVoiceIdenum has been renamed toFallbackAzureVoiceVoiceIdZero— update any direct references to this enum in your code. Several RimeAI voice IDs have been removed and replaced with new ones; review usages ofFallbackRimeAiVoiceIdEnumand update to the new available cases. - The
RimeAiVoiceIdEnumenum has been updated with a new set of voice IDs that reflect the current Rime AI voice catalogue. Many previously available cases (e.g.Abbie,Allison,Ally,Bayou,Brook, etc.) have been removed and replaced with new ones. Update any code that references removed voice ID cases to use the new equivalents. - Additionally, the
Gpt41106PreviewAustraliacase inOpenAiModelModelandOpenAiModelFallbackModelsItemhas been renamed toGpt41106PreviewAustraliaeast(value changed from"gpt-4-1106-preview:australia"to"gpt-4-1106-preview:australiaeast"). New GPT-5.x model variants and additional European regional deployment options have also been added to both enums. - The
ServerMessageEndOfCallReportEndedReasonenum has been expanded with over 40 new cases covering additional voice providers (Vapi, WellSaid), transcribers (ElevenLabs, Google, OpenAI, Soniox), LLM providers (Baseten, Minimax), SIP connection error scenarios, and new call-state transitions such asCustomerEndedCallDuringTransfer. Several previously available enum cases (CallInProgressErrorWarmTransferHangTimeout,CallInProgressErrorWarmTransferIdleTimeout,CallRingingErrorSipInboundCallFailedToConnect) have been removed or repositioned — consumers matching against these specific values should update their code accordingly. - The
ServerMessageStatusUpdateEndedReasonenum has been expanded with new cases covering additional voice providers (Vapi, WellSaid), transcriber failures (ElevenLabs, Google, OpenAI, Soniox), LLM provider errors (Baseten, Minimax), SIP call connection errors, and new call lifecycle events such asCustomerEndedCallDuringTransfer. PHPDoc type annotations across numerous request/response types have been updated to reference typed enum constants instead of hardcoded string literals. - The
Australiaenum case inUpdateAzureCredentialDtoRegionandUpdateAzureOpenAiCredentialDtoRegionhas been renamed toAustraliaeast(value changed from"australia"to"australiaeast"). Similarly, theGpt41106PreviewAustraliacase inWorkflowOpenAiModelModelhas been renamed toGpt41106PreviewAustraliaeast. Any code referencing these enum cases by name must be updated. - The SDK also adds several new GPT-5 model variants (
gpt-5.4,gpt-5.4-mini,gpt-5.4-nano,gpt-5.2,gpt-5.1, and their chat-latest aliases) and new Azure-hosted regional endpoints for GPT-4 models (westeurope, germanywestcentral, polandcentral, spaincentral), along with new Azure credential regions (centralus, germanywestcentral, polandcentral, spaincentral, westeurope). - The SDK now supports additional credential providers (
anthropic-bedrock,soniox,wellsaid,email,slack-webhook), LLM models (AnthropicBedrockModel,MinimaxLlmModel), voice provider (WellSaidVoice), and transcriber (SonioxTranscriber) on the assistant update DTOs. Two new client message enum cases (AssistantSpeechStarted,AssistantStarted) and a newUpdateAssistantDtoVoicemailDetectionZeroenum have also been added. - The SDK now includes a new
InsightClientfor managing and running reporting insights via thereporting/insightAPI endpoints (list, create, find, update, delete, run, and preview). HTTP requests now benefit from automatic retry logic with exponential backoff, jitter, and support forRetry-AfterandX-RateLimit-Resetresponse headers. A new optionalsquadOverridesfield has been added toCreateCallDtoto allow overriding settings for all members of a squad. - The SDK now includes types for the Insight API, enabling creation, preview, and retrieval of bar, pie, line, and text insights. New classes include
InsightControllerCreateRequest,InsightControllerCreateResponse,InsightControllerFindOneResponse,InsightControllerPreviewRequest, and theInsightControllerFindAllRequestSortOrderenum. - New
ObservabilityScorecardClientis now available, providing methods to create, retrieve, update, delete, and paginate scorecards (scorecardControllerCreate,scorecardControllerGet,scorecardControllerRemove,scorecardControllerUpdate,scorecardControllerGetPaginated). Three new Insight union-type classes have also been added:InsightControllerRemoveResponse,InsightControllerUpdateRequestBody, andInsightControllerUpdateResponse, each supporting bar, pie, line, and text insight variants. - The SDK now includes new request classes for paginating and updating scorecards (
ScorecardControllerGetPaginatedRequest,UpdateScorecardDto), listing sessions with rich filtering (ListSessionsRequest), running structured outputs (StructuredOutputRunDto), and updating phone numbers and tools (UpdatePhoneNumbersRequest,UpdateToolsRequest).CreateSessionDtogains two new optional fields:assistantOverridesandcustomerId. Cost tracking types (AnalysisCost,AnalysisCostBreakdown) now expose optionalcachedPromptTokensfields, andAnalyticsOperationColumnincludes a newCostBreakdownLlmCachedPromptTokenscase for analytics queries. - The SDK now supports Anthropic Claude models via AWS Bedrock. New
AnthropicBedrockCredentialandAnthropicBedrockModeltypes are available, enabling configuration of Claude 3, 3.5, 3.7, and 4 model variants through the AWS Bedrock service with IAM or STS-based authentication. - The SDK now includes a new
AnthropicBedrockModelToolsItemunion type that supports all 23 tool variants (including GoHighLevel, Google Calendar/Sheets, MCP, Slack, SIP, and voicemail tools) for use with Anthropic Bedrock models. Three additional Claude model enum cases have been added toAnthropicModelModel:ClaudeOpus4520251101,ClaudeOpus46, andClaudeSonnet46. A newAnthropicCredentialProviderenum is also now available. - The SDK now supports three new tool types —
code,sipRequest, andvoicemail— across all model tool union types, with full factory and accessor methods.ArtifactPlanaccepts inlinestructuredOutputs,scorecardIds, andscorecardsfor in-call scorecard evaluation. TheArtifacttype now exposesassistantActivations,scorecards, andstructuredOutputsLastUpdatedAtfields, and a newAssistantActivationclass tracks which assistants were active during a call. - The SDK now supports additional credential providers: Anthropic Bedrock, Soniox, WellSaid, Email, and Slack Webhook — available via new factory and accessor methods on
AssistantCredentialsItemandAssistantOverridesCredentialsItem. New AI model variantsanthropic-bedrockandminimaxare also supported onAssistantModel. Additionally,AssistantMessageJudgePlanAigains a new requiredtypefield and an optionalautoIncludeMessageHistoryfield, and new enum casesAssistantSpeechStartedandAssistantStartedhave been added toAssistantOverridesClientMessagesItem. - The SDK now supports additional LLM providers (
anthropic-bedrockandminimax) in assistant model configuration, a newsonioxtranscription provider, and awellsaidvoice provider. New tool types (code,sipRequest,voicemail) are available in assistant tool override configurations. New types for speech word timing (AssistantSpeechWordAlignmentTiming,AssistantSpeechWordProgressTiming,AssistantSpeechWordTimestamp) and AWS STS authentication (AwsStsAssumeRoleUser,AwsStsAuthenticationArtifact,AwsStsAuthenticationPlan) have also been added. - The SDK now includes new AWS STS authentication types (
AwsStsAuthenticationSession,AwsStsCredentials,AwsiamCredentialsAuthenticationPlan) and provider enums (AzureCredentialProvider,AzureOpenAiCredentialProvider,ByoSipTrunkCredentialProvider). NewBarInsightand related analytics types are available for creating bar chart insights. Call hook actions now support amessage.addvariant viaMessageAddHookAction, and a newCallHookCallEndingDoItemtype enables actions on call-ending hooks. TheCalltype gains optionalendedMessageandsquadOverridesfields, andCallBatchResponsegains an optionalsubscriptionLimitsfield. - The SDK now supports new call hook types including
CallHookModelResponseTimeoutandCallHookTranscriberEndpointedSpeechLowConfidence, as well as amessage.addaction variant on existing hook do-item types. Cartesia voice configuration gains optionalgenerationConfigandpronunciationDictIdfields, plus new sonic-3 model variants.CerebrasModelToolsItemnow supportscode,sipRequest, andvoicemailtool types.