Skip to content

Latest commit

 

History

History
95 lines (91 loc) · 24.8 KB

File metadata and controls

95 lines (91 loc) · 24.8 KB

1.1.1 - 2026-05-20

  • chore: remove explicit ContentType from internal POST request builders
  • Remove the redundant ContentType = "application/json" property from
  • internal request configuration objects across multiple clients. The HTTP
  • client already sets this header by default when a body is present, so
  • the explicit assignment was unnecessary.
  • Key changes:
  • Remove ContentType = "application/json" from AssistantsClient POST request
  • Remove ContentType = "application/json" from EvalClient POST request
  • Remove ContentType = "application/json" from InsightClient POST requests (two endpoints)
  • Remove ContentType = "application/json" from ObservabilityScorecardClient POST request
  • Remove ContentType = "application/json" from PhoneNumbersClient POST request
  • Remove ContentType = "application/json" from SquadsClient, StructuredOutputsClient, and ToolsClient POST requests
  • 🌿 Generated with Fern

1.1.0 - 2026-04-22

Added

  • Call.SubscriptionLimits — new optional property that exposes the org's subscription and concurrency limit information at the time of the call.

1.0.1 - 2026-04-10

  • fix: improve RFC 3986 compliant percent-encoding for query strings and path segments
  • Update QueryStringBuilder to properly distinguish between three encoding
  • contexts — query keys, query values, and path segments — per RFC 3986.
  • Previously, only unreserved characters (A-Z, a-z, 0-9, -, _, ., ~)
  • were left unencoded, causing over-encoding of characters that are safe in
  • query strings and path segments (e.g., @, :, ?, = in values, etc.).
  • Path parameter strings in ValueConvert.ToPathParameterString now use the
  • new EncodePathSegment method instead of plain string passthrough, ensuring
  • path segments are correctly encoded per RFC 3986 pchar rules.
  • Key changes:
  • Add EncodePathSegment() public method on QueryStringBuilder for RFC 3986 pchar-safe encoding
  • Introduce EncodingContext enum (QueryKey, QueryValue, Path) to differentiate encoding rules
  • Query values now allow =, :, @, /, ?, and sub-delimiters (except &, +, #) unencoded
  • Query keys allow the same set minus =; path segments allow unreserved + sub-delims + : + @
  • ValueConvert.ToPathParameterString(string) now encodes path segments via EncodePathSegment
  • Expand test coverage with new cases for path segment encoding, OData-style keys, and +/= handling
  • 🌿 Generated with Fern

1.0.0 - 2026-04-07

  • The CallControllerFindAllPaginatedRequest request class and the associated CallControllerFindAllPaginatedRequestSortOrder enum have been removed from the SDK. If your code references either of these types, you will need to update it accordingly. Please refer to the latest API documentation for the replacement request model.
  • The following public types have been removed: GenerateStructuredOutputSuggestionsDto, UpdateSupabaseCredentialDto, and the CreateVoicemailToolDtoType enum. Additionally, AnalyticsClient.GetAsync now returns WithRawResponseTask<IEnumerable<AnalyticsQueryResult>> instead of Task<IEnumerable<AnalyticsQueryResult>>; callers must update to await .Data or use the .WithRawResponse() accessor. The AnalyticsClient now implements IAnalyticsClient.
  • The AssistantsClient methods (ListAsync, CreateAsync, GetAsync, DeleteAsync, UpdateAsync) now return WithRawResponseTask<T> instead of Task<T>. Callers must update their code to await the result and access the data via .Data, or use .RawResponse to inspect the underlying HTTP response metadata (status code, URL, headers).
  • A new AssistantSpeechStarted value has been added to the UpdateAssistantDtoClientMessagesItem enum.
  • All CallsClient methods (ListAsync, CreateAsync, GetAsync, DeleteAsync, UpdateAsync) now return WithRawResponseTask<T> instead of Task<T>, providing access to raw HTTP response metadata (status code, headers, URL) alongside deserialized data. Migration: Await the returned WithRawResponseTask<T> and access .Data for the previously returned value, or use the implicit awaiter to get T directly. The CallControllerFindAllPaginatedAsync method has been removed from CallsClient. A new AssistantSpeechStarted value is available on the UpdateAssistantDtoServerMessagesItem enum.
  • All CampaignsClient methods now return WithRawResponseTask<T> instead of Task<T>, giving consumers access to the raw HTTP response (status code, URL, and headers) in addition to the deserialized data. Callers that simply await these methods will continue to work, but any code that stores or passes the Task<T> return value directly will need to be updated to use WithRawResponseTask<T>.
  • CreateCampaignDto.PhoneNumberId is now nullable (string?, previously required string) and Customers is now IEnumerable<CreateCustomerDto>? (previously a non-nullable collection with a default value). New optional SquadId and DialPlan properties are available on both CreateCampaignDto and UpdateCampaignDto to support squad-based and multi-number dial-plan campaigns.
  • All ChatsClient async methods (ListAsync, CreateAsync, GetAsync, DeleteAsync, CreateResponseAsync) now return WithRawResponseTask<T> instead of Task<T>, providing access to raw HTTP response metadata (status code, URL, and headers) via the .RawResponse property alongside the deserialized .Data. Existing callers must be updated to await the task and access .Data for the result. ListChatsRequest also gains two new optional filter properties: Id and AssistantIdAny.
  • The SDK now supports improved JSON serialization for Optional<T> and nullable fields, and HTTP retries now respect Retry-After and X-RateLimit-Reset response headers with jitter-based backoff. VapiClientApiException now accepts an optional innerException parameter for better error chaining.
  • All EvalClient async methods now return WithRawResponseTask<T> instead of Task<T>, giving consumers access to both the deserialized response (.Data) and the raw HTTP response (.RawResponse, including status code, URL, and headers). Existing code that directly awaits these methods as Task<T> must be updated to use .Result (or await via the WithRawResponseTask<T> API) to retrieve the deserialized value. Additionally, EvalClient now implements the IEvalClient interface.
  • The ListAsync, CreateAsync, GetAsync, DeleteAsync, and UpdateAsync methods on FilesClient now return WithRawResponseTask<T> instead of Task<T>. Callers can still await the result directly to get the deserialized data, but any code that stores or passes the return value as a Task<T> must be updated to use WithRawResponseTask<T> (or call .AsTask() if available). These methods also now expose the raw HTTP response — status code, URL, and headers — via the .RawResponse property on the awaited result.
  • All InsightClient methods now return WithRawResponseTask<T> instead of Task<T>, allowing consumers to access the raw HTTP response (status code, headers, and request URL) via the .RawResponse property in addition to the deserialized data. InsightClient also now implements the IInsightClient interface. Callers that awaited results directly are unaffected; callers that stored results as explicit Task<T> variables will need to update their type declarations to WithRawResponseTask<T>.
  • All ObservabilityScorecardClient async methods (ScorecardControllerGetAsync, ScorecardControllerRemoveAsync, ScorecardControllerUpdateAsync, ScorecardControllerGetPaginatedAsync, and ScorecardControllerCreateAsync) now return WithRawResponseTask<T> instead of Task<T>. Callers can await the result directly to get the deserialized data, or access .RawResponse for HTTP status code, URL, and headers. Update any code that assigns or passes the return value as a Task<T> to use WithRawResponseTask<T> (or simply await the call). Additionally, deserialization failures now throw VapiClientApiException instead of VapiClientException.
  • The PhoneNumbersClient methods (ListAsync, CreateAsync, GetAsync, DeleteAsync, UpdateAsync, and PhoneNumberControllerFindAllPaginatedAsync) now return WithRawResponseTask<T> instead of Task<T>, giving callers access to the raw HTTP response (status code, headers, and URL) alongside the deserialized result. Callers must update their code to await .Result or use .Data to access the deserialized payload. Additionally, deserialization failures now throw VapiClientApiException instead of VapiClientException.
  • All ProviderResourcesClient methods now return WithRawResponseTask<T> instead of Task<T>, providing access to the raw HTTP response (status code, headers, URL) alongside the deserialized result. Callers must update their await usage — use .Result or await the inner task to retrieve the typed data (e.g., var result = await client.ProviderResourceControllerGetProviderResourceAsync(...); var data = result.Data;). A new Cartesia provider value has also been added to the relevant request enums.
  • The SDK now supports Cartesia as a provider option in all provider-resource request enums (Get, GetPaginated, and Update). CreateSessionDto gains two new optional properties — AssistantOverrides and CustomerId — for richer session creation. ListSessionsRequest also gains several new optional filter fields: Id, AssistantIdAny, CustomerNumberAny, PhoneNumberId, and PhoneNumberIdAny.
  • All SessionsClient methods (ListAsync, CreateAsync, GetAsync, DeleteAsync, UpdateAsync) now return WithRawResponseTask<T> instead of Task<T>. Callers can await the result directly as before, but must update any code that assigns the return value to Task<T>. The raw HTTP response (status code, URL, and headers) is now accessible via the .RawResponse property on the awaited result. Additionally, ListSessionsRequest gains new optional filter fields: Id, AssistantIdAny, CustomerNumberAny, PhoneNumberId, and PhoneNumberIdAny.
  • The ListAsync, CreateAsync, GetAsync, DeleteAsync, and UpdateAsync methods on SquadsClient now return WithRawResponseTask<T> instead of Task<T>. Callers must update their await expressions and can now access .RawResponse for HTTP status codes, headers, and the request URL. Additionally, UpdateStructuredOutputDto gains two new optional properties — Type and Regex — to support regex-based structured output extraction.
  • All methods on StructuredOutputsClient now return WithRawResponseTask<T> instead of Task<T>, giving callers access to HTTP status codes, response headers, and the raw request URL alongside deserialized response data. The StructuredOutputControllerSuggestAsync method has been removed. Callers of any StructuredOutputsClient method must update their code to handle the new return type, and any calls to StructuredOutputControllerSuggestAsync must be removed.
  • The AdditionalProperties property on all SDK model types has changed from IDictionary<string, JsonElement> to ReadOnlyAdditionalProperties. Code that wrote to or cast AdditionalProperties as a mutable dictionary must be updated to use the new read-only accessor.
  • All ToolsClient methods (ListAsync, CreateAsync, GetAsync, DeleteAsync, UpdateAsync) now return WithRawResponseTask<T> instead of Task<T>. Callers can await the result directly to obtain the data as before, or access .WithRawResponse to inspect the raw HTTP status code, URL, and headers.
  • New optional fields CachedPromptTokens and related cached-token breakdown fields have been added to AnalysisCost and AnalysisCostBreakdown.
  • The AdditionalProperties property on all SDK record types (e.g. AnalyticsQuery, AnthropicCredential, AnthropicModel, etc.) has changed its type from IDictionary<string, JsonElement> to ReadOnlyAdditionalProperties. Code that previously assigned to or mutated this dictionary will no longer compile. If you only read from AdditionalProperties, no changes are required.
  • Three new Anthropic Claude model enum values are now available on AnthropicModelModel: ClaudeOpus4520251101, ClaudeOpus46, and ClaudeSonnet46. A new AnalyticsOperationColumn value CostBreakdownLlmCachedPromptTokens has also been added.
  • The AdditionalProperties property on all SDK record types has changed from IDictionary<string, JsonElement> (publicly writable) to ReadOnlyAdditionalProperties (read-only wrapper populated after deserialization). Any code that directly assigned or mutated AdditionalProperties will need to be updated — the property is now read-only and managed automatically by the deserializer.
  • Several new optional properties have also been added across types, including ApiRequestTool.EncryptedPaths, ApiRequestTool.Parameters, Artifact.AssistantActivations, ArtifactPlan.StructuredOutputs, and AssemblyAiTranscriber.VadAssistedEndpointingEnabled / SpeechModel. A new Multi language option is available for AssemblyAiTranscriberLanguage, and a new SessionCreatedHook variant is available in the assistant hooks union.
  • The AdditionalProperties property on several record types (e.g. AssistantCustomEndpointingRule, AssistantMessage, AssistantOverrides, and others) has changed from IDictionary<string, JsonElement> to ReadOnlyAdditionalProperties. Code that wrote to or cast AdditionalProperties as a mutable dictionary will need to be updated to use the new read-only type. Additionally, a new AssistantSpeechStarted value has been added to AssistantClientMessagesItem, a new optional AutoIncludeMessageHistory property has been added to AssistantMessageJudgePlanAi, and SessionCreatedHook is now included in the AssistantOverrides.Hooks union.
  • The AdditionalProperties property on response record types (e.g. AssistantPaginatedResponse, AssistantUserEditable, AssistantVersionPaginatedResponse, AutoReloadPlan) has changed from IDictionary<string, JsonElement> to ReadOnlyAdditionalProperties. Callers that previously wrote to or iterated over AdditionalProperties as a mutable dictionary must update their code to use the new read-only type.
  • Additionally, the AssistantSpeechStarted (assistant.speechStarted) value has been added to AssistantClientMessagesItem, AssistantOverridesClientMessagesItem, AssistantServerMessagesItem, and AssistantOverridesServerMessagesItem enums.
  • The AdditionalProperties property on Azure credential and transcriber types (AzureBlobStorageBucketPlan, AzureCredential, AzureOpenAiCredential, AzureSpeechTranscriber) has changed from a mutable IDictionary<string, JsonElement> to a read-only ReadOnlyAdditionalProperties type. Code that writes to or assigns AdditionalProperties directly will no longer compile — update such code to read from the property only.
  • Additionally, the Australia enum value in AzureCredentialRegion and AzureOpenAiCredentialRegion has been renamed to Australiaeast. Update any references from .Australia to .Australiaeast. Several new region values (Centralus, Germanywestcentral, Polandcentral, Spaincentral, Westeurope) and new GPT-5.x model values have been added to the respective enums.
  • The AdditionalProperties property on record types (e.g. AzureVoice, BackgroundSpeechDenoisingPlan, BackoffPlan, BarInsight, BarInsightFromCallTable, and others) has changed from IDictionary<string, JsonElement> to ReadOnlyAdditionalProperties. Code that wrote to or relied on the mutable dictionary interface must be updated to use the new read-only type. Additionally, the Queries property on BarInsight and BarInsightFromCallTable now includes JsonQueryOnEventsTable as a new union variant — exhaustive pattern matches on this OneOf type will require a new case.
  • The AdditionalProperties property on all SDK record types has changed from a mutable IDictionary<string, JsonElement> to a new read-only ReadOnlyAdditionalProperties type — any code that previously wrote to or cast this property will need to be updated. Additionally, BotMessage.SpeakerLabel has been removed. New CustomerNumber enum values have been added to BarInsightFromCallTableGroupBy and BarInsightGroupBy.
  • The AdditionalProperties property on Call, CallBatchError, CallBatchResponse, and ByoSipTrunkCredential has changed from a mutable IDictionary<string, JsonElement> to a read-only ReadOnlyAdditionalProperties type — any code that wrote to or cast this property as a mutable dictionary will need to be updated. A new EndedMessage property has been added to the Call type to provide additional context when a call ends.
  • The CallEndedReason enum has been expanded with over 60 new values covering additional provider failures (Wellsaid voice, Baseten LLM, Minimax LLM, Soniox transcriber, ElevenLabs/Google/OpenAI transcribers), new SIP connection error states (CallInProgressErrorSipInboundCallFailedToConnect, CallRingingErrorSipInboundCallFailedToConnect, CallInProgressErrorProviderfaultOutboundSip408RequestTimeout), and a new customer hangup reason (CustomerEndedCallDuringTransfer). The enum serializer has been replaced with a dedicated implementation that ensures deterministic wire-value round-tripping for all members.
  • The AdditionalProperties property on CallHookAssistantSpeechInterrupted, CallHookCallEnding, CallHookCustomerSpeechInterrupted, CallHookCustomerSpeechTimeout, CallHookFilter, CallHookModelResponseTimeout, CallPaginatedResponse, and other record types has changed from IDictionary<string, JsonElement> to ReadOnlyAdditionalProperties. Callers that accessed this property via the dictionary interface must update their code to use the new ReadOnlyAdditionalProperties API. Additionally, CallHookCallEnding.Do has changed from IEnumerable<ToolCallHookAction> to IEnumerable<object>.
  • The AdditionalProperties property on several record types (Campaign, CampaignPaginatedResponse, CartesiaCredential, CartesiaExperimentalControls, CartesiaGenerationConfig, CartesiaGenerationConfigExperimental, CartesiaTranscriber) has changed from a mutable IDictionary<string, JsonElement> to a read-only ReadOnlyAdditionalProperties type — code that writes to this dictionary must be updated. Additionally, Campaign.PhoneNumberId is now nullable (string? instead of required string) and Campaign.Customers is now IEnumerable<CreateCustomerDto>? instead of a required non-nullable collection. New optional properties SquadId and DialPlan have been added to Campaign to support squad-based and multi-number dial-plan campaigns.
  • The AdditionalProperties property on CartesiaVoice and CerebrasCredential (and likely other record types) has changed from IDictionary<string, JsonElement> to ReadOnlyAdditionalProperties. Code that wrote to or cast AdditionalProperties as a mutable dictionary will need to be updated to use the new read-only API. Additionally, three new versioned model values (Sonic320260112, Sonic320251027, Sonic220250611) have been added to the CartesiaVoiceModel enum.
  • The AdditionalProperties property on response record types (e.g. CerebrasModel, Chat, ChatCost, ChatAssistantOverrides, and related types) has changed its type from IDictionary<string, JsonElement> to ReadOnlyAdditionalProperties. Code that assigned to or called mutating methods on AdditionalProperties must be updated to use the new read-only API.
  • The AdditionalProperties property on all SDK response record types has changed from IDictionary<string, JsonElement> to the new ReadOnlyAdditionalProperties type. Code that writes to or casts AdditionalProperties as a mutable dictionary will need to be updated to use the read-only API. A new ClientMessageAssistantSpeech variant has also been added to the ClientMessage.Message union type.
  • The AdditionalProperties property on ClientMessageChatCreated, ClientMessageChatDeleted, ClientMessageConversationUpdate, ClientMessageHang, ClientMessageLanguageChangeDetected, ClientMessageMetadata, ClientMessageModelOutput, and ClientMessageSessionCreated has changed from IDictionary<string, JsonElement> to ReadOnlyAdditionalProperties. Code that assigns to or mutates AdditionalProperties directly will no longer compile. A new optional TurnId property has been added to ClientMessageModelOutput to identify and group LLM response tokens by turn.
  • The AdditionalProperties property on ClientMessageSessionDeleted, ClientMessageSessionUpdated, ClientMessageSpeechUpdate, ClientMessageToolCalls, ClientMessageToolCallsResult, and ClientMessageTranscript has changed from IDictionary<string, JsonElement> to ReadOnlyAdditionalProperties. Callers that previously assigned to or mutated this property must remove those mutations — the property is now populated automatically after deserialization and exposes a read-only interface. Index-based read access (record.AdditionalProperties["key"]) continues to work.
  • The AdditionalProperties property on response record types (e.g. ClientMessageTransferUpdate, ClientMessageUserInterrupted, CloneVoiceDto, CloudflareCredential, and others) has changed from IDictionary<string, JsonElement> (with an internal set) to ReadOnlyAdditionalProperties (with a private set). Code that writes to or casts AdditionalProperties as a mutable dictionary must be updated to use the new read-only type.
  • A new optional TurnId property has been added to ClientMessageUserInterrupted, allowing clients to identify and discard tokens from an interrupted LLM response turn.
  • The AdditionalProperties property on all response model types (e.g. CostBreakdown, Condition, ConversationNode, CreateApiRequestToolDto, and many others) has changed from IDictionary<string, JsonElement> with an internal set to ReadOnlyAdditionalProperties with a private set. Consumers who previously read, assigned, or mutated AdditionalProperties directly must update their code to use the new read-only accessor.
  • Two new optional properties have also been added: CostBreakdown.LlmCachedPromptTokens for LLM cached prompt token tracking, and CreateApiRequestToolDto.EncryptedPaths / CreateApiRequestToolDto.Parameters for encrypted path and static parameter support on API request tools.
  • The AdditionalProperties property on DTO records such as CreateAssistantDto and CreateAzureCredentialDto has changed type from IDictionary<string, JsonElement> (publicly settable) to ReadOnlyAdditionalProperties (read-only). Consumers that read from or write to AdditionalProperties as a dictionary must update their code to use the new ReadOnlyAdditionalProperties API.
  • Additionally, the Australia enum member in CreateAzureCredentialDtoRegion has been renamed to Australiaeast; any code referencing CreateAzureCredentialDtoRegion.Australia must be updated to Australiaeast.
  • New capabilities added include: AssistantSpeechStarted in CreateAssistantDtoClientMessagesItem and CreateAssistantDtoServerMessagesItem, SessionCreatedHook in the CreateAssistantDto.Hooks union, and several new Azure regions (Centralus, Germanywestcentral, Polandcentral, Spaincentral, Westeurope).
  • The AdditionalProperties property on several DTO types (including CreateAzureOpenAiCredentialDto, CreateBarInsightFromCallTableDto, CreateBashToolDto, CreateByoPhoneNumberDto, CreateByoSipTrunkCredentialDto, and others) has changed its type from IDictionary<string, JsonElement> to ReadOnlyAdditionalProperties. Code that writes to or casts AdditionalProperties as a mutable dictionary will need to be updated.
  • Additionally, the Australia enum value in CreateAzureOpenAiCredentialDtoRegion has been renamed to Australiaeast; any switch statements or direct references to CreateAzureOpenAiCredentialDtoRegion.Australia must be updated to Australiaeast.
  • The AdditionalProperties property on DTO types has changed from IDictionary<string, JsonElement> (with an internal setter) to ReadOnlyAdditionalProperties (with a private setter). Any code that assigned to, cast, or mutated AdditionalProperties directly will need to be updated to use the new read-only API.
  • Two new optional properties have also been added: CreateCustomCredentialDto.EncryptionPlan for specifying an encryption plan, and CreateDtmfToolDto.SipInfoDtmfEnabled for enabling DTMF tones via SIP INFO messages.
  • The AdditionalProperties property on all DTO types (e.g. CreateFunctionToolDto, CreateGcpCredentialDto, CreateGhlToolDto, and many others) has changed from a mutable IDictionary<string, JsonElement> to a new ReadOnlyAdditionalProperties type. Code that previously wrote to or mutated AdditionalProperties will no longer compile. Read access is still available via the ReadOnlyAdditionalProperties API.
  • CreateFunctionToolDto also gains two new optional properties: VariableExtractionPlan and Parameters.