From d2419fb2670f41cc1b812697fb385a6c0dea7086 Mon Sep 17 00:00:00 2001 From: mukunda katta Date: Thu, 14 May 2026 19:28:32 -0700 Subject: [PATCH] Add beta realtime cached token detail types --- src/resources/beta/realtime/realtime.ts | 22 ++++++++++++++++++++++ tests/betaRealtimeTypes.test.ts | 20 ++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 tests/betaRealtimeTypes.test.ts diff --git a/src/resources/beta/realtime/realtime.ts b/src/resources/beta/realtime/realtime.ts index b7fe85dc0b..f90095168a 100644 --- a/src/resources/beta/realtime/realtime.ts +++ b/src/resources/beta/realtime/realtime.ts @@ -1233,12 +1233,34 @@ export namespace RealtimeResponseUsage { */ cached_tokens?: number; + /** + * Details about the cached tokens used in the Response. + */ + cached_tokens_details?: InputTokenDetails.CachedTokensDetails; + /** * The number of text tokens used in the Response. */ text_tokens?: number; } + export namespace InputTokenDetails { + /** + * Details about the cached tokens used in the Response. + */ + export interface CachedTokensDetails { + /** + * The number of cached audio tokens used in the Response. + */ + audio_tokens?: number; + + /** + * The number of cached text tokens used in the Response. + */ + text_tokens?: number; + } + } + /** * Details about the output tokens used in the Response. */ diff --git a/tests/betaRealtimeTypes.test.ts b/tests/betaRealtimeTypes.test.ts new file mode 100644 index 0000000000..28b4a87c0c --- /dev/null +++ b/tests/betaRealtimeTypes.test.ts @@ -0,0 +1,20 @@ +import OpenAI from 'openai/index'; +import { expectType } from './utils/typing'; + +describe('beta realtime types', () => { + test('response usage includes cached token details', () => { + const inputTokenDetails: OpenAI.Beta.Realtime.RealtimeResponseUsage.InputTokenDetails = { + audio_tokens: 1, + cached_tokens: 2, + cached_tokens_details: { + audio_tokens: 3, + text_tokens: 4, + }, + text_tokens: 5, + }; + + expectType(inputTokenDetails.cached_tokens_details?.audio_tokens); + expectType(inputTokenDetails.cached_tokens_details?.text_tokens); + expect(inputTokenDetails.cached_tokens_details?.text_tokens).toBe(4); + }); +});