POST / est le point d’accès des modèles de conversation. Le corps de la requête et la réponse suivent l’API Chat Completions d’OpenAI : les SDK d’OpenAI s’en servent sans réglage particulier.
POST https://api.realmoon.ai/v1/chat/completions- Authentification : clé
sk-moon-…avec la portéeinference(voir Authentification). - Corps : JSON (
Content-Type:).application/ json - Réponse : un objet
chat.completion, ou un flux SSE de morceauxchat.completion.chunkavec"stream":.true - Facturation : à l’usage, sur le porte-monnaie du workspace de la clé (voir Coûts).
ExempleLien vers la section Exemple
curl https://api.realmoon.ai/v1/chat/completions \
-H "Authorization: Bearer $MOONAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-haiku-4.5",
"messages": [
{"role": "system", "content": "Tu réponds en une phrase."},
{"role": "user", "content": "Qu’est-ce qu’une API ?"}
],
"max_tokens": 300,
"temperature": 0.3
}'import os
from openai import OpenAI
client = OpenAI(base_url="https://api.realmoon.ai/v1", api_key=os.environ["MOONAI_API_KEY"])
response = client.chat.completions.create(
model="anthropic/claude-haiku-4.5",
messages=[
{"role": "system", "content": "Tu réponds en une phrase."},
{"role": "user", "content": "Qu’est-ce qu’une API ?"},
],
max_tokens=300,
temperature=0.3,
)
print(response.choices[0].message.content)import OpenAI from 'openai';
const client = new OpenAI({ baseURL: 'https://api.realmoon.ai/v1', apiKey: process.env.MOONAI_API_KEY });
const response = await client.chat.completions.create({
model: 'anthropic/claude-haiku-4.5',
messages: [
{ role: 'system', content: 'Tu réponds en une phrase.' },
{ role: 'user', content: 'Qu’est-ce qu’une API ?' },
],
max_tokens: 300,
temperature: 0.3,
});
console.log(response.choices[0].message.content);ParamètresLien vers la section Paramètres
Le corps est un objet JSON. Les paramètres du tableau sont transmis au modèle, sauf provider et transforms, vérifiés à part (voir Préférences de fournisseur) ; les autres sont retirés sans erreur (voir Paramètres ignorés). Un modèle peut refuser un paramètre qu’il ne connaît pas (400 ).
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
model | chaîne | oui | Identifiant d’un modèle de type chat de GET /. Absent : 400 . Inconnu : 404 . |
messages | tableau | oui | La conversation, voir Messages. Absent ou mal formé : 400 . |
stream | booléen | non | true pour recevoir la réponse en flux SSE, voir Flux. false par défaut. |
max_tokens | entier | non | Nombre maximal de jetons de sortie, raisonnement compris. Voir Longueur de la réponse. |
max_completion_tokens | entier | non | Même rôle que max_tokens, sous le nom utilisé par les modèles de raisonnement d’OpenAI. |
temperature | nombre | non | Aléa de l’échantillonnage. |
top_p | nombre | non | Échantillonnage par noyau. |
top_k, min_p, top_a, repetition_penalty | nombre | non | Réglages d’échantillonnage, pour les modèles qui les acceptent. |
frequency_penalty, presence_penalty | nombre | non | Pénalités de répétition. |
stop | chaîne ou tableau | non | Séquences qui arrêtent la génération. |
seed | entier | non | Graine, pour les modèles qui la respectent. |
logit_bias | objet | non | Biais par jeton, pour les modèles qui l’acceptent. |
logprobs | booléen | non | Demande les probabilités des jetons, pour les modèles qui les renvoient. |
top_logprobs | entier | non | Nombre de jetons probables renvoyés à chaque position, avec logprobs. |
response_format | objet | non | Sortie JSON ({"type": ) ou conforme à un schéma ({"type": ), selon le modèle. |
tools | tableau | non | Fonctions que le modèle peut appeler, voir Outils. |
tool_choice | chaîne ou objet | non | none, auto, required, une fonction précise ({"type": ) ou {"type": . |
parallel_tool_calls | booléen | non | Autorise plusieurs appels d’outils dans une même réponse. |
functions, function_call | tableau, chaîne ou objet | non | Ancienne forme des outils, encore acceptée. |
reasoning_effort | chaîne | non | Effort de raisonnement (par exemple low, medium, high), pour les modèles qui l’acceptent. |
reasoning | objet | non | Réglage du raisonnement. Seules les clés effort, max_tokens, exclude et enabled sont transmises. |
include_reasoning | booléen | non | Demande au modèle de renvoyer son raisonnement, quand il le permet. |
verbosity | chaîne | non | Niveau de détail, pour les modèles qui l’acceptent. |
user, safety_identifier, prompt_cache_key | chaîne | non | Identifiant de votre utilisateur final ou clé de cache. Remplacé par un pseudonyme s’il contient une donnée personnelle détectée (voir Confidentialité). |
n | entier | non | Seule la valeur 1 est acceptée (400 sinon). |
provider | objet | non | Préférences de fournisseur, voir ci-dessous. |
transforms | tableau | non | ["middle-out"] seulement, voir ci-dessous. |
Les réglages d’échantillonnage dépendent du modèle : un modèle peut en ignorer certains.
Préférences de fournisseurLien vers la section Préférences de fournisseur
Un même modèle peut être servi par plusieurs fournisseurs. L’objet provider restreint ou ordonne ce choix ; il ne l’élargit jamais.
| Clé | Valeur | Effet |
|---|---|---|
only | tableau de noms | Ne sert la requête que par ces fournisseurs. |
ignore | tableau de noms | Écarte ces fournisseurs. |
order | tableau de noms | Essaie les fournisseurs dans cet ordre. |
quantizations | tableau de noms | Ne garde que ces niveaux de quantification. |
sort | price, throughput ou latency | Trie les fournisseurs par prix, débit ou latence. |
allow_fallbacks | booléen | false : pas de repli vers un autre fournisseur. |
require_parameters | booléen | true : seulement les fournisseurs qui acceptent tous les paramètres de la requête. |
max_price | objet | Prix maximal accepté, en dollars US : prompt et completion par million de jetons, request par requête, image par image. |
data_collection | "deny" | Écarte les fournisseurs qui déclarent réutiliser les données. |
zdr | booléen | true : seulement les fournisseurs qui déclarent ne rien conserver. |
- Les listes comptent 64 noms au plus.
- Une valeur par défaut (
allow_fallbacks:,true zdr: false,data_collection:, liste vide) est ignorée."allow" - Toute autre clé, ou une valeur invalide, est refusée avec
400etunsupported_parameter paramqui la nomme (par exempleprovider.foo). - Le prix maximal transmis n’est jamais plus haut que le prix du modèle dans
/v1/models: une préférence ne fait jamais servir la requête plus cher que ce que la réserve couvre. - Tous les modèles ne prennent pas ces préférences en charge. Sur un modèle qui ne les accepte pas, par exemple un modèle hébergé par Moon AI, une préférence active est refusée avec
400(unsupported_parameter param:)."provider" - Les engagements
data_collectionetzdrsont ceux que déclarent les fournisseurs ; Moon AI ne les contrôle pas.
transforms: raccourcit le milieu d’une conversation trop longue pour la fenêtre de contexte du modèle. Toute autre valeur est refusée (400 , param: ), comme middle-out sur un modèle qui ne prend pas les préférences de fournisseur en charge.
MessagesLien vers la section Messages
messages est un tableau d’objets message, du plus ancien au plus récent.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
role | chaîne | oui | system, user, assistant ou tool. |
content | chaîne, tableau de parties ou null | oui | Le contenu. null est permis pour un message assistant qui ne porte que des tool_calls. |
name | chaîne | non | Nom de l’auteur. Remplacé par un pseudonyme s’il contient une donnée personnelle détectée. |
tool_calls | tableau | non | Sur un message assistant : les appels d’outils que le modèle a faits, renvoyés tels quels. |
tool_call_id | chaîne | dans un message tool | L’identifiant de l’appel auquel le message répond. |
Un content en tableau contient des parties :
| Type de partie | Forme | Remarques |
|---|---|---|
text | {"type": | Texte. |
refusal | {"type": | Refus renvoyé par un modèle, dans un message assistant que vous renvoyez. |
image_url | {"type": | Adresse https:// ou http://, ou data:image/. Voir Images et fichiers. |
input_audio | {"type": | Audio en base64 seulement, pour les modèles qui lisent l’audio. |
file | {"type": | Fichier en base64, en URL data: ou à une adresse http(s)://. |
Toute autre partie est refusée avec 400 , en particulier :
- un fichier désigné par son identifiant (
file_id) : envoyez son contenu dansfile_data; - une vidéo ;
- de l’audio envoyé comme
file: utilisez une partieinput_audio; - de l’audio sur un modèle dont le prix de l’audio n’est pas connu.
RéponseLien vers la section Réponse
Sans flux, la réponse est un objet chat.completion.
{
"id": "gen-6f1c2b7e9a4d4c0e8b3a5d2f1e0c9b8a",
"object": "chat.completion",
"created": 1793577600,
"model": "anthropic/claude-haiku-4.5",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Une API est une interface qui permet à deux logiciels d’échanger des données."
},
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 24, "completion_tokens": 18, "total_tokens": 42 }
}| Champ | Type | Description |
|---|---|---|
id | chaîne | Identifiant de la requête chez Moon AI (gen-…), le même que l’en-tête X-Moon-Request-Id. Il sert à lire le coût avec GET /. |
object | chaîne | chat.completion. |
created | entier | Date en secondes Unix. |
model | chaîne | Le modèle appelé, ou le nom exact de la version servie. Pour un modèle maison de Moon AI, toujours l’identifiant Moon AI. |
choices | tableau | Une seule réponse (n vaut toujours 1). |
choices[].message.role | chaîne | assistant. |
choices[].message.content | chaîne ou null | Le texte de la réponse. null quand le modèle ne fait qu’appeler des outils. |
choices[].message.tool_calls | tableau | Les appels d’outils demandés par le modèle, voir Outils. |
choices[].message.refusal | chaîne | Le refus du modèle, quand il refuse de répondre. |
choices[].message.reasoning | chaîne | Le raisonnement, quand le modèle le renvoie (reasoning_content chez certains modèles). |
choices[].finish_reason | chaîne | stop, length (limite de sortie atteinte), tool_calls, content_filter… |
choices[].logprobs | objet | Les probabilités des jetons, avec logprobs: . |
usage.prompt_tokens, usage.completion_tokens, usage.total_tokens | entier | Jetons comptés. |
usage.prompt_tokens_details, usage.completion_tokens_details | objet | Détails que le modèle fournit : jetons lus en cache, jetons de raisonnement. |
La réponse ne donne jamais le coût, ni le fournisseur qui a servi le modèle : provider, system_fingerprint, native_finish_reason et les champs de coût de usage sont retirés.
En-têtes de réponseLien vers la section En-têtes de réponse
| En-tête | Valeur |
|---|---|
X-Moon-Request-Id | gen-…, identifiant de la requête. |
X-Moon-Prompt-Storage | none : le contenu n’est pas conservé. |
X-Moon-Blur | on si Moon Blur a analysé la requête, off s’il est désactivé pour la clé. |
X-Moon-Blur-Redactions | Nombre de valeurs remplacées par Moon Blur, quand il y en a. |
FluxLien vers la section Flux
Avec "stream": , la réponse arrive en Server-Sent Events (Content-Type: ) au format d’OpenAI. Le statut HTTP (200) et les en-têtes partent avec le premier octet.
curl -N https://api.realmoon.ai/v1/chat/completions \
-H "Authorization: Bearer $MOONAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-haiku-4.5",
"messages": [{"role": "user", "content": "Écris un haïku sur la Lune."}],
"stream": true
}'stream = client.chat.completions.create(
model="anthropic/claude-haiku-4.5",
messages=[{"role": "user", "content": "Écris un haïku sur la Lune."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
if chunk.usage:
print("\n", chunk.usage)const stream = await client.chat.completions.create({
model: 'anthropic/claude-haiku-4.5',
messages: [{ role: 'user', content: 'Écris un haïku sur la Lune.' }],
stream: true,
});
for await (const chunk of stream) {
const text = chunk.choices[0]?.delta?.content;
if (text) process.stdout.write(text);
if (chunk.usage) console.log('\n', chunk.usage);
}Format des événementsLien vers la section Format des événements
Chaque événement est une ligne data: suivie d’un objet JSON, puis une ligne vide. Le dernier événement est data: [DONE]. Les lignes qui commencent par : sont des commentaires.
data: {"id":"gen-6f1c2b7e9a4d4c0e8b3a5d2f1e0c9b8a","object":"chat.completion.chunk","created":1793577600,"model":"anthropic/claude-haiku-4.5","choices":[{"index":0,"delta":{"role":"assistant","content":"Lune"},"finish_reason":null}]}
data: {"id":"gen-6f1c2b7e9a4d4c0e8b3a5d2f1e0c9b8a","object":"chat.completion.chunk","created":1793577600,"model":"anthropic/claude-haiku-4.5","choices":[{"index":0,"delta":{"content":" pâle au-dessus des toits"},"finish_reason":null}]}
: keep-alive
data: {"id":"gen-6f1c2b7e9a4d4c0e8b3a5d2f1e0c9b8a","object":"chat.completion.chunk","created":1793577600,"model":"anthropic/claude-haiku-4.5","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: {"id":"gen-6f1c2b7e9a4d4c0e8b3a5d2f1e0c9b8a","object":"chat.completion.chunk","created":1793577600,"model":"anthropic/claude-haiku-4.5","choices":[],"usage":{"prompt_tokens":16,"completion_tokens":21,"total_tokens":37}}
data: [DONE]| Champ d’un morceau | Description |
|---|---|
id | Identifiant de la requête (gen-…), le même dans tous les morceaux. |
object | chat.completion.chunk. |
created, model | Comme dans la réponse sans flux. |
choices[].delta.role | assistant, dans le premier morceau. |
choices[].delta.content | Le fragment de texte suivant. |
choices[].delta.tool_calls | Fragments d’appels d’outils : index, puis id et function.name au début, function.arguments découpé en morceaux à concaténer. |
choices[].delta.reasoning | Fragment du raisonnement, quand le modèle le renvoie (reasoning_content chez certains modèles). |
choices[].finish_reason | null tant que la réponse continue, puis la raison de fin. |
usage | Dans un des derniers morceaux : les jetons comptés, parfois avec un tableau choices vide. |
- Le morceau qui porte
usagearrive toujours, même sansstream_options: vérifiez quechoicesn’est pas vide avant de le lire. - Des commentaires
: keep-alivearrivent pendant que le modèle réfléchit, pour garder la connexion ouverte. Les SDK les ignorent. - Quand Moon Blur a remplacé une valeur, elle est remise dans le texte, le raisonnement et les arguments d’outils, même quand un jeton est coupé entre deux morceaux.
- Si le flux est coupé de notre côté ou chez le fournisseur, un dernier événement
data:signale que la réponse est incomplète. Les SDK le lèvent comme une erreur pendant l’itération.{"error": {"message": "upstream stream interrupted", "type": "server_error", "code": "upstream_error"}} - Le flux dure une heure au plus, et il est coupé si le modèle n’envoie rien pendant 5 minutes.
- Le coût est réglé à la fin du flux. Si votre client ferme la connexion avant, la requête est réglée sur le coût que le fournisseur annonce pour ce qu’il a produit, ou garde une partie de sa réserve (voir Règlement).
Outils (function calling)Lien vers la section Outils (function calling)
Seuls les outils de type function, exécutés par votre programme, sont acceptés. Un outil d’un autre type (exécuté par le fournisseur, comme une recherche web) est refusé avec 400 et param: .
curl https://api.realmoon.ai/v1/chat/completions \
-H "Authorization: Bearer $MOONAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-haiku-4.5",
"messages": [{"role": "user", "content": "Quel temps fait-il à Lyon ?"}],
"tools": [{
"type": "function",
"function": {
"name": "meteo",
"description": "Météo actuelle d’une ville",
"parameters": {
"type": "object",
"properties": {"ville": {"type": "string"}},
"required": ["ville"]
}
}
}],
"tool_choice": "auto"
}'import json
tools = [{
"type": "function",
"function": {
"name": "meteo",
"description": "Météo actuelle d’une ville",
"parameters": {
"type": "object",
"properties": {"ville": {"type": "string"}},
"required": ["ville"],
},
},
}]
messages = [{"role": "user", "content": "Quel temps fait-il à Lyon ?"}]
first = client.chat.completions.create(model="anthropic/claude-haiku-4.5", messages=messages, tools=tools)
call = first.choices[0].message.tool_calls[0]
args = json.loads(call.function.arguments)
messages.append(first.choices[0].message)
messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps({"ville": args["ville"], "ciel": "dégagé", "temperature": 18})})
final = client.chat.completions.create(model="anthropic/claude-haiku-4.5", messages=messages, tools=tools)
print(final.choices[0].message.content)const tools = [{
type: 'function',
function: {
name: 'meteo',
description: 'Météo actuelle d’une ville',
parameters: {
type: 'object',
properties: { ville: { type: 'string' } },
required: ['ville'],
},
},
}];
const messages = [{ role: 'user', content: 'Quel temps fait-il à Lyon ?' }];
const first = await client.chat.completions.create({ model: 'anthropic/claude-haiku-4.5', messages, tools });
const call = first.choices[0].message.tool_calls[0];
const args = JSON.parse(call.function.arguments);
messages.push(first.choices[0].message);
messages.push({ role: 'tool', tool_call_id: call.id, content: JSON.stringify({ ville: args.ville, ciel: 'dégagé', temperature: 18 }) });
const final = await client.chat.completions.create({ model: 'anthropic/claude-haiku-4.5', messages, tools });
console.log(final.choices[0].message.content);{
"role": "assistant",
"content": null,
"tool_calls": [
{
"id": "call_01",
"type": "function",
"function": { "name": "meteo", "arguments": "{\"ville\":\"Lyon\"}" }
}
]
}- Tous les modèles ne savent pas appeler des outils.
- Les arguments (
function.arguments) arrivent sous forme de chaîne JSON. Quand Moon Blur a masqué une valeur, elle est remise dans les arguments, qui restent du JSON valide. finish_reasonvauttool_callsquand le modèle attend le résultat de vos fonctions.
Images et fichiersLien vers la section Images et fichiers
Un modèle qui lit les images accepte des parties image_url dans un message user.
curl https://api.realmoon.ai/v1/chat/completions \
-H "Authorization: Bearer $MOONAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-haiku-4.5",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Décris cette image."},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}
]
}]
}'import base64
with open("photo.jpg", "rb") as f:
data_url = "data:image/jpeg;base64," + base64.b64encode(f.read()).decode()
response = client.chat.completions.create(
model="anthropic/claude-haiku-4.5",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Décris cette image."},
{"type": "image_url", "image_url": {"url": data_url}},
],
}],
)
print(response.choices[0].message.content)import fs from 'node:fs';
const dataUrl = 'data:image/jpeg;base64,' + fs.readFileSync('photo.jpg').toString('base64');
const response = await client.chat.completions.create({
model: 'anthropic/claude-haiku-4.5',
messages: [{
role: 'user',
content: [
{ type: 'text', text: 'Décris cette image.' },
{ type: 'image_url', image_url: { url: dataUrl } },
],
}],
});
console.log(response.choices[0].message.content);- Une image à une adresse
https://est lue par le fournisseur du modèle, pas par Moon AI. - Sur les modèles d’OpenAI, une image sans
detail(ou avecauto) est envoyée avecdetail:."high" - Pour la plupart des modèles, un PDF envoyé dans une partie
fileest lu par le modèle s’il sait lire les fichiers ; sinon, son texte en est extrait avant l’envoi. - La réserve d’une requête tient compte de ses pièces jointes. Une image d’un modèle dont le traitement des images n’est pas connu, un fichier PDF ou un audio peuvent être retenus jusqu’à la taille de la fenêtre de contexte : la réserve peut être élevée, mais elle est rendue après la réponse (voir Coûts).
Moon Blur ne lit que le texte : les images, fichiers et sons partent tels quels.
RaisonnementLien vers la section Raisonnement
Les modèles de raisonnement acceptent reasoning_effort ou l’objet reasoning selon leur famille. Quand le modèle renvoie son raisonnement, il arrive dans un champ du message ou du morceau de flux (reasoning ou reasoning_content, selon le modèle). Les jetons de raisonnement sont des jetons de sortie : ils sont comptés dans usage et dans la limite de sortie.
Longueur de la réponseLien vers la section Longueur de la réponse
- Avec
max_tokens(oumax_completion_tokens), le modèle ne produit pas plus que cette valeur, raisonnement compris. Un budgetreasoning.max_tokensplus grand est ramené à cette valeur. - Sans
max_tokens, la réponse dispose d’au moins 4 096 jetons de sortie (moins si la limite du modèle est plus basse). Si le solde ou un plafond de dépense ne couvre pas cette taille, la requête est refusée (402) plutôt que servie en quelques mots. Au-delà, la limite monte jusqu’à celle du modèle (16 384 jetons au plus), tant qu’une petite part de ce qu’il reste au solde et aux plafonds la couvre, pour laisser de la place aux requêtes simultanées. Elle laisse aussi la place de l’entrée dans la fenêtre de contexte. - Pour un modèle de raisonnement d’OpenAI appelé directement, la limite est envoyée sous le nom
max_completion_tokens.
Fixer max_tokens rend la réserve plus petite et plus prévisible. C’est recommandé quand beaucoup de requêtes partent en même temps.
Paramètres ignorésLien vers la section Paramètres ignorés
Ces paramètres sont retirés avant l’envoi, sans erreur : store, metadata, service_tier, modalities, audio, prediction, web_search_options, plugins, stream_options (le serveur demande lui-même l’usage en fin de flux) et tout paramètre absent du tableau des paramètres. Le paramètre store ne peut donc pas demander au fournisseur de garder vos requêtes.
ErreursLien vers la section Erreurs
| HTTP | code | Signification |
|---|---|---|
| 400 | null | invalid ou body . |
| 400 | missing_required_parameter | model absent (param: ). |
| 400 | unsupported_content | messages absent ou mal formé, ou partie de message que l’API ne sert pas (voir Messages). |
| 400 | n_not_supported | n différent de 1. |
| 400 | unsupported_parameter | Outil d’un autre type que function, tool_choice invalide, préférence de fournisseur refusée, ou paramètre refusé par le modèle. |
| 400 ou 413 | context_length_exceeded | Requête trop longue pour la fenêtre de contexte du modèle (param: ), avec son explication. |
| 400 ou 413 | no_available_route, invalid_request | Le modèle a refusé la requête, avec son explication. |
| 402 | insufficient_credits, spend_cap_exceeded, hold_exceeds_cap | Le solde ou un plafond ne couvre pas la réserve (voir Coûts). |
| 403 | org_policy | Les règles de votre organisation refusent l’API ou ce modèle. |
| 404 | model_not_found | Modèle inconnu ou non servi par l’API (param: ). |
| 413 | moon_blur_payload_too_large | Un texte dépasse 500 000 caractères, trop long pour Moon Blur : rien n’est envoyé ni retenu. |
| 429 | model_rate_limited | Le modèle reçoit trop de requêtes, rien n’est facturé ; Retry-After dit quand réessayer. |
| 429 | credits_held_in_progress | Vos requêtes en cours retiennent le solde qui manque ; réessayez après Retry-After (2 secondes). |
| 500 à 504 | upstream_error | Le fournisseur a échoué, ou ne peut pas servir la requête pour l’instant. |
| 503 | null | upstream : le fournisseur n’a pas pu être joint. |
| 503 | pricing_unavailable | Prix du modèle momentanément inconnu : la requête est refusée plutôt que mal facturée. |
| 503 | moon_blur_unavailable | Moon Blur n’a pas pu analyser la requête : elle n’est pas envoyée, rien n’est retenu. Retry-After: . |
| 503 | billing_unavailable, org_policy_unavailable | Le solde ou les règles de l’organisation sont momentanément illisibles. |
| 504 | upstream_timeout | Le fournisseur n’a pas répondu à temps. La réserve est gardée (voir Règlement). |
Les erreurs de clé et de débit, communes à toute l’API, sont dans Erreurs. Les refus du modèle sont relayés sans le nom de son fournisseur, ses liens ni ses identifiants internes.
Voir aussiLien vers la section Voir aussi
- Modèles : les identifiants et les prix.
- Solde et coût d’une requête : lire le coût d’une conversation.
- Limites : débit, durées et nouvelles tentatives.