Endpoints
Visão e arquivos
Envie imagens, PDFs, áudio e vídeo como partes de conteúdo nas mensagens do api14, com exemplos de imagem e PDF, plugin file-parser e limites.
Teste no playgroundOs modelos multimodais aceitam imagens, PDFs, áudio e vídeo em uma mensagem do usuário. Passe content como um array de partes em vez de uma string. Para ver o que um modelo aceita, consulte architecture.input_modalities em Modelos (image, file, audio, video).
Partes de conteúdo
| Parte | Formato | Observações |
|---|---|---|
| Texto | { "type": "text", "text": "..." } | |
| Imagem | { "type": "image_url", "image_url": { "url": "https://..." | "data:image/png;base64,...", "detail": "auto" } } | PNG, JPEG, WebP, GIF. URL ou data URL em base64. |
| PDF / arquivo | { "type": "file", "file": { "filename": "doc.pdf", "file_data": "https://..." | "data:application/pdf;base64,..." } } | Funciona com qualquer modelo. Modelos sem suporte nativo a arquivos recebem o texto extraído. |
| Áudio | { "type": "input_audio", "input_audio": { "data": "<base64>", "format": "wav" } } | Somente base64. wav, mp3 e outros, dependendo do modelo. |
| Vídeo | { "type": "video_url", "video_url": { "url": "https://..." } } | Suportado por alguns modelos, por exemplo Gemini. |
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const result = await client.chat.completions.create({
"model": "openai/gpt-5-mini",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is in this image?"
},
{
"type": "image_url",
"image_url": {
"url": "https://upload.wikimedia.org/wikipedia/commons/3/3a/Cat03.jpg"
}
}
]
}
]
});
console.log(result.choices[0].message.content);
Exemplo com imagem
{
"model": "google/gemini-2.5-flash",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "What is in this picture?" },
{ "type": "image_url", "image_url": { "url": "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg" } }
]
}
]
}
Exemplo com PDF
{
"model": "anthropic/claude-sonnet-4.5",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "Summarize this contract in five bullets." },
{ "type": "file", "file": { "filename": "contract.pdf", "file_data": "data:application/pdf;base64,JVBERi0xLjcK..." } }
]
}
],
"plugins": [{ "id": "file-parser", "pdf": { "engine": "pdf-text" } }]
}
O plugin opcional file-parser escolhe como um PDF é lido: pdf-text (extração de texto gratuita), mistral-ocr (OCR para documentos digitalizados, cobrado por página) ou native (o próprio modelo lê o arquivo). O custo do processamento faz parte de usage.cost.
Resposta
A resposta é um chat completion normal. As entradas de imagem, arquivo e áudio contam como tokens de entrada, e o custo está em usage.cost:
{
"choices": [{ "index": 0, "finish_reason": "stop", "message": { "role": "assistant", "content": "A close-up of an ant on a leaf." } }],
"usage": { "prompt_tokens": 1290, "completion_tokens": 12, "total_tokens": 1302, "cost": 0.000417 }
}
Limites e erros
- O corpo de uma requisição pode ter no máximo 25 MB. O base64 deixa os arquivos cerca de 33% maiores. Requisições maiores retornam
413 payload_too_large. Para imagens grandes, use URLs públicas. - Um modelo que não aceita um tipo de entrada retorna um
400ou404do provedor. - Os demais erros são os mesmos de Chat completions. Veja Erros.