Aller au contenu
← Retour au blog

Connecte tes outils à l'API IA Reeva en cinq minutes

Par Équipe Reeva · 2 octobre 2026 · Mis à jour 15 octobre 2026

L’API de modèles d’IA Reeva parle OpenAI. Si un outil ou une bibliothèque peut parler à OpenAI, il peut parler à Reeva : tu changes deux paramètres et tu choisis un modèle. Voici comment.

Ce qu’il te faut

  • Une clé API Reeva. Choisis une offre sur la page API de modèles d’IA. Ta première clé est émise dès que le paiement PayPal est confirmé.
  • L’URL de base : https://api.reeva.me/v1
  • Un nom de modèle : deepseek-v4.1-flash pour le chat, le texte, le code et les agents, ou qwen-image pour les images.
  • Aussi disponible : qwen3.6-35b-a3b (Qwen 3.6), un modèle léger pour les tâches courtes et rapides.
  • Embeddings, sur Pro et Scale : nemotron-embed-8b pour les documents et nemotron-embed-8b-query pour les questions de recherche.

Crée une clé séparée pour chaque outil, avec un nom que tu reconnaîtras. Tu peux en avoir jusqu’à 10, et en révoquer une n’affecte pas les autres. Garde les clés dans une variable d’environnement, pas dans ton code. Les exemples ci-dessous lisent la clé depuis REEVA_API_KEY.

Python

Installe la bibliothèque officielle OpenAI avec pip install openai, puis pointe-la vers 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

Installe la bibliothèque avec npm install openai, puis enregistre ceci comme index.mjs et lance-le avec 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

Une requête 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."}]
  }'

Une image :

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
  }'

Une image prend plus longtemps à revenir qu’une réponse texte.

Outils de code

opencode, Cline, Continue, Aider et Roo Code peuvent tous utiliser un fournisseur compatible OpenAI. Chacun a son propre écran de paramètres ou son fichier de configuration, mais tu fixes les mêmes choses dans chaque :

  • Fournisseur : Compatible OpenAI, ou OpenAI avec une URL de base personnalisée
  • URL de base : https://api.reeva.me/v1
  • Clé API : ta clé Reeva
  • Modèle : deepseek-v4.1-flash pour le code, les agents, les éditions rapides et le chat

Dans Aider, par exemple, il faut deux variables d’environnement et un nom de modèle :

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 et Scale)

Pro et Scale incluent les embeddings sur /v1/embeddings, avec Nemotron-3-Embed-8B de nvidia. Le modèle a deux identifiants, et une recherche a besoin des deux : nemotron-embed-8b pour les documents que tu stockes et nemotron-embed-8b-query pour les questions avec lesquelles tu cherches. Utiliser un seul identifiant pour les deux ne renvoie aucune erreur, mais la recherche classe les résultats bien moins bien.

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))])

Les vecteurs ont 4096 dimensions. Une requête accepte jusqu’à 64 entrées et 120 000 caractères au total. Chaque entrée est vectorisée jusqu’à 4 096 tokens, et un texte plus long est coupé sans erreur (le usage.prompt_tokens de la réponse s’arrête à 4 096), alors découpe les longs documents en morceaux avant de les vectoriser. La limite de taille par requête de ton offre concerne le chat et ne s’applique pas ici, mais les tokens d’embedding comptent comme ceux du chat.

Limites et erreurs

Les tokens sont illimités, mais chaque offre fixe des limites par minute, de requêtes simultanées et par requête. Voici ce qui se passe quand tu en dépasses une.

  • HTTP 429, trop de requêtes par minute. La fenêtre se réinitialise chaque minute, donc réessaie dans la minute. Mini autorise 5 requêtes par minute, Starter 20, Pro 60 et Scale 120.
  • Trop de requêtes à la fois : la requête attend. Elle démarre dès qu’une de tes requêtes en cours se termine. Si aucune place ne se libère en deux minutes, elle est refusée avec HTTP 429. Mini lance 1 requête à la fois, Starter 2, Pro 4 et Scale 8.
  • HTTP 429, trop d’images dans une requête. Une requête peut demander jusqu’à 3 images (n) sur Mini, 10 sur Starter et 16 sur Pro et Scale. Un n plus grand est refusé immédiatement ; demandes-en moins.
  • Usage raisonnable. Un usage intensif ralentit tes requêtes. Seul un usage extrême maintenu sur une journée entière est mis en pause, le temps qu’il retombe. Pendant la pause, les requêtes reçoivent HTTP 429.
  • HTTP 400, request_too_large. La requête est plus grande que ce que ton offre autorise : 32k tokens sur Mini et 128k sur Starter et Pro. Scale n’a pas de limite propre, seulement le contexte de 256k tokens de DeepSeek v4.1. La taille compte ton prompt plus le max_tokens que tu demandes, et elle est vérifiée avant que la requête s’exécute. Raccourcis le prompt ou baisse max_tokens. Qwen 3.6 a sa propre limite de 32k tokens par requête sur toutes les offres ; une requête plus grande est aussi refusée avec HTTP 400. gpt-oss-20b a été retiré et les requêtes qui le nomment sont refusées. Utilise deepseek-v4.1-flash pour le code et les agents.
  • HTTP 401. La clé n’est pas valide, par exemple parce qu’elle a été révoquée.

Les SDK OpenAI pour Python et Node.js réessaient un 429 d’eux-mêmes, avec backoff.

Prochaines étapes

Choisis ton offre sur la page API de modèles d’IA, ou lis l’annonce de lancement pour la comparaison complète des offres.