# Limites

> Débit par clé, requêtes simultanées, tailles, durées et plafonds de dépense de l’API développeur, et la façon de réessayer une requête sans la payer deux fois.

Les valeurs ci-dessous sont celles du 5 novembre 2026. L’onglet « Limites » du portail affiche celles qui s’appliquent à votre workspace et permet de régler les plafonds de dépense ([ouvrir](https://chat.realmoon.ai/settings/developer/limits)).

## Débit

| Limite | Valeur | Réponse au-delà |
| --- | --- | --- |
| Requêtes par clé | 600 par minute | `429 rate_limit_exceeded` avec `Retry-After` |
| Requêtes refusées avec une même clé (clé révoquée, adresse non autorisée…) | 60 par minute | `429 rate_limit_exceeded` |
| Échecs d’authentification depuis une même adresse | 60 par minute | `429 rate_limit_exceeded` |

- La limite de débit compte par clé, pas par workspace : plusieurs clés ont chacune la leur.
- Une clé valide qui vient de servir n’est pas freinée parce qu’une autre personne de la même adresse (réseau d’entreprise, NAT) se trompe de clé.
- Une adresse IPv6 est comptée avec tout son préfixe /64.
- L’onglet « Limites » du portail rappelle la limite par clé, sous « Limites de débit ».

## Requêtes simultanées

La conversation n’a pas de limite de requêtes simultanées en nombre : chaque requête retient sa part du solde (voir [Réserve](https://realmoon.ai/documentation/api/couts/#reserve)), et c’est le solde qui borne ce qui peut tourner en même temps. Quand les réserves en cours bloquent une nouvelle requête qui tiendrait sinon, l’API répond `429 credits_held_in_progress` (`Retry-After: 2`).

Les médias ont un nombre de requêtes en cours par workspace :

| Point d’accès | Requêtes en cours |
| --- | --- |
| Images | 8 |
| Vidéos (tâches non terminées) | 20 |
| Téléchargements de vidéos | 4 |
| Voix | 8 |
| Transcription | 4 |
| Embeddings | 8 |
| OCR | 2 |

Au-delà : `429 too_many_concurrent` avec `Retry-After` (30 secondes pour les vidéos, 5 secondes sinon).

## Tailles

| Point d’accès | Limite |
| --- | --- |
| `/v1/chat/completions` | La fenêtre de contexte du modèle (`context_length` dans `/v1/models`). Avec Moon Blur, chaque texte fait 500 000 caractères au plus. |
| `/v1/images/generations` | Corps JSON de 1 Mo. |
| `/v1/images/edits` | Corps de 90 Mo ; images de 20 Mo et 40 mégapixels chacune. |
| `/v1/videos` | Corps de 60 Mo ; images de 20 Mo. |
| `/v1/audio/speech` | Corps de 256 Ko ; texte de 4 096 caractères. |
| `/v1/audio/transcriptions` | Fichier de 25 Mo et 20 minutes d’audio. |
| `/v1/embeddings` | Corps de 8 Mo ; 2 048 textes et environ 1 million de jetons. |
| `/v1/ocr` | Document de 30 Mo ; 50 pages par requête. |

Un envoi multipart doit porter un en-tête `Content-Length` (`411 length_required` sinon).

## Durées

| Cas | Durée |
| --- | --- |
| Conversation en flux (`stream: true`) | Jusqu’à une heure. Le flux est coupé si le modèle n’envoie rien pendant 5 minutes. |
| Conversation sans flux | La réponse doit arriver en 100 secondes environ : au-delà, la connexion peut être coupée par le réseau. |
| Images, voix, transcription, embeddings | Attente de 85 secondes au plus pour le modèle. |
| OCR | 85 secondes environ ; les pages non lues à temps ne sont ni renvoyées ni facturées. |
| Vidéos | Le lancement répond tout de suite ; la vidéo se suit ensuite (voir [Vidéos](https://realmoon.ai/documentation/api/videos/#suivre)). |

> [!TIP]
> **Réponses longues**
>
> Pour une réponse longue ou un modèle qui raisonne, utilisez le flux : l’API envoie des commentaires `: keep-alive` pendant que le modèle travaille, et la connexion reste ouverte. Sans flux, rien n’est envoyé avant la fin.

## Plafonds de dépense

Deux niveaux de plafonds bornent ce que l’API peut dépenser. Ils se règlent en euros.

| Niveau | Où | Fenêtres |
| --- | --- | --- |
| Workspace | Onglet « Limites », bloc « Plafonds de dépense du workspace » : « Par heure (€) », « Par jour (€) », « Par mois (€) », puis « Enregistrer les limites ». | Glissantes : la dernière heure, les dernières 24 heures et les 30 derniers jours. Laissez vide pour ne pas limiter. |
| Clé | À la création de la clé : « Plafond de dépense (€) » et « Période ». Voir [Authentification](https://realmoon.ai/documentation/api/authentification/#creer). | Une fenêtre glissante d’une heure, de 24 heures ou de 30 jours. |

- Chaque requête doit tenir dans tous les plafonds qui la concernent, réserve comprise. Au-delà : `402 spend_cap_exceeded` (avec `scope` et `window`), ou `402 hold_exceeds_cap` quand c’est la réserve de cette seule requête qui dépasse ce que le plafond laisse.
- Le propriétaire et le contact de facturation reçoivent un e-mail quand un plafond est atteint.
- Une fenêtre glissante se libère au fil du temps : une dépense d’il y a 61 minutes ne compte plus dans le plafond par heure.

## Réessayer sans payer deux fois

Chaque requête HTTP reçue a son propre identifiant (`X-Moon-Request-Id`) et n’est facturée qu’une fois. Mais l’API ne reconnaît pas une nouvelle tentative de votre part : renvoyer la même requête en crée une deuxième, avec sa propre réserve et son propre coût. Il n’y a pas d’en-tête d’idempotence.

| Cas | Réessayer ? |
| --- | --- |
| `429` avec `Retry-After` | Oui, après le délai. La requête refusée ne coûte rien. |
| `402`, `400`, `401`, `403`, `404`, `413` | Non : corrigez la cause d’abord. Rien n’est facturé. |
| `503` (`moon_blur_unavailable`, `billing_unavailable`, `service_unavailable`, `pricing_unavailable`) | Oui, après `Retry-After` ou quelques secondes. Rien n’est facturé. |
| `502 upstream_error` | Oui. Rien n’est facturé si le modèle n’a rien produit. |
| `504 upstream_timeout` sur la conversation, connexion coupée, délai de votre client dépassé | Avec prudence : la première requête a pu être facturée (sa réserve est gardée). Vérifiez la dépense dans « Utilisation » › « Journal des requêtes », ou avec `GET /v1/generation` si vous avez reçu l’identifiant de la requête, avant de relancer une requête coûteuse. Sur les médias, un `504` ne coûte rien. |

> [!WARNING]
> **Nouvelles tentatives automatiques**
>
> Les SDK d’OpenAI relancent seuls les erreurs 408, 409, 429 et 5xx, et les connexions perdues, deux fois par défaut. Pour une requête coûteuse (vidéo, long raisonnement), réglez `max_retries=0` (Python) ou `maxRetries: 0` (JavaScript) et gérez la relance vous-même, ou donnez au client un délai plus long que la durée attendue de la réponse.

```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"],
    max_retries=0,
    timeout=600,
)
```

```javascript title="JavaScript"
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://api.realmoon.ai/v1',
  apiKey: process.env.MOONAI_API_KEY,
  maxRetries: 0,
  timeout: 600_000,
});
```

---

Documentation Moon AI › API développeur › Limites. Page : https://realmoon.ai/documentation/api/limites/. 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.
