Usamos cookies. Cookies e o armazenamento do navegador mantêm você conectado e lembram suas preferências. Com sua permissão, também medimos como o site é usado. Você pode a qualquer momento. Veja nossa política de cookies.

Visão e arquivos

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 playground

Os 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

ParteFormatoObservaçõ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 400 ou 404 do provedor.
  • Os demais erros são os mesmos de Chat completions. Veja Erros.