Un modèle de l’organisation part d’un modèle de la plateforme et lui ajoute un prompt système, des suggestions, des bases de connaissances et un avatar. Les membres le choisissent comme les autres modèles. Une consigne par modèle, elle, s’ajoute à toutes les conversations des membres qui utilisent ce modèle de base.
Toutes les routes sont sous https://. Portées : rules:read pour lire, rules:write pour écrire. Créer, modifier ou rétablir un modèle, et poser une consigne, demandent une organisation gérée : sinon 409 .
Catalogue des modèlesLien vers la section Catalogue des modèles
GET / · rules:read
Les modèles publics de la plateforme qu’une règle peut autoriser, triés par nom.
{
"items": [
{ "id": "anthropic/claude-haiku-4.5", "name": "Claude Haiku 4.5", "owned_by": "openai", "eu_hosted": false, "capabilities": { "vision": true, "file_upload": true, "web_search": true } },
{ "id": "mistralai/mistral-large-2512", "name": "Mistral Large 3", "owned_by": "openai", "eu_hosted": true, "capabilities": null }
],
"total": 2
}owned_by indique le type de connexion qui sert le modèle, pas son éditeur. eu_hosted dit si le modèle compte comme hébergé dans l’Union européenne pour la règle models.eu_only. 503 : la liste des modèles est momentanément indisponible.
L’objet modèle de l’organisationLien vers la section L’objet modèle de l’organisation
{
"id": "6f1c2e8a-3b4d-4f5a-9e7c-1d2b3a4c5e6f",
"model_id": "orgm-6f1c2e8a3b4d4f5a",
"name": "Assistant RH",
"description": "Répond aux questions du personnel sur les congés.",
"base_model_id": "mistralai/mistral-large-2512",
"base_model_name": "Mistral Large 3",
"base_status": "ok",
"avatar": { "character": "chic", "background": "moon" },
"avatar_image": "/api/v1/agents/avatar/chic/moon?v=1",
"sharing": { "all": false, "group_ids": ["<id de groupe>"], "role_keys": ["manager"], "label_ids": [] },
"archived": false,
"has_prompt": true,
"prompt_length": 1840,
"starters_count": 3,
"knowledge_count": 1,
"created_by": "0d9a2f44-1c3b-4e7a-8b6f-55e2c1d0a9b8",
"created_at": 1762339200,
"updated_at": 1762425600
}| Champ | Description |
|---|---|
model_id | L’identifiant que les membres choisissent. |
base_status | ok, unavailable (le modèle de base n’est plus proposé), not_allowed (les règles le refusent) ou null. |
sharing | Qui peut l’utiliser, en plus du propriétaire et des administrateurs. |
La lecture d’un modèle, sa création et sa modification ajoutent system_prompt, starters, knowledge (id, name, missing) et capabilities.
Lister les modèlesLien vers la section Lister les modèles
GET / · rules:read
| Paramètre | Description |
|---|---|
status | active (par défaut), archived ou all. |
q | Partie du nom. |
page, limit | Pagination. |
La réponse ajoute max_models (200), managed et limits (longueurs permises).
Créer un modèleLien vers la section Créer un modèle
POST / · rules:write
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
name | chaîne | oui | 1 à 80 caractères, unique parmi les modèles actifs. |
base_model_id | chaîne | oui | Un modèle de la plateforme que les règles autorisent. |
description | chaîne | non | 1 000 caractères au plus. |
system_prompt | chaîne | non | 20 000 caractères au plus. |
starters | liste | non | Suggestions de départ : les 6 premières sont gardées, 200 caractères chacune. |
knowledge | liste | non | 20 bases de connaissances au plus, du workspace et partagées avec lui. |
capabilities | objet | non | vision, file_upload, web_search, image_generation, code_interpreter, citations, usage : true ou false. |
avatar | objet | non | character et background, deux noms d’illustrations de l’avatar. |
sharing | objet | non | all (tout le monde), group_ids (200 au plus), role_keys (50 au plus), label_ids (200 au plus). |
curl https://chat.realmoon.ai/api/v1/orgs/$ORG_ID/models/custom \
-H "Authorization: Bearer $MOONAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: modele-assistant-rh" \
-d '{
"name": "Assistant RH",
"base_model_id": "mistralai/mistral-large-2512",
"system_prompt": "Tu réponds aux questions du personnel sur les congés, avec le règlement intérieur.",
"starters": ["Combien de jours de congés me reste-t-il ?"],
"sharing": {"all": true}
}'import os
import requests
r = requests.post(
f"https://chat.realmoon.ai/api/v1/orgs/{os.environ['ORG_ID']}/models/custom",
headers={
"Authorization": f"Bearer {os.environ['MOONAI_ADMIN_KEY']}",
"Idempotency-Key": "modele-assistant-rh",
},
json={
"name": "Assistant RH",
"base_model_id": "mistralai/mistral-large-2512",
"system_prompt": "Tu réponds aux questions du personnel sur les congés, avec le règlement intérieur.",
"starters": ["Combien de jours de congés me reste-t-il ?"],
"sharing": {"all": True},
},
timeout=30,
)
r.raise_for_status()
print(r.json()["model_id"])const r = await fetch(`https://chat.realmoon.ai/api/v1/orgs/${process.env.ORG_ID}/models/custom`, {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.MOONAI_ADMIN_KEY}`,
'Content-Type': 'application/json',
'Idempotency-Key': 'modele-assistant-rh',
},
body: JSON.stringify({
name: 'Assistant RH',
base_model_id: 'mistralai/mistral-large-2512',
system_prompt: 'Tu réponds aux questions du personnel sur les congés, avec le règlement intérieur.',
starters: ['Combien de jours de congés me reste-t-il ?'],
sharing: { all: true },
}),
});
if (!r.ok) throw new Error(await r.text());
console.log((await r.json()).model_id);| Statut | code | Cause |
|---|---|---|
| 400 | invalid_request | Nom vide, modèle de base indisponible ou refusé par les règles, plus de 200 modèles, avatar inconnu, rôle ou identifiant invalide. |
| 403 | forbidden | Base de connaissances non partagée avec le workspace. |
| 404 | not_found | Base de connaissances, groupe, rôle ou étiquette introuvable. |
| 409 | invalid_request | Un modèle de l’organisation porte déjà ce nom. |
| 409 | org_not_managed | L’organisation n’est pas gérée. |
GET / (rules:read) liste les bases de connaissances qu’on peut attacher : {"items": , 200 au plus.
Lire, modifier, archiver, supprimerLien vers la section Lire, modifier, archiver, supprimer
| Méthode et chemin | Portée | Rôle |
|---|---|---|
GET / | rules:read | Le modèle, prompt système compris. |
PATCH / | rules:write | Modifier les champs envoyés. null efface description, system_prompt, capabilities et avatar. |
POST / | rules:write | Archiver : les membres ne le voient plus. |
POST / | rules:write | Rétablir un modèle archivé (409 si un modèle actif porte le même nom). |
DELETE / | rules:write | Supprimer définitivement ; répond {"ok": true}. |
Consignes par modèleLien vers la section Consignes par modèle
Une consigne s’ajoute aux conversations des membres qui utilisent ce modèle de base, quel que soit le modèle de l’organisation qui l’emploie.
GET / · rules:read
{
"items": [{ "base_model_id": "anthropic/claude-haiku-4.5", "base_model_name": "Claude Haiku 4.5", "text": "Ne rédigez jamais de contrat.", "length": 29, "updated_by": "0d9a2f44-1c3b-4e7a-8b6f-55e2c1d0a9b8", "updated_at": 1762339200, "available": true }],
"total": 1,
"max_models": 200,
"text_max": 8000,
"managed": true
}PUT / · rules:write
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
base_model_id | chaîne | oui | Le modèle de base. |
text | chaîne | non | 8 000 caractères au plus ; vide retire la consigne. |
Avec un texte, la réponse est la consigne ; sans texte, {"ok": (ou false s’il n’y en avait pas). 200 modèles au plus ont une consigne.
DELETE / · rules:write
Répond {"ok": true}, ou 404 s’il n’y avait pas de consigne.
Voir aussiLien vers la section Voir aussi
- Règles
- Modèles et ressources, dans l’administration
- Ressources