2.10.0 (2026-11-12)
Features Added
- Promoted voice-agent realtime WebSocket clients, session clients, persisted conversation clients, and core telephony
clients to GA. Build the clients directly throughAgentsClientBuilder; useallowPreview(true)when
accessing capabilities that still requireFoundry-Features: VoiceAgents=V1Preview. - Added preview native GPT Live voice-agent definitions, WebSocket clients, and persisted conversation clients through
AgentsClientBuilder.beta().buildBetaVoiceAgentsLiveWebSocketClient()and
buildBetaVoiceAgentsLiveWebSocketAsyncClient(), with corresponding conversation-client factories.
Live sessions support typed OpenAIClientEventsends andServerEventreceives, raw JSON APIs, and Responses
delegation through OpenAIResponsesDelegationConfig. Live WebSocket clients automatically send the required
preview header. - Added GPT Live samples for multi-turn text, interactive text and audio, microphone/speaker streaming, Responses
function tools, and persisted conversation history and audio. Persistence is opt-in throughFOUNDRY_GPT_LIVE_STORE. - Added preview voice-agent post-call delivery to Event Grid and routines, and inline subagents with handoff policies
and runtime events. - Added voice-agent system tools for DTMF, SMS, input collection, language detection, and transfer routing.
- Added preview SIP telephony bindings and telephony campaigns with recipient validation, scheduling, and long-running
create, cancel, and delete operations onBetaVoiceAgentsTelephonyClientand its asynchronous counterpart. - Added typed
RealtimeResponseInputItemandRealtimeResponseInputContentfactories for heterogeneous realtime
response inputs and user-message content. - Added skill optimization through
SkillOptimizationConfiguration, skill references, validation and execution
results, and resolved candidate context. Trace-based optimization supports Application Insights connections,
fixed time windows, explicit trace IDs, and evaluator generation. - Added optimization candidate files, errors, and execution summaries, and
downloadOptimizationJobFileon
AgentsClientandAgentsAsyncClient. Added skipped job and candidate statuses; optimization polling treats
skipped jobs as unsuccessful terminal results. - Added MCP toolbox request-header bindings.
- Added request-level model-routing mode and model-pool selection, adaptive session affinity, and preview
required-parameter routing controls.
Breaking Changes
- Removed
BetaAgentsClientandBetaAgentsAsyncClient. UsecreateAgentFromPromptand
createAgentFromPromptWithResponseonAgentsClientandAgentsAsyncClient. - Replaced
BetaVoiceAgentWebSocketClient,BetaVoiceAgentWebSocketAsyncClient, and their session clients with
VoiceAgentsWebSocketClient,VoiceAgentsWebSocketAsyncClient, and the correspondingVoiceAgentsWebSocketSession*
types. Build realtime clients directly withAgentsClientBuilder.buildVoiceAgentsWebSocketClient()or
buildVoiceAgentsWebSocketAsyncClient()instead ofbeta(). The asynchronous session exposescloseAsync()
instead of the previous blockingclose(). - Replaced
BetaVoiceAgentsConversationsClientand its asynchronous counterpart withVoiceAgentsConversationsClient
andVoiceAgentsConversationsAsyncClient, built directly throughAgentsClientBuilder. - Moved binding, call, call-job, and transfer operations from
BetaVoiceAgentsTelephonyClientand its asynchronous
counterpart toVoiceAgentsTelephonyClientandVoiceAgentsTelephonyAsyncClient, built directly through
AgentsClientBuilder. The beta telephony clients now expose campaign operations. - Renamed
VoiceAgentWebSocketConnectionOptions.getTransport()andsetTransport(...)to
getTransportType()andsetTransportType(...). - Replaced the numeric/string token-limit accessors on voice and realtime models with
getMaxOutputTokens()and
setMaxOutputTokens(VoiceAgentMaxOutputTokens), where writable. UseVoiceAgentMaxOutputTokens.of(count)for a
numeric limit orVoiceAgentMaxOutputTokens.MAXIMUMfor"inf". - Replaced the per-variant tool-choice accessors on voice and realtime models with
getToolChoice()andsetToolChoice(VoiceAgentToolChoice), where writable. UseVoiceAgentToolChoice.ofMode,
ofFunction, orofMcpto create a choice.PromptAgentDefinitionis unchanged. - Changed
VoiceAgentResponseCreateOptionsinput fromList<RealtimeConversationItem>to
List<RealtimeResponseInputItem>. - Replaced local realtime transcription language and usage, session configuration, audio-format, turn-detection,
and MCP tool/error models with OpenAI Java types. Notable changes includeSessionUpdateEvent.Session,
RealtimeAudioFormats,RealtimeMcpListTools.Tool,RealtimeMcpToolCall.Error, and the transcription event's
getUsage()union. Foundry-specific session and turn-detection models remain available. - Renamed session-created and session-updated event accessors from
getSessionAsVoiceAgentSessionResponseConfiguration()
togetSessionResponseConfiguration()and removed their public constructors. - Renamed transcription getters from
getLogprobs()togetLogProbs(), conversation-itemobjectaccessors to
objectType, and voice audio/recordinggetBlobUri()accessors togetBlobUrl(). - Removed unit suffixes from duration-typed voice and telephony accessors. Audio item
getStartOffsetMs()is now
getOffset(). Transcription segment start/end values and server VAD prefix padding now useDuration. - Renamed
MemoryStoreDefaultOptions.getDefaultTtlSeconds()andsetDefaultTtlSeconds(Duration)to
getDefaultTtl()andsetDefaultTtl(Duration), andRoutingTraceEntry.getLatencyMs()togetLatency().
Wire values remain in seconds and milliseconds, respectively. - Changed voice tool, greeting, interim-response, engine, error, and audio-timestamp type properties from strings to
typed enums. Recording channel roles now useVoiceAudioRole. - Changed
VoiceAgentSubagentConfigurationto a polymorphic base. UseVoiceAgentDelegateSubagentConfigurationfor
delegate subagents or the previewVoiceAgentInlineSubagentConfigurationfor inline subagents. - Replaced telephony binding creation-input models with writable concrete binding models and
CreateTelephonyCallJobInputwithTelephonyCallJobCreate. Call sources and call/transfer destinations now use
TelephonyAddressvariants, and fixed-interval retries useTelephonyFixedIntervalRetryPolicy. Removed
TelephonyCallJob.getObjectType()and binding-status accessors/filtering; added allowed calling numbers to binding
updates. - Replaced
SessionAffinityRequestModeandSessionAffinityModewithSessionAffinityRequestStrategyand
SessionAffinityStrategy.SessionAffinityDetails.getMode()is nowgetStrategy(); requestmodeaccessors use
SessionAffinityRequestStrategy. RemovedSessionAffinitySource.CONVERSATIONandPREVIOUS_RESPONSE_IDand added
DERIVED_FINGERPRINT. The documented default affinity strategy is now adaptive rather than sticky. - Hosted-agent A2A passthrough requires
Foundry-Features: A2AAgents=V1Previewwhen creating or modifying a definition
declaring thea2aprotocol.allowPreview(true)adds the opt-in;HostedAgentDefinition.getProtocolVersions()and
setProtocolVersions(...)are now marked preview.
Bugs Fixed
- Preserved exact numeric values when round-tripping agent structured input defaults and schemas, telephony
structured inputs, and response structured inputs throughBinaryData. - Fixed OpenAI model JSON conversion to use an explicit Jackson serializer, preserving explicit nulls without
depending on the application's Azure JSON serializer provider. - Removed query values from WebSocket proxy-failure diagnostics to avoid logging structured inputs.
Other Changes
- Regenerated the client with
@azure-tools/openai-typespecversion1.34.1. - Updated
openai-javafrom4.69.0to4.99.0.