Docs
Comece por aqui

Conecte sua IA à Invision em 3 passos.

Sem configurar nada na mão: você copia um texto, cola na sua IA e ela faz o resto.

  1. 1. Escolha sua ferramentaClique em Codex, Claude Code, Cursor ou outra abaixo.
  2. 2. Copie o promptUse o botão “Copiar prompt para a IA”.
  3. 3. Cole na sua IAEla configura, testa e avisa quando estiver pronto.
O que é MCP e Provedor?
MCP

Ensina sua IA a usar a Invision: documentação, modelos e preços ao vivo. Não precisa de chave.

Provedor

Faz sua IA usar os modelos pela Invision. Usa sua chave, guardada em INVISION_API_KEY.

Endereço do MCPhttps://invision.dreamvision.com.br/mcp
Passo 2

Ajuste e copie

Já deixamos tudo pronto. Mude só se quiser outro sistema ou modelo.

Depois de instalar, o Codex mostra o modelo qwen/qwen3.8-max-invision. O final "-invision" confirma que as chamadas passam pela Invision.

Dados do provedor

URL base
https://invision.dreamvision.com.br/v1
Variável da chave
INVISION_API_KEY
Modelo
qwen/qwen3.8-max
Formatos
OpenAI (chat e responses), Anthropic (messages) e Gemini

1. Guarde sua chave

Ainda não tem chave? Crie uma no painel. Ela nunca entra no prompt copiado.

texto
setx INVISION_API_KEY "cole_sua_chave_aqui"
# Feche e abra o terminal depois.

2. Teste a conexão

bash
curl.exe https://invision.dreamvision.com.br/v1/models -H "Authorization: Bearer $env:INVISION_API_KEY"

Configuração manual

texto
# %USERPROFILE%/.codex/config.toml
model = "qwen/qwen3.8-max-invision"
model_provider = "invision"

[model_providers.invision]
name = "Invision"
base_url = "https://invision.dreamvision.com.br/v1"
env_key = "INVISION_API_KEY"
wire_api = "responses"

[mcp_servers.invision]
url = "https://invision.dreamvision.com.br/mcp"

# ou pelo terminal:
# codex mcp add invision --url https://invision.dreamvision.com.br/mcp

Se deu errado

  • 401 invalid_api_key: a variável INVISION_API_KEY não existe ou está errada. No Windows, feche e abra o terminal depois do setx.
  • 404: a URL base precisa terminar em /v1 (no Claude Code, use sem o /v1).
  • model_not_found: use um ID exato da lista de modelos.
  • O MCP não aparece: reinicie a ferramenta e confira se o endereço é exatamente https://invision.dreamvision.com.br/mcp.
  • 402 insufficient_credit: recarregue o saldo no painel.
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:

bash
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):

json
{
  "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

bash
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

bash
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.

python
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".

json
{
  "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:

texto
"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:

python
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.
  • A conexão e a lista de modelos funcionam sem saldo. Ao tentar gerar uma resposta, a API retorna 402 insufficient_credit com a orientação para recarregar por Pix na Invision.
  • 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

Todo erro volta em JSON, em português, com um code fixo da Invision e o request_id da chamada (o mesmo do header X-Invision-Request-Id). Informe esse número ao suporte.

Tipo da falha nos cabeçalhos

Toda falha também informa, nos cabeçalhos, o tipo e a origem, para seu código decidir sozinho se tenta de novo:

  • X-Invision-Error-Kind: auth (chave inválida), quota (sem saldo ou limite, não repita), rate_limit (espere o Retry-After), transient (instabilidade passageira, tente de novo) ou client (corrija a requisição).
  • X-Invision-Error-Origin: account (sua conta), provider (fornecedor do modelo), request (sua requisição) ou invision.
  • X-Invision-Retryable: true quando repetir pode resolver; nesse caso o Retry-After diz quantos segundos esperar.

Formato OpenAI (/v1/chat/completions, /v1/responses)

json
{
  "error": {
    "message": "Chave Invision inválida.",
    "type": "authentication_error",
    "code": "invalid_api_key",
    "param": null,
    "doc_url": "https://invision.dreamvision.com.br/docs#erros"
  },
  "request_id": "9b1c…"
}

Formato Anthropic (/v1/messages)

json
{
  "type": "error",
  "error": { "type": "authentication_error", "message": "Chave Invision inválida." },
  "request_id": "9b1c…"
}

Use o campo code no seu programa, não o texto da mensagem: o texto pode mudar, o código não. Erros 429, 502, 503 e 504 podem ser repetidos com espera crescente; os demais precisam de correção antes.

HTTPCódigoSignificadoO que fazer
400invalid_requestJSON malformado ou campo fora do formato.Revise o corpo; o campo com problema vem em param.
400context_length_exceededA conversa passou do limite de contexto do modelo.Reduza o histórico ou use um modelo com contexto maior.
400content_filteredO modelo recusou o conteúdo enviado.Reformule o pedido ou troque de modelo.
401invalid_api_keyChave ausente, errada ou revogada.Confira o header Authorization: Bearer.
402insufficient_creditCréditos insuficientes na Invision.Recarregue por Pix no painel.
402key_budget_exceededA chave atingiu o limite mensal definido por você.Aumente o limite da chave no painel ou use outra.
403forbiddenA chave não tem permissão para esta ação.Use uma chave com acesso ao recurso.
404model_not_foundO model não existe no catálogo.Use um ID de GET /v1/models.
404not_foundEndpoint inexistente na API.Confira a URL base e o caminho.
405method_not_allowedMétodo HTTP não suportado.Use GET ou POST.
413payload_too_largeRequisição acima de 25 MB.Reduza imagens ou divida o pedido.
429rate_limitedMuitas requisições por minuto (120 por chave).Aguarde o Retry-After e use backoff.
502upstream_unavailableFalha momentânea no modelo.Tente de novo em alguns segundos.
503gateway_unavailableServiço temporariamente indisponível.Tente de novo; persiste? Fale com o suporte.
503gateway_unconfiguredServiço em manutenção.Tente mais tarde e acompanhe /status.
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.