# What changed in @ai-sdk/openai-compatible

> 23 changes in @ai-sdk/openai-compatible 1 to 3 from its official release notes, upgrade guides and advisories: 2 breaking, 1 security, 3 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/@ai-sdk/openai-compatible/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @ai-sdk/openai-compatible 3

### Breaking changes

- Empty chat completion choices now return an AI SDK error. (1.0.54, 3.0.46) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.46), [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%401.0.54)
- Truncated chat streams are reported as errors. (2.0.70, 3.0.33) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%402.0.70), [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.33)

### New APIs and options

- Supports URL-based image responses. (3.0.70) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.70)
- Supports uploaded file references via file_id. (3.0.68) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.68)
- Adds the portable max reasoning level, widening LanguageModelV4CallOptions['reasoning'] and ReasoningLevel. Exhaustive switches and mappings must handle max. (3.0.64) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.64)

### Behavior and default changes

- Top-level embedding dimensions are now mapped to provider settings. (3.0.67) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.67)
- Capability declarations use confirmed model IDs, leaving unrecognized model names unknown; asynchronous lookups and middleware overrides can also resolve to unknown. (3.0.58) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.58)
- Video file parts are converted to video_url content parts. (3.0.35) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.35)
- Image generation token usage is now reported. (3.0.34) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.34)

### Fixes and other changes

- Multipart tool results are now supported for compatible providers. (3.0.62) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.62)
- The User-Agent header now follows standards-compliant formatting. (3.0.59) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.59)
- Advertises file-input support for QuiverAI Arrow 2 and Arrow 2 Telos, and marks Together AI Gemini image inputs unsupported by the current single-image request mapping. (3.0.58) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.58)
- Fixes streamed tool calls when IDs are missing, blank, or repeated. (3.0.58) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.58)
- Extracts streaming response metadata after placeholder chunks. (3.0.50) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.50)
- Reasoning streams now remain contiguous when deltas include empty tool call arrays. (2.0.75, 3.0.44) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%402.0.75), [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.44)
- Supports text and thinking parts in array-based chat completion content and ignores unknown part types. (2.0.74, 3.0.41) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.41), [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%402.0.74)
- Sends reasoning_effort: "none" when top-level reasoning is disabled. (3.0.36) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.36)
- Handles tool call IDs that are empty strings. (3.0.32) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.32)
- Preserves Gemini thought signatures when using custom OpenAI-compatible provider names. (3.0.32) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%403.0.32)

## @ai-sdk/openai-compatible 2

### Security

- Supports URL-based image responses with opt-in URL validation and credential origin handling; redirect targets are validated, unsafe request headers stripped, and credentials dropped on cross-origin redirects while existing unvalidated requests are preserved. (2.0.85) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%402.0.85)

### Fixes and other changes

- Preserves streamed tool calls when their IDs or indices are unreliable. (2.0.80) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%402.0.80)
- Preserves unmapped fields in provider usage data, including fields nested in prompt_tokens_details and completion_tokens_details; mapped token counts are unaffected. (2.0.69) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%402.0.69)

## @ai-sdk/openai-compatible 1

### Fixes and other changes

- Preserves streamed tool calls when their IDs and indices are unreliable. (1.0.57) — [release notes](https://github.com/vercel/ai/releases/tag/%40ai-sdk/openai-compatible%401.0.57)
