Aller au contenu principal
Moon AI prépare sa plus grosse mise à jour 🚀 — la bêta ouverte reste disponible. Accédez à la bêta
Introduction

Documentation Moon AI

Introduction

L'API Moon AI vous permet d'intégrer l'intelligence artificielle multi-modèles directement dans vos applications. Avec Moon Guard pour la protection des donnees et Moon Auto pour le routage intelligent, vous beneficiez d'une couche d'abstraction unique au-dessus des principaux fournisseurs d'IA.

Base URL — Toutes les requetes API utilisent le base URL suivant :
https://api.moon-ai.fr/v1

Concepts cles

ConceptDescription
Moon GuardPipeline de protection des donnees en 5 couches. Anonymise automatiquement les PII avant l'envoi aux modeles, puis restaure les donnees dans la reponse.
Moon AutoMoteur de routage semantique. Analyse chaque requete et selectionne automatiquement le modele le plus adapte (code, redaction, recherche, etc.).
Zero Data RetentionAucune donnee utilisateur n'est conservee par les fournisseurs tiers. Accords ZDR signes avec OpenAI, Anthropic, Google, OpenRouter et Fireworks AI.

Authentification

L'API Moon AI utilise des cles API pour l'authentification. Vous pouvez generer vos cles dans le dashboard Moon AI.

Incluez votre cle API dans le header Authorization de chaque requete :

curl https://api.moon-ai.fr/v1/chat/completions \
  -H "Authorization: Bearer mk_live_votre_cle_api" \
  -H "Content-Type: application/json"
from moonai import MoonAI

client = MoonAI(
    api_key="mk_live_votre_cle_api"
)
import MoonAI from '@moonai/sdk';

const client = new MoonAI({
  apiKey: 'mk_live_votre_cle_api'
});
Ne partagez jamais votre cle API. Utilisez des variables d'environnement en production. Les cles commencant par mk_test_ sont limitees au mode sandbox.

Types de cles

PrefixeEnvironnementDescription
mk_live_ProductionAcces complet a l'API, facturation active
mk_test_SandboxModeles simules, pas de facturation

Quick Start

Envoyez votre premiere requete a Moon AI en moins de 2 minutes.

1. Installez le SDK

pip install moonai
npm install @moonai/sdk
composer require moonai/moonai-php

2. Envoyez une requete

from moonai import MoonAI

client = MoonAI(api_key="mk_live_votre_cle_api")

response = client.chat.completions.create(
    model="auto",  # Moon Auto selectionne le meilleur modele
    messages=[
        {"role": "user", "content": "Explique-moi Moon Guard en 3 phrases."}
    ],
    guard=True  # Active Moon Guard
)

print(response.choices[0].message.content)
import MoonAI from '@moonai/sdk';

const client = new MoonAI({ apiKey: 'mk_live_votre_cle_api' });

const response = await client.chat.completions.create({
  model: 'auto',
  messages: [
    { role: 'user', content: 'Explique-moi Moon Guard en 3 phrases.' }
  ],
  guard: true
});

console.log(response.choices[0].message.content);
curl -X POST https://api.moon-ai.fr/v1/chat/completions \
  -H "Authorization: Bearer mk_live_votre_cle_api" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "auto",
    "messages": [
      {"role": "user", "content": "Explique-moi Moon Guard en 3 phrases."}
    ],
    "guard": true
  }'

3. Reponse

200 application/json
{
  "id": "chat_abc123def456",
  "object": "chat.completion",
  "model": "claude-opus-4-6",
  "routed_by": "moon-auto",
  "guard": {
    "enabled": true,
    "pii_detected": 0,
    "pii_anonymized": 0
  },
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "Moon Guard est un pipeline de protection..."
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 24,
    "completion_tokens": 87,
    "total_tokens": 111
  }
}

Erreurs & Codes

L'API utilise les codes HTTP standards. Les reponses d'erreur incluent un objet JSON avec le detail.

