Guias / DeepSeek Files API
DeepSeek Files API (2026): Limites, uploads e file_id na prática
A DeepSeek lançou discretamente seu primeiro endpoint de arquivos em 21 de agosto de 2026, junto com o modelo de visão — o que torna obsoletos muitos guias antigos (vários ainda afirmam que a API da DeepSeek "não tem rota de upload de arquivos"). Este guia traz os limites verificados, exemplos de upload e referência em curl e Python, e quando usar arquivos em vez de base64.
A DeepSeek Files API faz o upload de uma imagem uma única vez e retorna um file_id para você referenciar no chat.
Faça o upload com purpose="user_data"; um arquivo pode ter até 64 MiB (janela de upload de 10 minutos); o armazenamento é de 25 GiB / 10.000 arquivos por usuário; retenção de 1 hora a 30 dias ou permanente sem expires_after.
Referencie arquivos a partir de chats do deepseek-v4-flash-vision-exp via um bloco {"type":"file","file_id":...} — imagens via file_id podem ter 64 MiB em uma requisição, contra 32 MiB inline. No endpoint compatível com a Anthropic, adicione o cabeçalho anthropic-beta: files-api-2025-04-14.
Visão geral dos limites
| Limite | Valor (documentação oficial, 2026-08-21) |
|---|---|
| Formatos | JPEG, PNG, GIF, WebP — detectado pelo conteúdo do arquivo, não pela extensão |
| Por arquivo | Máx. 64 MiB; o upload deve ser concluído em até 10 minutos |
| Por usuário | 25 GiB de armazenamento; 10.000 arquivos armazenados |
| Retenção | 1 hora a 30 dias, ou permanente (omita expires_after) |
| Finalidade | Deve ser user_data (única finalidade suportada, também para filtragem de listas) |
| Tamanho na requisição | Imagem via file_id de até 64 MiB por requisição; imagens inline em base64/URL limitadas a 32 MiB |
| Compatibilidade da API | Compatível com OpenAI e compatível com Anthropic; o endpoint /messages da Anthropic precisa do cabeçalho beta files-api |
Fonte: guia oficial da Files API, consultado em 2026-08-21.
Faça o upload uma vez, referencie para sempre (bem, até 30 dias)
Faça o upload de uma captura de tela e obtenha um file_id:
curl https://api.deepseek.com/files \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-F "purpose=user_data" \
-F "file=@dashboard.png"
Depois, referencie-o em um chat do vision-exp — sem blob base64, sem novo upload em turnos subsequentes:
curl https://api.deepseek.com/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-d '{
"model": "deepseek-v4-flash-vision-exp",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Which metric regressed in this dashboard?"},
{"type": "file", "file_id": "file-api-xxxx"}
]
}]
}'
Python com o SDK da OpenAI — faça o upload e depois converse no chat:
from openai import OpenAI
client = OpenAI(api_key="YOUR_KEY", base_url="https://api.deepseek.com")
f = client.files.create(file=open("dashboard.png", "rb"), purpose="user_data")
resp = client.chat.completions.create(
model="deepseek-v4-flash-vision-exp",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Which metric regressed?"},
{"type": "file", "file_id": f.id},
],
}],
)
print(resp.choices[0].message.content)
- Alternativa inline: um bloco de arquivo pode conter
file_data(base64) em vez defile_id— campos mutuamente exclusivos;filenamesó pode acompanhar file_data. - Stack no estilo Anthropic: os mesmos blocos de arquivo funcionam em /messages com o cabeçalho
anthropic-beta: files-api-2025-04-14.
Quando usar arquivos vs base64 vs URL
| Método | Tamanho máximo | Melhor para |
|---|---|---|
| base64 inline | 32 MiB | Imagens pontuais geradas no processo; mais simples de programar |
| URL externa | 32 MiB, URL de 8.192 caracteres, busca em 60s | Imagens hospedadas publicamente; sem nenhuma etapa de upload |
| Files API | 64 MiB | Loops de capturas de tela de agentes, imagens de referência repetidas, qualquer conteúdo reutilizado entre turnos |
FAQ
Li que a DeepSeek não tem endpoint de arquivos — isso é novo?
Correto até 21 de agosto de 2026 — guias antigos que descreviam "sem rota /v1/files, extraia o texto por conta própria" eram precisos na época e agora estão desatualizados. A Files API foi lançada junto com o modelo de visão.
Posso fazer upload de PDFs ou documentos?
Não — a Files API atualmente aceita apenas formatos de imagem (JPEG/PNG/GIF/WebP). Para PDFs, renderize as páginas como imagens no lado do cliente e faça o upload ou insira-as inline.
Quanto tempo os arquivos duram?
Entre 1 hora e 30 dias via expires_after, ou permanente se você o omitir — dentro da sua cota de 25 GiB / 10.000 arquivos.
Os arquivos funcionam com modelos que não são de visão?
Os blocos de arquivo são consumidos por deepseek-v4-flash-vision-exp; o V4-Flash/V4-Pro padrão continuam apenas para texto. Não aponte referências de arquivos para modelos de texto.