Ir para o conteúdo
← Voltar ao blog

Ligue as suas ferramentas à API Reeva em cinco minutos

Por Equipa Reeva · 2 de outubro de 2026 · Atualizado 15 de outubro de 2026

A API de modelos de IA da Reeva fala a linguagem da OpenAI. Se uma ferramenta ou biblioteca consegue conversar com OpenAI, consegue conversar com Reeva: mudam-se duas definições e escolhe-se um modelo. Veja como.

O que é preciso

  • Uma chave de API Reeva AI. Escolha um plano na página API de modelos de IA. A primeira chave é emitida logo que o pagamento no PayPal é processado.
  • O URL base: https://api.reeva.me/v1
  • Um nome de modelo: deepseek-v4.1-flash para chat, texto, código e agentes, ou qwen-image para imagens.
  • Também disponível: qwen3.6-35b-a3b (Qwen 3.6), um modelo leve para tarefas curtas e rápidas.
  • Embeddings, no Pro e no Scale: nemotron-embed-8b para documentos e nemotron-embed-8b-query para perguntas de pesquisa.

Crie uma chave separada para cada ferramenta, com um nome que reconheça. Pode ter até 10, e revogar uma não afeta as outras. Guarde as chaves numa variável de ambiente, não no seu código. Os exemplos abaixo leem a chave de REEVA_API_KEY.

Python

Instale a biblioteca oficial da OpenAI com pip install openai, depois aponte-a para a Reeva:

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.reeva.me/v1",
    api_key=os.environ["REEVA_API_KEY"],
)

r = client.chat.completions.create(
    model="deepseek-v4.1-flash",
    messages=[{"role": "user",
               "content": "Summarize this email in three bullets"}],
)
print(r.choices[0].message.content)

Node.js

Instale a biblioteca com npm install openai, depois guarde isto como index.mjs e execute com node index.mjs:

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.reeva.me/v1",
  apiKey: process.env.REEVA_API_KEY,
});

const r = await client.chat.completions.create({
  model: "deepseek-v4.1-flash",
  messages: [{ role: "user", content: "Write a Python function that checks a number with the Luhn algorithm." }],
});
console.log(r.choices[0].message.content);

curl

Um pedido de chat:

curl https://api.reeva.me/v1/chat/completions \
  -H "Authorization: Bearer $REEVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4.1-flash",
    "messages": [{"role": "user", "content": "Translate to French: Same-day repairs, guaranteed."}]
  }'

Uma imagem:

curl https://api.reeva.me/v1/images/generations \
  -H "Authorization: Bearer $REEVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen-image",
    "prompt": "A winter campaign banner in pink and purple, no text",
    "n": 1
  }'

Uma imagem demora mais tempo a chegar do que uma resposta de texto.

Ferramentas de programação

opencode, Cline, Continue, Aider e Roo Code conseguem usar um fornecedor compatível com OpenAI. Cada uma tem o seu próprio ecrã de definições ou ficheiro de configuração, mas definem-se as mesmas coisas em cada:

  • Fornecedor: Compatível com OpenAI, ou OpenAI com um URL base personalizado
  • URL base: https://api.reeva.me/v1
  • Chave de API: a sua chave Reeva
  • Modelo: deepseek-v4.1-flash para programação, agentes, edições rápidas e chat

No Aider, por exemplo, são duas variáveis de ambiente e um nome de modelo:

export OPENAI_API_BASE=https://api.reeva.me/v1
export OPENAI_API_KEY=$REEVA_API_KEY
aider --model openai/deepseek-v4.1-flash

Embeddings (Pro e Scale)

O Pro e o Scale incluem embeddings em /v1/embeddings, com o Nemotron-3-Embed-8B da nvidia. O modelo tem dois ids, e uma pesquisa precisa dos dois: nemotron-embed-8b para os documentos que guarda e nemotron-embed-8b-query para as perguntas com que pesquisa. Usar um só id para os dois não dá erro, mas a pesquisa ordena os resultados muito pior.

docs = ["Invoices are due 30 days after issue.",
        "Refunds go back to the original card."]
d = client.embeddings.create(model="nemotron-embed-8b", input=docs)
q = client.embeddings.create(model="nemotron-embed-8b-query",
                             input="When is an invoice due?")

# The vectors are normalized: a dot product is the cosine similarity.
qv = q.data[0].embedding
scores = [sum(a * b for a, b in zip(qv, x.embedding)) for x in d.data]
print(docs[scores.index(max(scores))])

Os vetores têm 4096 dimensões. Um pedido leva até 64 entradas e 120 000 caracteres no total. Cada entrada é processada até 4096 tokens, e o texto mais longo é cortado sem erro (o usage.prompt_tokens da resposta fica nos 4096), por isso divida os documentos longos em partes antes de criar os embeddings. O limite de tamanho por pedido do seu plano é para o chat e não se aplica aqui, mas os tokens de embeddings contam tal como os do chat.

Limites e erros

Os tokens são ilimitados, mas cada plano define limites por minuto, de pedidos de uma vez e por pedido. Eis o que acontece quando se ultrapassa um deles.

  • HTTP 429, demasiados pedidos por minuto. A janela é reposta a cada minuto, por isso tente novamente dentro de um minuto. Mini permite 5 pedidos por minuto, Starter 20, Pro 60 e Scale 120.
  • Demasiados pedidos de uma vez: o pedido espera. Começa logo que um dos seus próprios pedidos em execução terminar. Se nenhuma vaga ficar livre em dois minutos, é recusado com HTTP 429. Mini executa 1 pedido de uma vez, Starter 2, Pro 4 e Scale 8.
  • HTTP 429, demasiadas imagens num pedido. Um pedido pode pedir até 3 imagens (n) no Mini, 10 no Starter e 16 no Pro e no Scale. Um n maior é recusado de imediato; peça menos.
  • Utilização razoável. A utilização intensa abranda os seus pedidos. Só a utilização extrema mantida durante um dia inteiro fica em pausa até diminuir. Durante a pausa, os pedidos recebem HTTP 429.
  • HTTP 400, request_too_large. O pedido é maior do que o seu plano permite: 32k tokens no Mini e 128k no Starter e Pro. O Scale não tem limite próprio, apenas o contexto de 256k tokens do DeepSeek v4.1. O tamanho conta o seu prompt mais max_tokens que solicita, e é verificado antes de o pedido ser executado. Encurte o prompt ou baixe max_tokens. O Qwen 3.6 tem um limite próprio de 32k tokens por pedido em todos os planos; um pedido maior também é recusado com HTTP 400. O gpt-oss-20b foi retirado e os pedidos que o indicam são recusados. Use o deepseek-v4.1-flash para código e agentes.
  • HTTP 401. A chave não é válida, por exemplo porque foi revogada.

Os SDKs da OpenAI para Python e Node.js tentam novamente automaticamente em 429, com backoff.

Próximos passos

Escolha o seu plano na página API de modelos de IA, ou leia o anúncio de lançamento para a comparação completa de planos.