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. Escolha sua ferramentaClique em Codex, Claude Code, Cursor ou outra abaixo.
- 2. Copie o promptUse o botão “Copiar prompt para a IA”.
- 3. Cole na sua IAEla configura, testa e avisa quando estiver pronto.
O que é MCP e Provedor?
Ensina sua IA a usar a Invision: documentação, modelos e preços ao vivo. Não precisa de chave.
Faz sua IA usar os modelos pela Invision. Usa sua chave, guardada em INVISION_API_KEY.
https://invision.dreamvision.com.br/mcpAjuste 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.
setx INVISION_API_KEY "cole_sua_chave_aqui"
# Feche e abra o terminal depois.
2. Teste a conexão
curl.exe https://invision.dreamvision.com.br/v1/models -H "Authorization: Bearer $env:INVISION_API_KEY"
Configuração manual
# %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_KEYnão existe ou está errada. No Windows, feche e abra o terminal depois dosetx. - 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.
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.
https://invision.dreamvision.com.br/v1Toda 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.
1. Crie sua chave
- Crie sua conta com e-mail ou Google.
- No painel, faça uma recarga por Pix. O crédito cai em segundos.
- Em Chaves de API, clique em Nova chave e copie o valor. Ele aparece uma única vez.
- 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.
Endpoints
| Método | Caminho | Para que serve |
|---|---|---|
| GET | /v1/models | Lista os modelos disponíveis, com janela de contexto e recursos. |
| POST | /v1/chat/completions | Chat no formato OpenAI. Suporta streaming, ferramentas, visão e JSON. |
| POST | /v1/responses | Formato Responses da OpenAI, para agentes e saídas estruturadas. |
| POST | /v1/messages | Formato Messages (Anthropic), para quem já usa o SDK do Claude. |
| POST | /v1/models/{model}:generateContent | Formato Gemini, para quem já usa o SDK do Google. |
Parâmetros do chat
Principais campos aceitos por POST /v1/chat/completions:
| Campo | Tipo | Descrição |
|---|---|---|
model | string | Obrigatório. ID do modelo, ex.: um valor de GET /v1/models. |
messages | array | Obrigatório. Lista de mensagens com role (system, user, assistant, tool) e content. |
stream | boolean | true para receber a resposta aos poucos (Server-Sent Events). |
temperature | number | 0 a 2. Mais baixo = mais previsível; mais alto = mais criativo. |
top_p | number | Alternativa à temperature. Use um ou outro. |
max_tokens | integer | Limite de tokens na resposta. Controla custo e tamanho. |
stop | string | array | Sequências que encerram a geração. |
tools | array | Funções que o modelo pode pedir para chamar. |
tool_choice | string | object | auto, none, required ou uma função específica. |
response_format | object | { type: "json_object" } ou json_schema para forçar JSON. |
stream_options | object | { 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.3Cobranç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
usageretornado. - A conexão e a lista de modelos funcionam sem saldo. Ao tentar gerar uma resposta, a API retorna
402 insufficient_creditcom 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)
{
"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)
{
"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.
| HTTP | Código | Significado | O que fazer |
|---|---|---|---|
| 400 | invalid_request | JSON malformado ou campo fora do formato. | Revise o corpo; o campo com problema vem em param. |
| 400 | context_length_exceeded | A conversa passou do limite de contexto do modelo. | Reduza o histórico ou use um modelo com contexto maior. |
| 400 | content_filtered | O modelo recusou o conteúdo enviado. | Reformule o pedido ou troque de modelo. |
| 401 | invalid_api_key | Chave ausente, errada ou revogada. | Confira o header Authorization: Bearer. |
| 402 | insufficient_credit | Créditos insuficientes na Invision. | Recarregue por Pix no painel. |
| 402 | key_budget_exceeded | A chave atingiu o limite mensal definido por você. | Aumente o limite da chave no painel ou use outra. |
| 403 | forbidden | A chave não tem permissão para esta ação. | Use uma chave com acesso ao recurso. |
| 404 | model_not_found | O model não existe no catálogo. | Use um ID de GET /v1/models. |
| 404 | not_found | Endpoint inexistente na API. | Confira a URL base e o caminho. |
| 405 | method_not_allowed | Método HTTP não suportado. | Use GET ou POST. |
| 413 | payload_too_large | Requisição acima de 25 MB. | Reduza imagens ou divida o pedido. |
| 429 | rate_limited | Muitas requisições por minuto (120 por chave). | Aguarde o Retry-After e use backoff. |
| 502 | upstream_unavailable | Falha momentânea no modelo. | Tente de novo em alguns segundos. |
| 503 | gateway_unavailable | Serviço temporariamente indisponível. | Tente de novo; persiste? Fale com o suporte. |
| 503 | gateway_unconfigured | Serviço em manutenção. | Tente mais tarde e acompanhe /status. |
| 504 | upstream_timeout | O 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_tokenspara 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.