CodeTypeDescription
200OKRequete traitee avec succes
400Bad RequestParametres invalides ou manquants
401UnauthorizedCle API manquante ou invalide
403ForbiddenAcces refuse (plan insuffisant)
429Rate LimitedTrop de requetes, reessayez apres le delai indique
500Server ErrorErreur interne, contactez le support
503UnavailableService temporairement indisponible
Exemple d'erreur
{
  "error": {
    "type": "invalid_request_error",
    "message": "Le parametre 'model' est requis.",
    "code": "missing_parameter",
    "param": "model"
  }
}

Rate Limits

Les limites dependent de votre plan. Les headers de reponse incluent les informations de quota.

PlanRequetes/minTokens/minRequetes/jour
Free2040 000200
Pro120400 00010 000
Team5002 000 00050 000
EnterpriseCustomCustomIllimite

Headers de reponse

HeaderDescription
X-RateLimit-LimitNombre max de requetes par minute
X-RateLimit-RemainingRequetes restantes dans la fenetre
X-RateLimit-ResetTimestamp Unix de la reinitialisation
Retry-AfterSecondes a attendre (si 429)

Chat Completions

POST /v1/chat/completions

Cree une completion de chat a partir d'une liste de messages. Supporte le routage Moon Auto et la protection Moon Guard.

Parametres du body

ParametreTypeDescription
model requisstringID du modele ou "auto" pour Moon Auto. Ex: "claude-opus-4-6", "gpt-5.4", "moon-1"
messages requisarrayListe des messages. Chaque message a un role ("system", "user", "assistant") et un content.
guardbooleanActive Moon Guard pour anonymiser les PII. Default: true
streambooleanActive le streaming SSE. Default: false
temperaturenumberCreativite du modele (0.0 a 2.0). Default: 1.0
max_tokensintegerNombre max de tokens a generer. Default: depend du modele
top_pnumberNucleus sampling (0.0 a 1.0). Default: 1.0
stopstring | arraySequences d'arret. Max 4 sequences.
response = client.chat.completions.create(
    model="auto",
    messages=[
        {"role": "system", "content": "Tu es un assistant technique."},
        {"role": "user", "content": "Comment deployer une app Next.js sur Vercel ?"}
    ],
    guard=True,
    temperature=0.7,
    max_tokens=2048
)
const response = await client.chat.completions.create({
  model: 'auto',
  messages: [
    { role: 'system', content: 'Tu es un assistant technique.' },
    { role: 'user', content: 'Comment deployer une app Next.js sur Vercel ?' }
  ],
  guard: true,
  temperature: 0.7,
  maxTokens: 2048
});
curl -X POST https://api.moon-ai.fr/v1/chat/completions \
  -H "Authorization: Bearer mk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "auto",
    "messages": [
      {"role": "system", "content": "Tu es un assistant technique."},
      {"role": "user", "content": "Comment deployer une app Next.js sur Vercel ?"}
    ],
    "guard": true,
    "temperature": 0.7,
    "max_tokens": 2048
  }'

Streaming

Activez le streaming pour recevoir la reponse token par token via Server-Sent Events (SSE). Ideal pour les interfaces temps reel.

