GET / renvoie le catalogue au format de l’API d’OpenAI, avec en plus le type de chaque modèle et ses prix en crédits. La liste suit le catalogue de Moon AI : lisez-la plutôt que de figer des identifiants dans votre code.
GET https://api.realmoon.ai/v1/models
GET https://api.realmoon.ai/v1/models?type=image- Authentification : clé
sk-moon-…avec la portéeinference(voir Authentification). - Réponse : un objet
listdontdatacontient les modèles, triés par identifiant pour la conversation, puis les modèles de médias. - Facturation : aucune.
ParamètreLien vers la section Paramètre
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
type | chaîne | non | Ne garde qu’un type : chat, image, video, speech, transcription, embedding ou ocr. Un type inconnu donne une liste vide. |
ExempleLien vers la section Exemple
curl https://api.realmoon.ai/v1/models \
-H "Authorization: Bearer $MOONAI_API_KEY"
curl "https://api.realmoon.ai/v1/models?type=image" \
-H "Authorization: Bearer $MOONAI_API_KEY"import os
from openai import OpenAI
client = OpenAI(base_url="https://api.realmoon.ai/v1", api_key=os.environ["MOONAI_API_KEY"])
for model in client.models.list():
info = model.model_dump()
print(info["id"], info.get("type"), info.get("pricing"))
images = client.models.list(extra_query={"type": "image"})
print([m.id for m in images])import OpenAI from 'openai';
const client = new OpenAI({ baseURL: 'https://api.realmoon.ai/v1', apiKey: process.env.MOONAI_API_KEY });
const all = await client.models.list();
for (const model of all.data) console.log(model.id, model.type, model.pricing);
const images = await client.models.list({ query: { type: 'image' } });
console.log(images.data.map((m) => m.id));RéponseLien vers la section Réponse
{
"object": "list",
"data": [
{
"id": "anthropic/claude-haiku-4.5",
"object": "model",
"created": 1777593600,
"name": "Claude Haiku 4.5",
"owned_by": "moon-ai",
"pricing": {
"prompt_credits_per_1m": 7000,
"completion_credits_per_1m": 35000,
"unit": "credits",
"per": "1M_tokens"
},
"context_length": 200000,
"type": "chat",
"endpoints": ["/v1/chat/completions"],
"types": ["chat"]
},
{
"id": "google/gemini-3.1-flash-image",
"object": "model",
"created": 1793577600,
"name": "Nano Banana 2 (Gemini 3.1 Flash Image)",
"owned_by": "moon-ai",
"type": "image",
"endpoints": ["/v1/images/generations", "/v1/images/edits"],
"hosting": "provider",
"pricing": {
"unit": "image",
"credits_per_unit": 469,
"max_credits_per_unit": 1155,
"billing": "real_cost",
"variants": [
{ "name": "1K", "credits_per_unit": 469, "max_credits_per_unit": 525 },
{ "name": "2K", "credits_per_unit": 707, "max_credits_per_unit": 770 },
{ "name": "4K", "credits_per_unit": 1057, "max_credits_per_unit": 1155 }
]
},
"aspect_ratios": ["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3", "21:9"],
"image_sizes": ["1K", "2K", "4K"],
"max_input_images": 8,
"output_format": "png",
"types": ["image"]
}
]
}L’objet listeLien vers la section L’objet liste
| Champ | Type | Description |
|---|---|---|
object | chaîne | Toujours list. |
data | tableau | Les modèles. Pas de pagination : la liste est complète. |
Champs communs à tous les modèlesLien vers la section Champs communs à tous les modèles
| Champ | Type | Description |
|---|---|---|
id | chaîne | Identifiant à passer dans model. |
object | chaîne | Toujours model. |
created | entier | Date en secondes Unix : celle du modèle, ou à défaut une date fixe. |
name | chaîne | Nom lisible. |
owned_by | chaîne | Toujours moon-ai : le modèle est servi par Moon AI. |
type | chaîne | Type principal du modèle. |
types | tableau | Tous ses types : un même identifiant peut servir plusieurs points d’accès. |
endpoints | tableau | Points d’accès à appeler pour ce modèle. |
pricing | objet | Prix en crédits, voir ci-dessous. |
media_pricing | objet | Pour un modèle qui sert plusieurs types : le prix de chaque type autre que le premier, rangé par type. |
Modèles de conversation (chat)Lien vers la section Modèles de conversation (chat)
| Champ | Type | Description |
|---|---|---|
pricing.prompt_credits_per_1m | entier | Crédits par million de jetons d’entrée. |
pricing.completion_credits_per_1m | entier | Crédits par million de jetons de sortie, raisonnement compris. |
pricing.unit, pricing.per | chaîne | credits et 1M_tokens. |
context_length | entier | Fenêtre de contexte en jetons, quand elle est connue. |
Les modèles hébergés par Moon AI ont le même prix en entrée et en sortie. Un modèle qui lit les images, l’audio ou les fichiers les facture selon son propre tarif ; le coût exact de chaque requête se lit sur /.
Modèles de médiasLien vers la section Modèles de médias
Tous les modèles de médias portent :
| Champ | Type | Description |
|---|---|---|
hosting | chaîne | fr si le modèle tourne sur nos serveurs en France, provider s’il est servi par son fournisseur. |
pricing.unit | chaîne | L’unité facturée, voir le tableau suivant. |
pricing.credits_per_unit | nombre | Le prix d’une unité. Pour une vidéo, le prix de la seconde le moins cher du modèle. |
pricing.billing | chaîne | real_cost (coût réel annoncé par le fournisseur), per_character (au caractère) ou flat (prix fixe par unité). |
Champs propres à chaque type :
| Type | pricing.unit | Champs propres |
|---|---|---|
image | image | pricing.max_credits_per_unit (le plus qu’une image peut coûter, ce que la requête retient), pricing.variants (prix par taille 1K, 2K, 4K), pricing.credits_per_input_image, aspect_ratios, image_sizes, max_input_images (0 : pas de retouche), output_format (png ou svg) |
video | second | pricing.variants par résolution (avec credits_per_unit_without_audio, credits_per_unit_from_image), pricing.credits_per_input_image, durations, resolutions, aspect_ratios, audio, first_frame, last_frame |
speech | 1M_characters | max_characters, response_formats, default_voice |
transcription | minute | max_file_mb. Le prix à la minute peut être décimal. |
embedding | 1M_tokens | pricing.prompt_credits_per_1m (même valeur) et pricing.completion_credits_per_1m (0), dimensions, custom_dimensions, context_length |
ocr | page | max_pages, max_file_mb |
Le détail de chaque type est dans Images, Vidéos, Audio, Embeddings et OCR.
Quels modèles sont servisLien vers la section Quels modèles sont servis
- Les modèles actifs et ouverts à tous dans Moon AI : les grands modèles du marché (OpenAI, Anthropic, Google, Mistral, Meta, DeepSeek, Qwen…) et les modèles maison de Moon AI, comme Moon 6, quand ils sont publics.
- Jamais un modèle à accès restreint, un agent ni un modèle privé d’un workspace.
- Jamais un modèle dont le prix n’est pas connu, ni un modèle qui fait des recherches web payantes à chaque requête : leur coût ne peut pas être borné à l’avance.
- Dans une organisation gérée, les modèles que ses règles refusent sont retirés de la liste.
Un identifiant qui n’est pas dans la liste répond 404 . La lecture d’un seul modèle (GET /) n’est pas servie (404 ) : filtrez la liste.
PrixLien vers la section Prix
Les prix sont en crédits. Ils suivent le prix du modèle chez son fournisseur et peuvent changer avec lui ; relisez la liste plutôt que de les garder en dur. L’onglet « Modèles » du portail affiche les mêmes prix en euros, avec une recherche et un tri par prix ou par taille de contexte (ouvrir). La conversion entre crédits et euros est expliquée dans Coûts et porte-monnaie.
ErreursLien vers la section Erreurs
| HTTP | code | Signification |
|---|---|---|
| 503 | org_policy_unavailable | Les règles de votre organisation sont momentanément illisibles : la liste ne peut pas être filtrée. Réessayez dans un instant. |
Les erreurs de clé et de débit, communes à toute l’API, sont dans Erreurs.
Voir aussiLien vers la section Voir aussi
- Conversation : appeler un modèle de type
chat. - Coûts et porte-monnaie : comment les prix deviennent une facture.