# Modèles

> Référence de GET /v1/models : les modèles que votre clé peut appeler, avec leur type, leurs points d’accès, leurs prix en crédits et ce que chacun accepte.

`GET /v1/models` 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.

```http
GET https://api.realmoon.ai/v1/models
GET https://api.realmoon.ai/v1/models?type=image
```

- Authentification : clé `sk-moon-…` avec la portée `inference` (voir [Authentification](https://realmoon.ai/documentation/api/authentification/)).
- Réponse : un objet `list` dont `data` contient les modèles, triés par identifiant pour la conversation, puis les modèles de médias.
- Facturation : aucune.

## 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. |

## Exemple

```bash title="cURL"
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"
```

```python title="Python"
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])
```

```javascript title="JavaScript"
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éponse

```json title="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 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è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`)

| 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 [`/v1/generation`](https://realmoon.ai/documentation/api/solde/#generation).

## 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](https://realmoon.ai/documentation/api/images/), [Vidéos](https://realmoon.ai/documentation/api/videos/), [Audio](https://realmoon.ai/documentation/api/audio/), [Embeddings](https://realmoon.ai/documentation/api/embeddings/) et [OCR](https://realmoon.ai/documentation/api/ocr/).

## 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 model_not_found`. La lecture d’un seul modèle (`GET /v1/models/{id}`) n’est pas servie (`404 unknown_url`) : filtrez la liste.

## 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](https://chat.realmoon.ai/settings/developer/models)). La conversion entre crédits et euros est expliquée dans [Coûts et porte-monnaie](https://realmoon.ai/documentation/api/couts/#credits).

## 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](https://realmoon.ai/documentation/api/erreurs/#cle).

## Voir aussi

- [Conversation](https://realmoon.ai/documentation/api/chat/) : appeler un modèle de type `chat`.
- [Coûts et porte-monnaie](https://realmoon.ai/documentation/api/couts/) : comment les prix deviennent une facture.

---

Documentation Moon AI › API développeur › Modèles. Page : https://realmoon.ai/documentation/api/modeles/. Modifiée le 5 novembre 2026.

© 2026 Stellarr Studio SAS. Tous droits réservés. Moon AI, Moon Blur et Stellarr Studio sont des marques déposées à l’INPI.
