Início Modelos Playground Documentação Começar grátis

Documentação MangabaRouter

MangabaRouter é uma interface frontend que utiliza a API OpenRouter para dar acesso unificado a mais de 300 modelos de inteligência artificial de diferentes provedores.

Compatibilidade total com OpenAI SDK. MangabaRouter usa exatamente o mesmo formato de requisição da API OpenAI — basta trocar a URL base e adicionar sua chave OpenRouter.

Base URL

Todas as requisições devem ser feitas para:

url
https://openrouter.ai/api/v1

Autenticação

Todas as requisições requerem um header de autorização com sua chave API OpenRouter.

http
Authorization: Bearer sk-or-v1-sua-chave-aqui
Segurança: Nunca exponha sua chave API em código público. No MangabaRouter Playground, a chave é armazenada apenas no localStorage do seu navegador.

Também é recomendado incluir headers de identificação:

http
HTTP-Referer: https://seusite.com
X-Title: Nome do Seu App

Quickstart

Faça sua primeira requisição em menos de 2 minutos.

python
from openai import OpenAI

client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key="sk-or-v1-sua-chave",
)

response = client.chat.completions.create(
    model="openai/gpt-4o-mini",
    messages=[
        {"role": "user", "content": "Olá! Qual é a capital do Brasil?"}
    ]
)

print(response.choices[0].message.content)

Chat Completions

O endpoint principal para interações conversacionais com modelos de linguagem.

http
POST https://openrouter.ai/api/v1/chat/completions

Parâmetros do Body

ParâmetroTipoDescrição
modelstring (obr.)ID do modelo. Ex: openai/gpt-4o
messagesarray (obr.)Array de mensagens com role e content
streambooleanSe true, retorna chunks SSE em tempo real
temperaturenumber (0-2)Controla aleatoriedade. 0 = determinístico
max_tokensintegerLimite de tokens na resposta
top_pnumber (0-1)Nucleus sampling

Exemplo Completo

javascript
const response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'HTTP-Referer': 'https://dheiver2.github.io/mangabarouter',
    'X-Title': 'MangabaRouter',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: 'anthropic/claude-3.5-sonnet',
    messages: [
      { role: 'system', content: 'Você é um assistente útil.' },
      { role: 'user', content: 'Explique machine learning em 2 frases.' }
    ],
    temperature: 0.7,
    max_tokens: 1024
  })
});

const data = await response.json();
console.log(data.choices[0].message.content);

Endpoint de Modelos

Liste todos os modelos disponíveis. Este endpoint é público e não requer autenticação.

http
GET https://openrouter.ai/api/v1/models
bash
curl https://openrouter.ai/api/v1/models | jq '.data[0]'

Resposta

json
{
  "id": "openai/gpt-4o",
  "name": "GPT-4o",
  "description": "OpenAI's most capable model",
  "context_length": 128000,
  "pricing": {
    "prompt": "0.000005",
    "completion": "0.000015"
  }
}

Streaming

O streaming permite receber a resposta do modelo em tempo real, palavra por palavra, ao invés de esperar a resposta completa.

Recomendado para produção: O streaming melhora muito a experiência do usuário em aplicações de chat.
javascript
const response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: 'openai/gpt-4o-mini',
    messages: [{ role: 'user', content: 'Conte uma história curta' }],
    stream: true
  })
});

const reader = response.body.getReader();
const decoder = new TextDecoder();

while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  const lines = decoder.decode(value).split('\n');
  for (const line of lines) {
    if (!line.startsWith('data: ') || line === 'data: [DONE]') continue;
    try {
      const json = JSON.parse(line.slice(6));
      const delta = json.choices?.[0]?.delta?.content;
      if (delta) process.stdout.write(delta);
    } catch(e) {}
  }
}

Tratamento de Erros

A API retorna erros padrão HTTP com corpo JSON descritivo.

CódigoErroDescrição
400Bad RequestParâmetros inválidos
401UnauthorizedChave API inválida ou ausente
402Payment RequiredCréditos insuficientes
429Too Many RequestsLimite de taxa excedido
500Server ErrorErro interno do servidor
503Service UnavailableModelo temporariamente indisponível
javascript
try {
  const res = await fetch('...', { ... });
  if (!res.ok) {
    const error = await res.json();
    throw new Error(error.error?.message || `HTTP ${res.status}`);
  }
  const data = await res.json();
} catch (err) {
  console.error('Erro API:', err.message);
}

SDK Python

Use o SDK oficial da OpenAI com a URL base do OpenRouter.

bash
pip install openai
python
from openai import OpenAI

client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key="sk-or-v1-sua-chave",
    default_headers={
        "HTTP-Referer": "https://meusite.com",
        "X-Title": "Meu App"
    }
)

# Streaming
stream = client.chat.completions.create(
    model="anthropic/claude-3.5-sonnet",
    messages=[{"role": "user", "content": "Olá!"}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

SDK JavaScript / TypeScript

bash
npm install openai
typescript
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://openrouter.ai/api/v1',
  apiKey: process.env.OPENROUTER_API_KEY,
  defaultHeaders: {
    'HTTP-Referer': 'https://meusite.com',
    'X-Title': 'Meu App',
  },
});

const completion = await client.chat.completions.create({
  model: 'openai/gpt-4o',
  messages: [{ role: 'user', content: 'Olá mundo!' }],
});

console.log(completion.choices[0].message.content);

cURL

bash
curl https://openrouter.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "HTTP-Referer: https://meusite.com" \
  -H "X-Title: Meu App" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [
      {"role": "user", "content": "Qual é a capital do Brasil?"}
    ]
  }'

Listar modelos

bash
curl https://openrouter.ai/api/v1/models | python3 -m json.tool