---
title: "@ai-sdk/openai-compatible (npm) Breaking Changes | Since.dev"
description: "What each @ai-sdk/openai-compatible release removed, renamed or changed: 65 breaking changes in 2 versions on npm, each with its source."
canonical_url: https://since.dev/packages/npm/@ai-sdk/openai-compatible
last_updated: 2026-06-25
---

# @ai-sdk/openai-compatible breaking changes

Every breaking API change we have recorded in @ai-sdk/openai-compatible on npm: 65 breaking changes in 2 versions. Below are its newest 2 versions, removals and renames first, each with its source.

Newest change June 25, 2026

## 3.0.0

33 breaking changes, first published June 25, 2026.

- **Signature changed** `internal:convertOpenAICompatibleChatUsage`  

Was function convertOpenAICompatibleChatUsage(usage: {prompt_tokens?: number | null; completion_tokens?: number | null; prompt_tokens_details?: {cached_tokens?: number | null;} | null; completion_tokens_details?: {reasoning_tokens?: number... [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/3.0.0)
- **Signature changed** `internal:convertToOpenAICompatibleChatMessages`  

Was function convertToOpenAICompatibleChatMessages(prompt: LanguageModelV3Prompt): OpenAICompatibleChatPrompt; now function convertToOpenAICompatibleChatMessages(prompt: LanguageModelV4Prompt): OpenAICompatibleChatPrompt. [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/3.0.0)
- **Signature changed** `internal:mapOpenAICompatibleFinishReason`  

Was function mapOpenAICompatibleFinishReason(finishReason: string | null | undefined): LanguageModelV3FinishReason\['unified'\]; now function mapOpenAICompatibleFinishReason(finishReason: string | null | undefined)... [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/3.0.0)
- **Signature changed** `internal:OpenAICompatibleChatConfig`  

Was type OpenAICompatibleChatConfig = {provider: string; headers: () => Record<string, string | undefined>; url: (options: {modelId: string; path: string;}) => string; fetch?: FetchFunction; includeUsage?: boolean; errorStructure?... [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/3.0.0)
- **Signature changed** `internal:OpenAICompatibleChatConfig.convertUsage`  

Was convertUsage?: (usage: z.infer<ReturnType<typeof openaiCompatibleTokenUsageSchema>>) => LanguageModelV3Usage; now convertUsage?: (usage: z.infer<typeof openaiCompatibleTokenUsageSchema>) => LanguageModelV4Usage. [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/3.0.0)
- **Signature changed** `internal:OpenAICompatibleChatConfig.headers`  

Was headers: () => Record<string, string | undefined>; now headers?: () => Record<string, string | undefined>. [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/3.0.0)
- **Signature changed** `internal:OpenAICompatibleChatConfig.supportedUrls`  

Was supportedUrls?: () => LanguageModelV3\['supportedUrls'\]; now supportedUrls?: () => LanguageModelV4\['supportedUrls'\]. [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/3.0.0)
- **Signature changed** `internal:prepareTools`  

Was function prepareTools({tools, toolChoice}: {tools: LanguageModelV3CallOptions\['tools'\]; toolChoice?: LanguageModelV3CallOptions\['toolChoice'\];}): {tools: undefined | Array<{type: 'function'; function: {name: string; description: string... [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/3.0.0)
- **Signature changed** `MetadataExtractor`  

Was type MetadataExtractor = {extractMetadata: ({parsedBody}: {parsedBody: unknown;}) => Promise<SharedV3ProviderMetadata | undefined>; createStreamExtractor: () => {processChunk(parsedChunk: unknown): void; buildMetadata()... [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/3.0.0)
- **Signature changed** `MetadataExtractor.createStreamExtractor`  

Was createStreamExtractor: () => {processChunk(parsedChunk: unknown): void; buildMetadata(): SharedV3ProviderMetadata | undefined;}; now createStreamExtractor: () => {processChunk(parsedChunk: unknown): void; buildMetadata()... [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/3.0.0)

And 23 more in this version.

## 2.0.0

32 breaking changes, first published December 22, 2025.

- **Removed** `internal:OpenAICompatibleChatConfig.convertUsage`  

OpenAICompatibleChatConfig.convertUsage was removed in @ai-sdk/openai-compatible 2.0.0 [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/2.0.0)
- **Removed** `internal:OpenAICompatibleChatConfig.transformRequestBody`  

OpenAICompatibleChatConfig.transformRequestBody was removed in @ai-sdk/openai-compatible 2.0.0 [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/2.0.0)
- **Removed** `OpenAICompatibleProviderSettings.convertUsage`  

OpenAICompatibleProviderSettings.convertUsage was removed in @ai-sdk/openai-compatible 2.0.0 [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/2.0.0)
- **Removed** `OpenAICompatibleProviderSettings.metadataExtractor`  

OpenAICompatibleProviderSettings.metadataExtractor was removed in @ai-sdk/openai-compatible 2.0.0 [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/2.0.0)
- **Removed** `OpenAICompatibleProviderSettings.supportedUrls`  

OpenAICompatibleProviderSettings.supportedUrls was removed in @ai-sdk/openai-compatible 2.0.0 [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/2.0.0)
- **Removed** `OpenAICompatibleProviderSettings.transformRequestBody`  

OpenAICompatibleProviderSettings.transformRequestBody was removed in @ai-sdk/openai-compatible 2.0.0 [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/2.0.0)
- **Signature changed** `internal:convertToOpenAICompatibleChatMessages`  

Was function convertToOpenAICompatibleChatMessages(prompt: LanguageModelV2Prompt): OpenAICompatibleChatPrompt; now function convertToOpenAICompatibleChatMessages(prompt: LanguageModelV3Prompt): OpenAICompatibleChatPrompt. [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/2.0.0)
- **Signature changed** `internal:mapOpenAICompatibleFinishReason`  

Was function mapOpenAICompatibleFinishReason(finishReason: string | null | undefined): LanguageModelV2FinishReason; now function mapOpenAICompatibleFinishReason(finishReason: string | null | undefined)... [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/2.0.0)
- **Signature changed** `internal:OpenAICompatibleChatConfig`  

Was type OpenAICompatibleChatConfig = {provider: string; headers: () => Record<string, string | undefined>; url: (options: {modelId: string; path: string;}) => string; fetch?: FetchFunction; includeUsage?: boolean; errorStructure?... [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/2.0.0)
- **Signature changed** `internal:OpenAICompatibleChatConfig.supportedUrls`  

Was supportedUrls?: () => LanguageModelV2\['supportedUrls'\]; now supportedUrls?: () => LanguageModelV3\['supportedUrls'\]. [npmjs.com](https://www.npmjs.com/package/@ai-sdk/openai-compatible/v/2.0.0)

And 22 more in this version.

## Check your code

These are the changes. To see which of them reach your code, [scan a public repository](https://since.dev/scan.md), or have your coding agent call `check_code` with your manifest or lockfile over [MCP](https://since.dev/docs.md#mcp). [The API](https://since.dev/docs.md#api) reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

## Put your code on continuous management.

Scan a public repository now, or give your agent one line.

### See how out of date your code is.

[Scan a repository](https://since.dev/scan.md). Any public GitHub repository. No sign-in.

### Tell your agent what changed since it was trained.

`claude mcp add --transport http since https://api.since.dev/mcp`

---

Every page on this site as Markdown: https://since.dev/sitemap.md. For agents: https://since.dev/llms.txt.
