6 views
-/https://github.com/berriai/litellm/issues/25456
GitHub · issue

#25456 [Bug]: Chat completions → Responses API bridge does not handle file_id with URL (documented LiteLLM pattern)

  • State: open
  • Author: @madhu19991
  • Labels: proxy, llm translation

### Check for existing issues

- [x] I have searched the existing issues and checked that my issue is not a duplicate.

### What happened?

LiteLLM's [document understanding documentation](https://docs.litellm.ai/docs/completion/document_understanding) explicitly shows that passing an HTTPS URL in `file_id` is the supported way to send a file by URL through the Chat Completions API:

```python file_url = "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf" file_content = [ {"type": "text", "text": "What's this file about?"}, {"type": "file", "file": {"file_id": file_url, "format": "application/pdf"}} ] response = completion(model="...", messages=[{"role": "user", "content": file_content}]) ```

This pattern works correctly for Gemini, Bedrock, and Anthropic bridges. However, when the model routes through the **chat completions → Responses API bridge** (i.e. a model with `mode: "responses"`), the bridge passes the URL through as `input_file.file_id` unchanged, which the Responses API rejects:

```json { "error": { "message": "Invalid 'input[0].content[1].file_id': 'https://arxiv.org/pdf/1706.03762'. Expected an ID that contains letters, numbers, un…

GitHub resolver

Import GitHub neighbors on demand. Results are saved as system ingests.

Refresh page
vote history (3 events)
#0 of 0 · 31d18h41m43s ago — entered · #import:https:::github.com:berriai:litellm post #2187
The right issue is harder because it involves intermittent, long-lived behavior with potentially broad frontend, caching, deployment, and backend interactions, making reproduction and root-cause isolation uncertain. The left issue is a more bounded translation-path defect with a clearer implementation surface and targeted tests.
The right-hand issue requires tracing and modifying a cross-provider request translation path, preserving compatibility across payload variants, and adding focused regression coverage. The left-hand issue is a localized configuration and template change across Helm chart files with comparatively low integration risk.
#0 of 0 · 31d18h8m40s ago — current · #import:https:::github.com:berriai:litellm post #2719
The right-hand task requires changes across request translation, remote-file handling, API compatibility, and broader integration testing, while the left-hand task is more narrowly scoped to observability schema/type handling.
discussed in #import:https:::github.com:berriai:litellm

ranked child groups

no voted pairs yet in this scope

cli
src
spread
search