Documentation API

Construire sur la passerelle Netaix

Une adresse, une clé, sept routes compatibles avec les API d'OpenAI et d'Anthropic. Cette documentation contient tout ce qu'il faut pour brancher un outil ou bâtir une application sans nous écrire.

Une adresse, sept routes

La passerelle Netaix expose une API compatible avec celle d'OpenAI et, pour trois routes, avec celle d'Anthropic. Vous changez l'adresse de base et la clé dans votre code existant, le reste ne bouge pas.

Adresse de base
https://app.netaix.fr/v1

Sept routes sont ouvertes. Elles sont décrites une par une dans la référence de l'API.

RouteÀ quoi elle sert
GET /v1/modelsLa liste des modèles et des niveaux que votre clé peut appeler
POST /v1/chat/completionsLa conversation, au format OpenAI. Flux, outils et images
POST /v1/messagesLa conversation, au format Anthropic. Flux, outils et images
POST /v1/messages/count_tokensUne estimation du nombre de jetons d'entrée, sans appeler de modèle
POST /v1/embeddingsDes vecteurs à partir de texte
POST /v1/moderationsUn verdict de modération sur un texte
GET /v1/netaix/usageLa consommation et les plafonds de la clé qui appelle

Trois choses avant le premier appel

  1. Un compte. Un compte Développeur n'a pas d'abonnement : vous ne payez que ce que vous consommez. L'ouverture du compte se fait depuis la page Développeurs.
  2. Une clé. Vous la générez dans l'application Netaix. Elle n'est affichée qu'une seule fois. Voir Authentification et clés.
  3. Des crédits. La première recharge doit être payée avant le premier appel. Sans elle, la passerelle répond 402 avec le code topup_required. Il n'y a ni essai gratuit, ni crédit offert.
À savoir

Les prix, les paliers de recharge et la valeur du crédit sont sur la page Développeurs. Ils ne sont pas recopiés ici pour qu'il n'y ait jamais deux chiffres différents sur le site.

Votre premier appel

Dans les exemples qui suivent, VOTRE_CLE_NETAIX est un remplaçant : mettez-y la clé générée dans l'application, de préférence par une variable d'environnement plutôt qu'écrite dans le code.

curl
export NETAIX_API_KEY="VOTRE_CLE_NETAIX"

curl https://app.netaix.fr/v1/chat/completions \
  -H "Authorization: Bearer $NETAIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "netaix-balanced",
    "messages": [
      {"role": "user", "content": "Résume ce compte rendu en cinq lignes."}
    ]
  }'
Python, SDK OpenAI
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://app.netaix.fr/v1",
    api_key=os.environ["NETAIX_API_KEY"],
)

reponse = client.chat.completions.create(
    model="netaix-balanced",
    messages=[{"role": "user", "content": "Bonjour"}],
)
print(reponse.choices[0].message.content)
print(reponse.model)          # le modèle réellement servi
print(reponse.usage)          # jetons d'entrée, de sortie, part en cache
Node, SDK OpenAI
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://app.netaix.fr/v1",
  apiKey: process.env.NETAIX_API_KEY,
});

const reponse = await client.chat.completions.create({
  model: "netaix-balanced",
  messages: [{ role: "user", content: "Bonjour" }],
});
console.log(reponse.choices[0].message.content);
SDK Anthropic
export ANTHROPIC_BASE_URL=https://app.netaix.fr
export ANTHROPIC_API_KEY=VOTRE_CLE_NETAIX

# Le SDK ajoute lui-même /v1/messages : l'adresse de base n'inclut pas /v1.

Claude Code sur la passerelle

La route POST /v1/messages suit le format de l'API d'Anthropic : messages, consigne système en blocs, définitions d'outils, blocs tool_use et tool_result, images, temperature, max_tokens, top_p, stop_sequences et flux d'événements nommés. Un client écrit pour ce format, Claude Code compris, fonctionne sans adaptation, y compris en usage agent.

Variables d'environnement du client
export ANTHROPIC_BASE_URL=https://app.netaix.fr
export ANTHROPIC_AUTH_TOKEN=VOTRE_CLE_NETAIX
export ANTHROPIC_MODEL=netaix-powerful
export ANTHROPIC_SMALL_FAST_MODEL=netaix-fast
  • L'adresse de base n'inclut pas /v1 : le client ajoute le chemin lui-même.
  • La clé peut voyager dans l'un ou l'autre en-tête. ANTHROPIC_AUTH_TOKEN donne un Authorization: Bearer, ANTHROPIC_API_KEY donne un x-api-key : les deux sont acceptés. Si les deux en-têtes arrivent, c'est x-api-key qui est lu.
  • Le modèle peut être un niveau Netaix (netaix-auto, netaix-fast, netaix-balanced, netaix-powerful, netaix-reasoning) ou un identifiant rendu par GET /v1/models. Un niveau évite d'avoir à suivre les noms de modèles.
  • Les noms de ces variables appartiennent au client, pas à la passerelle : vérifiez-les dans la documentation de la version que vous utilisez.

La route POST /v1/messages/count_tokens, que ces clients appellent pour gérer leur fenêtre de contexte, est ouverte. Elle rend une estimation du nombre de jetons d'entrée, calculée par la passerelle : aucun modèle n'est appelé et l'appel n'est pas décompté en crédits.

Ce que vous recevez

Réponse, format OpenAI
{
  "id": "chatcmpl-6f1c0c3a9b2e4d7f8a1b2c3d",
  "object": "chat.completion",
  "created": 1793664000,
  "model": "claude-sonnet-4-5",
  "choices": [
    {
      "index": 0,
      "message": {"role": "assistant", "content": "Bonjour, comment puis-je aider ?"},
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 18,
    "completion_tokens": 9,
    "total_tokens": 27,
    "prompt_tokens_details": {"cached_tokens": 0},
    "cache_write_tokens": 0
  }
}

Le champ model porte le modèle réellement servi. Quand vous demandez un niveau comme netaix-balanced, c'est là que vous lisez le choix de la passerelle. Il n'y a pas d'en-tête de réponse à lire pour cela.

Où aller ensuite