> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apiyi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 支持 Files API 上传文件吗？

> API易 不提供 Files API，也不提供依赖它的 Batch、Assistants 等接口。调 /v1/files 会报「Current group … has no available channels for model」。图片、PDF 等文件请用 base64 或 URL 直接放进请求里。

## 简短回答

**不支持。** API易 不提供 Files API，也就是先上传文件、拿到 `file_id`、再在请求里引用的那种用法。依赖文件上传的几类接口同样不提供：

| 接口 | 路径 | 调用结果 |
| - | - | - |
| OpenAI Files API | `/v1/files` | 503，报「当前分组没有可用渠道」 |
| OpenAI Assistants API | `/v1/assistants`、`/v1/threads` | 503，同上 |
| OpenAI Batch API | `/v1/batches` | 404 `Invalid URL` |
| OpenAI Vector Stores、Uploads | `/v1/vector_stores`、`/v1/uploads` | 404 `Invalid URL` |
| Claude Message Batches | `/v1/messages/batches` | 404 `Invalid URL` |
| Gemini Files API | `client.files.upload()`、`/v1beta/files` | 不可用 |

**替代做法**：把图片、PDF 等文件用 base64 或 URL **直接放进对话请求里**，各家模型都支持这种内联写法，见下文。

## 报错是什么意思

调 `/v1/files` 时会收到：

```json theme={null}
{
  "error": {
    "message": "Current group default has no available channels for model  under billing mode [pay-as-you-go, pay-per-request] (request id: …)",
    "type": "shell_api_error"
  }
}
```

注意 `for model` 后面是空的。平台按模型名给请求分配渠道，上传文件的请求里没有模型名，平台找不到对应渠道，就报了这条错误。它的真实意思是**平台不提供这个接口**，跟分组、余额、令牌权限都无关，换分组或重试也不会变好。

在对话请求里引用不存在的 `file_id`，报错会因接口而异，例如：

| 写法 | 报错 |
| - | - |
| `/v1/chat/completions` 里传 `file.file_id` | `Files [file-xxx] were not found` |
| `/v1/responses` 里传 `input_file.file_id` | `Invalid 'input[0].content[0].file_id'` |

> [!NOTE]
>
> 如果你用的是 OpenAI、Anthropic、Google 的官方 SDK，又把 `base_url` 换成了 API易，那么 `client.files.create()`、`client.files.upload()`、`client.batches.create()` 这类方法都会失败，请改成下文的内联写法。

## 替代做法：把文件直接放进请求

**OpenAI 格式**

**图片**：`image_url` 里传公网 URL，或 `data:image/png;base64,...`。

**PDF**：`/v1/responses` 用 `input_file` 的 `file_data`；`/v1/chat/completions` 用 `file` 类型的 `file_data`。

```json theme={null}
{
  "model": "gpt-5.4-mini",
  "input": [{
    "role": "user",
    "content": [
      {
        "type": "input_file",
        "filename": "report.pdf",
        "file_data": "data:application/pdf;base64,JVBERi0xLjQK..."
      },
      { "type": "input_text", "text": "总结这份文件" }
    ]
  }]
}
```

**Claude 格式**

**图片**：`image` 块，`source.type` 用 `base64` 或 `url`。

**PDF**：`document` 块，`source.type` 用 `base64`。`source.type = "file"` 依赖 Files API，不可用。

```json theme={null}
{
  "model": "claude-haiku-4-5-20251001",
  "max_tokens": 1024,
  "messages": [{
    "role": "user",
    "content": [
      {
        "type": "document",
        "source": {
          "type": "base64",
          "media_type": "application/pdf",
          "data": "JVBERi0xLjQK..."
        }
      },
      { "type": "text", "text": "总结这份文件" }
    ]
  }]
}
```

**Gemini 格式**

**图片、PDF、音视频**：`inline_data` 传 base64，单个文件不超过 20MB；图片也可以用 `file_data.file_uri` 传公网 URL。

```json theme={null}
{
  "contents": [{
    "role": "user",
    "parts": [
      {
        "inline_data": {
          "mime_type": "application/pdf",
          "data": "JVBERi0xLjQK..."
        }
      },
      { "text": "总结这份文件" }
    ]
  }]
}
```

大视频的处理方法见 [视频理解 API](/api-capabilities/video-understanding)。

以上三种写法已于 2026-10-22 实测：同一份 PDF 分别经 `/v1/responses`、`/v1/chat/completions`、Claude `/v1/messages`、Gemini `generateContent` 传入，模型都正确读出了文件内容。

> [!TIP]
>
> 内联写法的代价是每次请求都要重新带上文件，请求体会变大。同一份文件要问很多轮时，可以把它转成文本后放进提示词，或者利用各家的缓存能力降低重复输入的费用，见 [API易支持缓存计费吗？](/faq/cache-billing)。

## 需要批量处理怎么办

平台没有 Batch API，批量任务请在客户端自己并发发送普通请求，并发上限见 [API 可以开多少并发？](/faq/api-concurrency)。普通请求按正常价格计费，没有官方 Batch API 那种异步折扣。

## 相关文档

> **[视频理解 API](/api-capabilities/video-understanding)**
>
> 各模型的视频传入方式与大小限制

> **[Base URL 怎么填？/v1、根域名、/v1beta 有什么区别？](/faq/base-url-config)**
>
> OpenAI / Claude / Gemini 三种格式分别怎么填

> **[API 可以开多少并发？](/faq/api-concurrency)**
>
> 批量任务在客户端并发发送

> **[模型调用报错怎么排查？](/faq/model-error-troubleshooting)**
>
> 按错误类型逐项对号入座


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.