stream = client.chat.completions.create(
    model="auto",
    messages=[{"role": "user", "content": "Ecris un poeme sur la lune."}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")
const stream = await client.chat.completions.create({
  model: 'auto',
  messages: [{ role: 'user', content: 'Ecris un poeme sur la lune.' }],
  stream: true
});

for await (const chunk of stream) {
  const content = chunk.choices[0]?.delta?.content;
  if (content) process.stdout.write(content);
}
Le stream envoie des evenements SSE au format data: {json}\n\n. Le dernier evenement est data: [DONE]. Moon Guard fonctionne aussi en mode streaming — les PII sont anonymisees avant le premier chunk.

Models

GET /v1/models

Liste tous les modeles disponibles sur la plateforme Moon AI.

ModeleFournisseurSpecialiteContext
autoMoon AutoRoutage intelligent automatique-
moon-1Moon AIRedaction, creativite, francais128K
claude-opus-4-6AnthropicCode, raisonnement avance200K
claude-sonnet-4-6AnthropicPolyvalent, rapide200K
gpt-5.4OpenAIDocuments, analyse128K
gpt-4.1OpenAIPolyvalent128K
gemini-2.5-proGoogleMultimodal, contexte long1M
perplexity-sonarPerplexityRecherche web temps reel128K
Zero Data Retention — Tous les fournisseurs tiers operent sous contrat ZDR. Aucune donnee n'est stockee apres le traitement de la requete.

Documents API

POST /v1/documents/generate

Generez des documents professionnels (PDF, DOCX, PPTX, XLSX) a partir d'un prompt ou d'un template.

Parametres

ParametreTypeDescription
prompt requisstringDescription du document a generer
format requisstring"pdf", "docx", "pptx", "xlsx"
templatestringID du template a utiliser (optionnel)
languagestringLangue du document. Default: "fr"
guardbooleanActive Moon Guard. Default: true
doc = client.documents.generate(
    prompt="Business plan pour une startup SaaS en cybersecurite",
    format="pdf",
    language="fr"
)

# Telecharger le fichier
with open("business-plan.pdf", "wb") as f:
    f.write(doc.content)
const doc = await client.documents.generate({
  prompt: 'Business plan pour une startup SaaS en cybersecurite',
  format: 'pdf',
  language: 'fr'
});

// Sauvegarder le fichier
await fs.promises.writeFile('business-plan.pdf', doc.content);

Moon Guard API

Moon Guard est le pipeline de protection des donnees de Moon AI. Il detecte et anonymise automatiquement les informations personnelles (PII) en 5 couches avant l'envoi aux modeles IA.

Pipeline en 5 couches

1
Scan
2
Tokenisation
3
Leurres
4
Chiffrement
5
Restructuration

Anonymiser du texte

POST /v1/guard/anonymize
result = client.guard.anonymize(
    text="Jean Dupont habite au 12 rue de la Paix, Paris. Son email est jean@example.com"
)

print(result.anonymized_text)
# "[PERSON_1] habite au [ADDRESS_1]. Son email est [EMAIL_1]"

print(result.entities)
# [{"type": "PERSON", "original": "Jean Dupont", "token": "PERSON_1"}, ...]

# Restaurer les donnees originales
restored = client.guard.restore(
    text=result.anonymized_text,
    session_id=result.session_id
)
curl -X POST https://api.moon-ai.fr/v1/guard/anonymize \
  -H "Authorization: Bearer mk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Jean Dupont habite au 12 rue de la Paix, Paris."
  }'

Types de PII detectes

TypeExemplesToken
PERSONNoms, prenoms[PERSON_N]
EMAILAdresses email[EMAIL_N]
PHONENumeros de telephone[PHONE_N]
ADDRESSAdresses postales[ADDRESS_N]
IBANNumeros de compte bancaire[IBAN_N]
SSNNumeros de securite sociale[SSN_N]
PASSPORTNumeros de passeport[PASSPORT_N]
COMPANYNoms d'entreprises[COMPANY_N]

Moon Auto

Moon Auto est le moteur de routage intelligent de Moon AI. Quand vous utilisez model: "auto", il analyse semantiquement votre requete et selectionne le modele le plus adapte.

Comment ca fonctionne

Code & Dev
Route vers Claude Opus 4.6
Redaction
Route vers Moon-1
Recherche Web
Route vers Perplexity Sonar
Documents
Route vers GPT-5.4
Forcer un modele specifique
# Utiliser Moon Auto (recommande)
response = client.chat.completions.create(model="auto", ...)

# Forcer un modele specifique
response = client.chat.completions.create(model="claude-opus-4-6", ...)

# La reponse indique le modele utilise
print(response.model)       # "claude-opus-4-6"
print(response.routed_by)   # "moon-auto" ou "user"

Moon CLI

Moon CLI est un assistant de code IA dans le terminal — comme Claude Code ou OpenCode. Multi-provider, 10 outils integres, streaming en temps reel, MCP servers, et mise a jour automatique.

Installation

# Installation via pip (recommande)
pip install moon-cli

# Lancer Moon CLI
moon
# Installation depuis les sources
git clone https://github.com/stellarrstudio/moon-cli.git
cd moon-cli
pip install -e .

# Lancer Moon CLI
moon
# Installation isolee via pipx
pipx install moon-cli

# Lancer Moon CLI
moon
💡 Prerequis : Python 3.10+ et une cle API pour un provider compatible OpenAI (OpenAI, Anthropic, DeepSeek, Google, Mistral, etc.).

Authentification

Au premier lancement, Moon CLI vous demande votre cle API et l'URL du provider. Vous pouvez aussi configurer via des variables d'environnement ou un fichier .env.

# Le premier lancement lance la configuration
moon

 M O O N  v0.1.0
  Stellarr Studio

  URL de l'API: https://api.openai.com/v1
  Cle API: sk-...
  Modele: gpt-4o

 Configuration sauvegardee
# Variables d'environnement (priorite maximale)
export MOON_API_KEY="sk-..."
export MOON_API_URL="https://api.openai.com/v1"
export MOON_MODEL="gpt-4o"

# Ou configurer via la commande /login
moon
 /login
# Fichier .env a la racine de votre projet
MOON_API_KEY=sk-...
MOON_API_URL=https://api.openai.com/v1
MOON_MODEL=gpt-4o

Providers supportes

ProviderURL de l'APIModeles
OpenAIhttps://api.openai.com/v1gpt-4o, gpt-4.1, o3, o4-mini
Anthropichttps://api.anthropic.com/v1claude-sonnet-4, claude-opus-4
DeepSeekhttps://api.deepseek.com/v1deepseek-chat, deepseek-reasoner
Googlehttps://generativelanguage.googleapis.com/v1betagemini-2.5-pro
Mistralhttps://api.mistral.ai/v1mistral-large-latest
OpenRouterhttps://openrouter.ai/api/v1tous les modeles
💡 Tout provider compatible avec l'API OpenAI fonctionne. Changez simplement l'URL et la cle API.

Commandes

Toutes les commandes commencent par / dans le chat interactif. Les commandes systeme restent en anglais.

CommandeDescription
/helpAfficher l'aide complete
/model <id>Changer de modele IA
/permissions <mode>Changer le mode : yolo, normal, plan
/toolsLister les outils disponibles
/initGenerer un fichier MOON.md pour le projet
/plan <tache>Planifier avant d'executer (l'IA propose, vous validez)
/undoAnnuler la derniere modification de fichier
/mcpGerer les serveurs MCP
/updateVerifier et installer les mises a jour
/newNouvelle conversation (efface l'historique)
/retryRenvoyer le dernier message
/save <nom>Sauvegarder la conversation
/load <nom>Charger une conversation
/config set <k> <v>Modifier une option de configuration
/statusEtat de la session (modele, tokens, duree)
/usageDetail des tokens utilises
/contextVisualiser la fenetre de contexte
/doctorDiagnostic complet
/gitEtat du depot Git
/diffAfficher le git diff
/export <nom>Exporter la conversation en fichier texte

Raccourcis

RaccourciDescription
!commandeExecuter une commande shell directement
@fichierInjecter le contenu d'un fichier dans le prompt
\+EnterRetour a la ligne (multiline)
Esc+EscEffacer la ligne / Arreter le modele pendant le streaming
Ctrl+LVider l'ecran
Moon CLI v0.1.0
$ moon

   M O O N  v0.1.0
    Stellarr Studio

  gpt-4o · main (clean) · python · NORMAL
  ~/projects/my-app

   Refactorise ce composant React avec des hooks

   Lecture Dashboard.tsx
   Modification Dashboard.tsx

    @@ -12,8 +12,15 @@
      12  + const [data, setData] = useState(null)
      13  + const [loading, setLoading] = useState(true)
      14  - class Dashboard extends Component {

   Ecriture useDashboard.ts (245 chars)

  312in · 487out · 799 total
  ✦ 2.3s

Outils integres

Moon CLI dispose de 10 outils que l'IA utilise automatiquement selon le contexte. Les outils dangereux demandent confirmation en mode normal.

OutilDescriptionConfirmation
read_fileLire le contenu d'un fichier avec numeros de ligneNon
write_fileCreer ou remplacer un fichier (cree les dossiers parents)Oui
edit_fileModifier un fichier par remplacement exact de texteOui
execute_commandExecuter une commande shell (bash/cmd)Oui
glob_filesRechercher des fichiers par pattern globNon
grep_searchRechercher du contenu par regex dans les fichiersNon
list_directoryLister le contenu d'un dossier (plat ou arborescence)Non
web_searchRecherche web via Brave SearchNon
web_fetchRecuperer le contenu d'une page webNon
dispatch_agentLancer un sous-agent autonome pour les taches complexesNon

Configuration

Moon CLI stocke sa configuration dans ~/.moon-cli/config.json. Modifiable via /config set ou en editant le fichier directement.

~/.moon-cli/config.json
{
  "api_url": "https://api.openai.com/v1",
  "api_key": "sk-...",
  "model": "gpt-4o",
  "temperature": 0.7,
  "max_tokens": 8192,
  "permission_mode": "normal",
  "tools_enabled": true,
  "max_history_messages": 100
}

Options CLI

Moon CLI accepte des flags au lancement pour surcharger la configuration :

Flags de lancement
# Changer de modele
moon --model claude-sonnet-4-20250514

# Mode non-interactif (une seule question)
moon -p "explique ce code"

# YOLO mode — tout approuver automatiquement
moon --yolo

# Mode lecture seule — aucune modification
moon --plan

# Changer de repertoire de travail
moon -C ~/projects/my-app

# Voir la version
moon --version

Fichier MOON.md

La commande /init genere un fichier MOON.md a la racine de votre projet. Ce fichier est automatiquement injecte dans le contexte du modele pour qu'il comprenne votre stack, vos conventions et la structure du projet.

Modes de permission

Moon CLI propose 3 niveaux de securite pour controler ce que l'IA peut faire :

ModeComportementUsage
normal Demande confirmation avant chaque action dangereuse (ecriture, commande shell) Par defaut — usage quotidien
yolo Approuve automatiquement toutes les actions — aucune confirmation Quand vous faites confiance a l'IA et voulez aller vite
plan Lecture seule — l'IA ne peut ni ecrire, ni modifier, ni executer Exploration, analyse, code review
Changer de mode
# Dans le chat
 /permissions yolo
 /permissions plan
 /permissions normal

# Au lancement
moon --yolo
moon --plan

MCP Servers

Moon CLI supporte le Model Context Protocol pour etendre ses capacites avec des serveurs externes. Les outils MCP sont automatiquement injectes dans la boucle agentique.

Gestion des serveurs MCP
# Voir les templates disponibles
 /mcp add

# Ajouter un serveur depuis un template
 /mcp add brave-search
 /mcp add github
 /mcp add filesystem

# Ajouter un serveur custom
 /mcp add mon-serveur npx -y @mon/mcp-server

# Demarrer / arreter
 /mcp start brave-search
 /mcp stop brave-search

# Voir les serveurs configures
 /mcp list

Templates MCP inclus

ServeurDescription
brave-searchRecherche web via Brave Search API
filesystemAcces fichiers etendu
githubGitHub — issues, PRs, repos
memoryMemoire persistante entre sessions
puppeteerNavigation web avec Puppeteer
sqliteBase de donnees SQLite

La configuration MCP est stockee dans ~/.moon-cli/mcp.json.

Mise a jour

Moon CLI integre un systeme de mise a jour automatique. La commande /update verifie la derniere version disponible et propose l'installation.

Mise a jour
# Dans le chat interactif
 /update

  verification des mises a jour...

   Mise a jour disponible
    installee  v0.1.0
    disponible v0.2.0

  installer ? [Y/n] y

   Moon CLI mis a jour → v0.2.0
  redemarrez Moon CLI pour appliquer

# Ou via pip directement
pip install --upgrade moon-cli
💡 Au demarrage, Moon CLI affiche un indicateur si une mise a jour est disponible. La verification utilise un cache d'1 heure pour ne pas ralentir le lancement.

SDKs

Bibliotheques officielles pour integrer Moon AI dans votre stack.

Python SDK

Installation & Usage
# Installation
pip install moonai

# Usage
from moonai import MoonAI

client = MoonAI()  # Utilise MOON_API_KEY env var

# Chat
response = client.chat.completions.create(
    model="auto",
    messages=[{"role": "user", "content": "Hello Moon!"}]
)

# Async
from moonai import AsyncMoonAI

async_client = AsyncMoonAI()
response = await async_client.chat.completions.create(...)

Node.js / TypeScript SDK

Installation & Usage
// Installation: npm install @moonai/sdk

import MoonAI from '@moonai/sdk';

const client = new MoonAI();  // Uses MOON_API_KEY env var

// Chat completion
const response = await client.chat.completions.create({
  model: 'auto',
  messages: [{ role: 'user', content: 'Hello Moon!' }]
});

// Streaming
const stream = await client.chat.completions.create({
  model: 'auto',
  messages: [{ role: 'user', content: 'Streaming test' }],
  stream: true
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? '');
}

PHP SDK

Installation & Usage
// Installation: composer require moonai/moonai-php

use MoonAI\Client;

$client = new Client(getenv('MOON_API_KEY'));

$response = $client->chat->completions->create([
    'model' => 'auto',
    'messages' => [
        ['role' => 'user', 'content' => 'Hello Moon!']
    ],
    'guard' => true
]);

echo $response->choices[0]->message->content;

Webhooks

Recevez des notifications en temps reel quand des evenements se produisent sur votre compte Moon AI.

Configuration

Configurez vos webhooks dans le dashboard ou via l'API :

Creer un webhook
webhook = client.webhooks.create(
    url="https://votre-app.com/webhooks/moon",
    events=[
        "chat.completion.created",
        "document.generated",
        "guard.pii_detected"
    ]
)

print(webhook.secret)  # whsec_... pour verifier les signatures

Events

EventDescription
chat.completion.createdUne completion de chat a ete generee
chat.completion.failedUne completion a echoue
document.generatedUn document a ete genere
guard.pii_detectedMoon Guard a detecte des PII
guard.pii_blockedMoon Guard a bloque une requete
usage.limit_reachedLimite de quota atteinte
api_key.createdNouvelle cle API creee
api_key.revokedCle API revoquee

Verification des signatures

Chaque webhook inclut un header X-Moon-Signature pour verifier l'authenticite.

import hmac, hashlib

def verify_signature(payload, signature, secret):
    expected = hmac.new(
        secret.encode(),
        payload.encode(),
        hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)
import crypto from 'crypto';

function verifySignature(payload, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}

Changelog

v1.0.0 Latest 9 mars 2026
  • Lancement officiel de l'API Moon AI v1
  • Moon Guard — Pipeline de protection PII en 5 couches
  • Moon Auto — Routage semantique intelligent
  • Documents API — Generation PDF, DOCX, PPTX, XLSX
  • SDKs Python, Node.js et PHP
  • Moon CLI v0.1.0 — Assistant de code IA dans le terminal (pip install moon-cli)
  • Webhooks — Notifications temps reel
v0.9.0-beta 15 fevrier 2026
  • Beta publique de l'API
  • Chat Completions avec support multi-modeles
  • Moon Guard v0.9 (3 couches)
  • SDK Python beta
v0.1.0-alpha 5 janvier 2026
  • Alpha privee — premiers testeurs internes
  • Prototype Moon Guard
  • Infrastructure OVHcloud France

Pret a construire avec Moon AI ?

Commencer gratuitement