> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gradium.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Erreurs

> Comment les erreurs sont signalées pour REST, WebSocket et les réponses en streaming

Gradium signale les erreurs différemment selon le transport (REST ou
WebSocket) et selon que l'échec survient avant ou après le début d'une
réponse en streaming.

## Endpoints REST

Les appels REST (`POST /api/post/speech/tts` et `POST /api/post/speech/asr`)
présentent deux types d'erreurs.

### Erreurs avant le flux (niveau HTTP)

Si la requête échoue avant le début du flux de réponse, par exemple en
cas de clé API manquante ou révoquée, de `Content-Type` non pris en
charge, d'audio mal formé ou d'ID de voix invalide, le serveur répond
avec `HTTP 500` et un corps en texte brut. Deux formes de corps sont
possibles :

**Erreurs en amont (avec un code de statut Gradium).** Les échecs
d'authentification et les rejets au niveau du worker sont renvoyés avec
un code numérique :

```
error from server <code>: <reason>
```

Par exemple, une clé API révoquée ou expirée renvoie :

```
error from server 1008: API key is revoked or expired
```

Le `<code>` numérique correspond aux codes utilisés par le message
WebSocket `error` :

| Code | Signification |
| - | - |
| `1008` | Violation de politique : clé API invalide ou manquante, message de setup manquant, format audio invalide, etc. |
| `1011` | Erreur interne du serveur |

**Rejets au niveau du proxy.** Les erreurs levées avant que la requête
n'atteigne le worker en amont, par exemple un en-tête `Content-Type` non pris en charge, sont renvoyées sous forme de chaînes d'erreur brutes, sans le préfixe `error from server` :

```
unsupported content type for SST 'audio/mpeg'
```

Dans les deux cas, la réponse est `HTTP 500` et le corps est en texte
brut (pas en JSON). Considérez toute réponse hors 2xx comme fatale pour
la requête concernée. Pour récupérer un code d'erreur Gradium, vérifiez
si le corps commence par `error from server` ; si c'est le cas, analysez
ce préfixe.

### Erreurs en cours de flux

Les erreurs qui surviennent après le début du streaming de la réponse
sont signalées sous forme de messages JSON dans le corps du flux. Le
statut HTTP sera alors déjà `200`.

**Synthèse vocale (TTS)** (`POST /api/post/speech/tts`, lorsque `only_audio` vaut `false`) :

```json theme={null}
{"type": "error", "message": "Error description"}
```

**Transcription (STT)** (`POST /api/post/speech/asr`, toujours en NDJSON) :

```json theme={null}
{"type": "error", "message": "Error description"}
```

Dans les deux cas, la connexion se termine après le message d'erreur.
Considérez toute ligne `error` reçue dans le flux comme la fin de la
sortie exploitable.

## Endpoints WebSocket

Lorsqu'un problème survient pendant une session WebSocket
(`/api/speech/tts`, `/api/speech/asr`, `/api/speech/s2s`), le serveur
envoie un message `error` puis ferme le socket :

```json theme={null}
{"type": "error", "message": "Error description", "code": 1008}
```

**Codes de fermeture courants :**

| Code | Signification |
| - | - |
| `1008` | Violation de politique. Causes possibles : clé API invalide, message de setup manquant ou mal formé, envoi de données avant le setup, format audio invalide. |
| `1011` | Erreur interne du serveur. La session s'est terminée à la suite d'une défaillance inattendue côté serveur. |

Après l'envoi d'un message `error`, le serveur ferme le WebSocket.
Ouvrez une nouvelle connexion pour réessayer.

Pour le cycle de vie complet setup/entrée/flush/fin, consultez
[Cycle de vie WebSocket](/fr/guides/websocket-lifecycle).

## Erreurs d'authentification

Les échecs d'authentification (clé API manquante, invalide ou révoquée)
produisent toujours le code `1008` :

* **REST** : `HTTP 500` avec le corps `error from server 1008: API key is revoked or expired` (ou similaire).
* **WebSocket** : message `error` avec `code: 1008`, puis fermeture.

Générez une nouvelle clé API dans le tableau de bord Gradium et
remplacez la valeur de l'en-tête `x-api-key`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.