Documentação da API

Uma chave, dezenas de modelos, pagamento em reais.

A Invision é uma API de modelos de linguagem compatível com o padrão da OpenAI. Você usa os mesmos SDKs e formatos que já conhece, acessa os principais modelos do mercado com uma única chave e paga por token, com recarga por Pix e sem mensalidade.

URL basehttps://invision.dreamvision.com.br/v1

Toda requisição precisa do header Authorization: Bearer SUA_CHAVE_INVISION. Nunca coloque a chave em código que roda no navegador ou em aplicativos públicos.

Início rápido

1. Crie sua chave

  1. Crie sua conta com e-mail ou Google.
  2. No painel, faça uma recarga por Pix. O crédito cai em segundos.
  3. Em Chaves de API, clique em Nova chave e copie o valor. Ele aparece uma única vez.
  4. Guarde a chave em uma variável de ambiente, por exemplo INVISION_API_KEY.

2. Faça a primeira chamada

Com curl, direto no terminal:

curl https://invision.dreamvision.com.br/v1/chat/completions \
  -H "Authorization: Bearer $INVISION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen/qwen3.8-max",
    "messages": [
      { "role": "system", "content": "Você é um assistente objetivo." },
      { "role": "user", "content": "Explique o que é uma API em uma frase." }
    ]
  }'

Resposta (resumida):

{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "model": "...",
  "choices": [
    { "index": 0,
      "message": { "role": "assistant", "content": "Uma API é..." },
      "finish_reason": "stop" }
  ],
  "usage": { "prompt_tokens": 24, "completion_tokens": 18, "total_tokens": 42 }
}

O campo usage mostra exatamente quantos tokens foram cobrados.

3. Use com seu SDK favorito

Python

pip install openai

from openai import OpenAI
import os

client = OpenAI(base_url="https://invision.dreamvision.com.br/v1", api_key=os.environ["INVISION_API_KEY"])

resp = client.chat.completions.create(
    model="qwen/qwen3.8-max",
    messages=[{"role": "user", "content": "Olá!"}],
)
print(resp.choices[0].message.content)

JavaScript / TypeScript

npm install openai

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://invision.dreamvision.com.br/v1",
  apiKey: process.env.INVISION_API_KEY,
});

const resp = await client.chat.completions.create({
  model: "qwen/qwen3.8-max",
  messages: [{ role: "user", content: "Olá!" }],
});
console.log(resp.choices[0].message.content);

Ferramentas como LangChain, LlamaIndex, Vercel AI SDK, Cursor, Continue e n8n também funcionam: escolha o provedor “OpenAI compatível” e informe a URL base e a chave da Invision.

Referência

Endpoints

MétodoCaminhoPara que serve
GET/v1/modelsLista os modelos disponíveis, com janela de contexto e recursos.
POST/v1/chat/completionsChat no formato OpenAI. Suporta streaming, ferramentas, visão e JSON.
POST/v1/responsesFormato Responses da OpenAI, para agentes e saídas estruturadas.
POST/v1/messagesFormato Messages (Anthropic), para quem já usa o SDK do Claude.
POST/v1/models/{model}:generateContentFormato Gemini, para quem já usa o SDK do Google.

Parâmetros do chat

Principais campos aceitos por POST /v1/chat/completions:

CampoTipoDescrição
modelstringObrigatório. ID do modelo, ex.: um valor de GET /v1/models.
messagesarrayObrigatório. Lista de mensagens com role (system, user, assistant, tool) e content.
streambooleantrue para receber a resposta aos poucos (Server-Sent Events).
temperaturenumber0 a 2. Mais baixo = mais previsível; mais alto = mais criativo.
top_pnumberAlternativa à temperature. Use um ou outro.
max_tokensintegerLimite de tokens na resposta. Controla custo e tamanho.
stopstring | arraySequências que encerram a geração.
toolsarrayFunções que o modelo pode pedir para chamar.
tool_choicestring | objectauto, none, required ou uma função específica.
response_formatobject{ type: "json_object" } ou json_schema para forçar JSON.
stream_optionsobject{ include_usage: true } envia o consumo no último evento do stream.

Nem todo modelo aceita todos os campos. Consulte os recursos de cada um em GET /v1/models.

Streaming

Com "stream": true, a resposta chega em pedaços, no formato Server-Sent Events. Cada linha começa com data: e o fim é marcado por data: [DONE]. Ideal para chats, pois o usuário vê o texto sendo escrito.

