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.
https://api.moon-ai.fr/v1Concepts cles
| Concept | Description |
|---|---|
| Moon Guard | Pipeline de protection des donnees en 5 couches. Anonymise automatiquement les PII avant l'envoi aux modeles, puis restaure les donnees dans la reponse. |
| Moon Auto | Moteur de routage semantique. Analyse chaque requete et selectionne automatiquement le modele le plus adapte (code, redaction, recherche, etc.). |
| Zero Data Retention | Aucune 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' });
mk_test_ sont limitees au mode sandbox.Types de cles
| Prefixe | Environnement | Description |
|---|---|---|
| mk_live_ | Production | Acces complet a l'API, facturation active |
| mk_test_ | Sandbox | Modeles 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
{
"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.
| Code | Type | Description |
|---|---|---|
| 200 | OK | Requete traitee avec succes |
| 400 | Bad Request | Parametres invalides ou manquants |
| 401 | Unauthorized | Cle API manquante ou invalide |
| 403 | Forbidden | Acces refuse (plan insuffisant) |
| 429 | Rate Limited | Trop de requetes, reessayez apres le delai indique |
| 500 | Server Error | Erreur interne, contactez le support |
| 503 | Unavailable | Service temporairement indisponible |
{
"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.
| Plan | Requetes/min | Tokens/min | Requetes/jour |
|---|---|---|---|
| Free | 20 | 40 000 | 200 |
| Pro | 120 | 400 000 | 10 000 |
| Team | 500 | 2 000 000 | 50 000 |
| Enterprise | Custom | Custom | Illimite |
Headers de reponse
| Header | Description |
|---|---|
| X-RateLimit-Limit | Nombre max de requetes par minute |
| X-RateLimit-Remaining | Requetes restantes dans la fenetre |
| X-RateLimit-Reset | Timestamp Unix de la reinitialisation |
| Retry-After | Secondes a attendre (si 429) |
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
| Parametre | Type | Description |
|---|---|---|
| model requis | string | ID du modele ou "auto" pour Moon Auto. Ex: "claude-opus-4-6", "gpt-5.4", "moon-1" |
| messages requis | array | Liste des messages. Chaque message a un role ("system", "user", "assistant") et un content. |
| guard | boolean | Active Moon Guard pour anonymiser les PII. Default: true |
| stream | boolean | Active le streaming SSE. Default: false |
| temperature | number | Creativite du modele (0.0 a 2.0). Default: 1.0 |
| max_tokens | integer | Nombre max de tokens a generer. Default: depend du modele |
| top_p | number | Nucleus sampling (0.0 a 1.0). Default: 1.0 |
| stop | string | array | Sequences 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); }
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
Liste tous les modeles disponibles sur la plateforme Moon AI.
| Modele | Fournisseur | Specialite | Context |
|---|---|---|---|
| auto | Moon Auto | Routage intelligent automatique | - |
| moon-1 | Moon AI | Redaction, creativite, francais | 128K |
| claude-opus-4-6 | Anthropic | Code, raisonnement avance | 200K |
| claude-sonnet-4-6 | Anthropic | Polyvalent, rapide | 200K |
| gpt-5.4 | OpenAI | Documents, analyse | 128K |
| gpt-4.1 | OpenAI | Polyvalent | 128K |
| gemini-2.5-pro | Multimodal, contexte long | 1M | |
| perplexity-sonar | Perplexity | Recherche web temps reel | 128K |
Documents API
Generez des documents professionnels (PDF, DOCX, PPTX, XLSX) a partir d'un prompt ou d'un template.
Parametres
| Parametre | Type | Description |
|---|---|---|
| prompt requis | string | Description du document a generer |
| format requis | string | "pdf", "docx", "pptx", "xlsx" |
| template | string | ID du template a utiliser (optionnel) |
| language | string | Langue du document. Default: "fr" |
| guard | boolean | Active 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
Anonymiser du texte
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
| Type | Exemples | Token |
|---|---|---|
| PERSON | Noms, prenoms | [PERSON_N] |
| Adresses email | [EMAIL_N] | |
| PHONE | Numeros de telephone | [PHONE_N] |
| ADDRESS | Adresses postales | [ADDRESS_N] |
| IBAN | Numeros de compte bancaire | [IBAN_N] |
| SSN | Numeros de securite sociale | [SSN_N] |
| PASSPORT | Numeros de passeport | [PASSPORT_N] |
| COMPANY | Noms 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
# 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
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
| Provider | URL de l'API | Modeles |
|---|---|---|
| OpenAI | https://api.openai.com/v1 | gpt-4o, gpt-4.1, o3, o4-mini |
| Anthropic | https://api.anthropic.com/v1 | claude-sonnet-4, claude-opus-4 |
| DeepSeek | https://api.deepseek.com/v1 | deepseek-chat, deepseek-reasoner |
https://generativelanguage.googleapis.com/v1beta | gemini-2.5-pro | |
| Mistral | https://api.mistral.ai/v1 | mistral-large-latest |
| OpenRouter | https://openrouter.ai/api/v1 | tous les modeles |
Commandes
Toutes les commandes commencent par / dans le chat interactif. Les commandes systeme restent en anglais.
| Commande | Description |
|---|---|
| /help | Afficher l'aide complete |
| /model <id> | Changer de modele IA |
| /permissions <mode> | Changer le mode : yolo, normal, plan |
| /tools | Lister les outils disponibles |
| /init | Generer un fichier MOON.md pour le projet |
| /plan <tache> | Planifier avant d'executer (l'IA propose, vous validez) |
| /undo | Annuler la derniere modification de fichier |
| /mcp | Gerer les serveurs MCP |
| /update | Verifier et installer les mises a jour |
| /new | Nouvelle conversation (efface l'historique) |
| /retry | Renvoyer le dernier message |
| /save <nom> | Sauvegarder la conversation |
| /load <nom> | Charger une conversation |
| /config set <k> <v> | Modifier une option de configuration |
| /status | Etat de la session (modele, tokens, duree) |
| /usage | Detail des tokens utilises |
| /context | Visualiser la fenetre de contexte |
| /doctor | Diagnostic complet |
| /git | Etat du depot Git |
| /diff | Afficher le git diff |
| /export <nom> | Exporter la conversation en fichier texte |
Raccourcis
| Raccourci | Description |
|---|---|
| !commande | Executer une commande shell directement |
| @fichier | Injecter le contenu d'un fichier dans le prompt |
| \+Enter | Retour a la ligne (multiline) |
| Esc+Esc | Effacer la ligne / Arreter le modele pendant le streaming |
| Ctrl+L | Vider l'ecran |
Outils integres
Moon CLI dispose de 10 outils que l'IA utilise automatiquement selon le contexte. Les outils dangereux demandent confirmation en mode normal.
| Outil | Description | Confirmation |
|---|---|---|
| read_file | Lire le contenu d'un fichier avec numeros de ligne | Non |
| write_file | Creer ou remplacer un fichier (cree les dossiers parents) | Oui |
| edit_file | Modifier un fichier par remplacement exact de texte | Oui |
| execute_command | Executer une commande shell (bash/cmd) | Oui |
| glob_files | Rechercher des fichiers par pattern glob | Non |
| grep_search | Rechercher du contenu par regex dans les fichiers | Non |
| list_directory | Lister le contenu d'un dossier (plat ou arborescence) | Non |
| web_search | Recherche web via Brave Search | Non |
| web_fetch | Recuperer le contenu d'une page web | Non |
| dispatch_agent | Lancer un sous-agent autonome pour les taches complexes | Non |
Configuration
Moon CLI stocke sa configuration dans ~/.moon-cli/config.json. Modifiable via /config set ou en editant le fichier directement.
{
"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 :
# 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 :
| Mode | Comportement | Usage |
|---|---|---|
| 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 |
# 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.
# 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
| Serveur | Description |
|---|---|
| brave-search | Recherche web via Brave Search API |
| filesystem | Acces fichiers etendu |
| github | GitHub — issues, PRs, repos |
| memory | Memoire persistante entre sessions |
| puppeteer | Navigation web avec Puppeteer |
| sqlite | Base 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.
# 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
SDKs
Bibliotheques officielles pour integrer Moon AI dans votre stack.
Python SDK
# 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: 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: 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 :
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
| Event | Description |
|---|---|
| chat.completion.created | Une completion de chat a ete generee |
| chat.completion.failed | Une completion a echoue |
| document.generated | Un document a ete genere |
| guard.pii_detected | Moon Guard a detecte des PII |
| guard.pii_blocked | Moon Guard a bloque une requete |
| usage.limit_reached | Limite de quota atteinte |
| api_key.created | Nouvelle cle API creee |
| api_key.revoked | Cle 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
- 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
- Beta publique de l'API
- Chat Completions avec support multi-modeles
- Moon Guard v0.9 (3 couches)
- SDK Python beta
- Alpha privee — premiers testeurs internes
- Prototype Moon Guard
- Infrastructure OVHcloud France
Pret a construire avec Moon AI ?
Commencer gratuitement