stream = client.chat.completions.create(
    model="qwen/qwen3.8-max",
    messages=[{"role": "user", "content": "Conte uma história curta."}],
    stream=True,
    stream_options={"include_usage": True},
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

Ferramentas (function calling)

Descreva funções do seu sistema e o modelo decide quando chamá-las. Você executa a função e devolve o resultado numa mensagem com role: "tool".

{
  "model": "...",
  "messages": [{ "role": "user", "content": "Qual o clima em São Paulo?" }],
  "tools": [{
    "type": "function",
    "function": {
      "name": "clima_atual",
      "description": "Retorna o clima de uma cidade",
      "parameters": {
        "type": "object",
        "properties": { "cidade": { "type": "string" } },
        "required": ["cidade"]
      }
    }
  }]
}

Imagens (visão)

Modelos com visão aceitam imagens por URL pública ou em base64 dentro de content:

"messages": [{
  "role": "user",
  "content": [
    { "type": "text", "text": "O que tem nesta foto?" },
    { "type": "image_url", "image_url": { "url": "https://exemplo.com/foto.jpg" } }
  ]
}]

Saída em JSON

Use "response_format": { "type": "json_object" } e peça JSON na mensagem de sistema. Para um formato exato, use json_schema com o esquema desejado.

Formato Anthropic

Quem já usa o SDK do Claude aponta para a Invision sem reescrever nada:

from anthropic import Anthropic

client = Anthropic(base_url="https://invision.dreamvision.com.br", api_key=os.environ["INVISION_API_KEY"])
msg = client.messages.create(
    model="...", max_tokens=512,
    messages=[{"role": "user", "content": "Olá!"}],
)

Modelos (62)

Use o ID exatamente como abaixo no campo model. Lista ao vivo (atualizada em 2026-09-22); também disponível em GET /v1/models, e os preços por token em Preços.

qwen/qwen3.8-maxqwen/qwen3.7-maxqwen/qwen3.6-max-previewqwen/qwen3.7-plusqwen/qwen3.6-plusqwen/qwen3.6-flashqwen/qwen3.8-flash-nextanthropic/claude-fable-5-1anthropic/claude-fable-5anthropic/claude-opus-5anthropic/claude-opus-4.5anthropic/claude-sonnet-4.5anthropic/claude-sonnet-5anthropic/claude-opus-4.6anthropic/claude-opus-4.7anthropic/claude-opus-4.8anthropic/claude-sonnet-4.6anthropic/claude-haiku-4.5bytedance/doubao-seed-evolvingbytedance/doubao-seed-2.1-probytedance/doubao-seed-2.0-probytedance/doubao-seed-2.0-codebytedance/doubao-seed-2.1-turbobytedance/doubao-seed-2.0-litebytedance/doubao-seed-2.0-minideepseek/deepseek-v4-prodeepseek/deepseek-v4-flash-vision-expdeepseek/deepseek-v4-flashdeepseek/deepseek-v4.1-flashgoogle/gemini-3.1-pro-previewgoogle/gemini-3.5-flashgoogle/gemini-3.6-flashgoogle/gemini-2.5-progoogle/gemini-3.7-flashgoogle/gemini-3.8-flashgoogle/gemini-3-flash-previewgoogle/gemini-2.5-flashgoogle/gemini-3.1-flash-lite-previewgoogle/gemini-3.5-flash-litemoonshotai/kimi-k3openai/gpt-5.5-proopenai/gpt-5.4-proopenai/gpt-6-astraopenai/gpt-5.4openai/gpt-5.6-solopenai/gpt-5.5openai/gpt-5.3-codexopenai/gpt-5.4-miniopenai/gpt-5.6-terraopenai/gpt-5.4-nanoopenai/gpt-5.6-lunaglm/glm-5.3glm/glm-5.1glm/glm-5.2glm/glm-5-turboglm/glm-5v-turboglm/glm-5glm/glm-5.3-flashxai/grok-4.7xai/grok-4.6xai/grok-4.5xai/grok-4.3

Cobrança e saldo

  • Você paga por token de entrada (o que envia) e de saída (o que o modelo responde).
  • Os preços são definidos em dólar e cobrados em reais pela cotação do dia.
  • O débito acontece ao fim de cada requisição, com base no usage retornado.
  • Sem saldo, a API responde 402 insufficient_credit até a próxima recarga.
  • Recarga por Pix, confirmada automaticamente. Sem mensalidade, sem valor mínimo mensal.

Limites

Cada conta tem um limite de requisições por minuto para garantir estabilidade. Ao atingi-lo, a API responde 429 com o header Retry-After. Precisa de mais? Fale com a gente.

Erros

Erros sempre voltam em JSON:

{ "error": { "type": "invalid_api_key", "code": "invalid_api_key", "message": "Chave Invision inválida." } }
HTTPCódigoSignificadoO que fazer
400invalid_requestJSON malformado ou campo fora do formato.Revise o corpo da requisição.
401invalid_api_keyChave ausente, errada ou revogada.Confira o header Authorization: Bearer.
402insufficient_creditSaldo esgotado.Recarregue por Pix no painel.
404model_not_foundO model não existe no catálogo.Use um ID de GET /v1/models.
429rate_limitedMuitas requisições por minuto.Aguarde o Retry-After e use backoff.
500server_errorFalha inesperada do modelo.Tente de novo com backoff.
502upstream_unavailableFalha momentânea de roteamento.Tente de novo em alguns segundos.
503gateway_unavailableServiço temporariamente indisponível.Tente de novo; persiste? Fale com o suporte.
504upstream_timeoutO modelo demorou demais.Use streaming ou reduza max_tokens.

Boas práticas

  • Guarde a chave no servidor, nunca no navegador ou no app.
  • Use uma chave por projeto; se vazar, revogue só aquela.
  • Defina max_tokens para controlar custo.
  • Em erros 429, 5xx e 504, tente de novo com espera crescente (1s, 2s, 4s…).
  • Use streaming em respostas longas para evitar tempo esgotado.

Perguntas frequentes

Preciso mudar meu código?

Não. Se você usa o SDK da OpenAI, troque apenas a base_url para a da Invision e a chave. O resto continua igual.

Existe mensalidade?

Não. Você recarrega por Pix e paga só pelos tokens usados. O saldo não expira.

Meus dados são usados para treinar modelos?

A Invision não armazena o conteúdo das suas mensagens; guardamos apenas a contagem de tokens para cobrança.

Posso ter várias chaves?

Sim. Crie uma chave por projeto ou ambiente e revogue qualquer uma a qualquer momento no painel.

Como vejo meu consumo?

No painel, em Consumo, com tokens e valor gasto por modelo e por dia.