# 415 Unsupported Media Type : le format du corps de la requête est incorrect

> 415 Unsupported Media Type : le serveur refuse le corps de la requête à cause de son format, souvent un en-tête Content-Type absent ou incorrect.

URL: https://yes-seo.com/fr/codes-http/415

**415 Unsupported Media Type** signifie que le serveur n’accepte pas le corps de la requête à cause de son format. Vous avez envoyé des données de formulaire à un point d’accès qui attend du JSON, oublié l’en-tête `Content-Type`, ou utilisé une compression que le serveur ne sait pas décoder.

## Définition

La [RFC 9110, section 15.5.16](https://www.rfc-editor.org/rfc/rfc9110#section-15.5.16) indique que le problème peut venir du `Content-Type` de la requête, de son `Content-Encoding`, ou de l’inspection directe des données par le serveur. Quand la cause est un codage de contenu non pris en charge, la réponse devrait inclure un en-tête `Accept-Encoding` listant les codages acceptés. Pour PATCH, la RFC 5789 définit `Accept-Patch` pour lister les formats de correctif pris en charge.

Ne le confondez pas avec [406 Not Acceptable](https://yes-seo.com/fr/codes-http/406) : le 415 concerne ce que le client *envoie*, le 406 ce qu’il accepte de *recevoir*.

## Causes courantes

- Un `Content-Type` absent ou incorrect, comme `application/x-www-form-urlencoded` ou `text/plain` envoyé à une API JSON. Des frameworks comme Spring et ASP.NET Core les rejettent avec un 415.

- Un envoi de fichier dans un type que le point d’accès n’accepte pas.

- Un corps de requête compressé en gzip envoyé à un serveur qui ne décompresse pas les requêtes.

- Des appels JavaScript `fetch()` qui envoient `JSON.stringify(data)` sans définir l’en-tête, si bien que le corps part en `text/plain`.

## Comment le corriger

```
# curl : déclarer le corps JSON
curl -X POST https://api.example.com/v1/contacts \
  -H 'Content-Type: application/json' \
  -d '{"email":"sara@example.com"}'

// fetch()
fetch('/api/v1/contacts', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ email: 'sara@example.com' })
});
```

Côté serveur, renvoyez un message qui nomme les types acceptés, afin que les intégrateurs corrigent vite leur appel.

## Impact SEO

Les robots n’envoient pas de corps de requête : le 415 n’a donc aucun effet direct sur l’indexation. Il apparaît pourtant dans le travail SEO via les API : soumettre des URL à [IndexNow](https://yes-seo.com/fr/glossaire/indexnow) par POST, par exemple, exige un corps JSON avec le bon en-tête, ce que l’[outil d’envoi IndexNow](https://yes-seo.com/fr/soumission-indexnow) gère pour vous. Si une page ordinaire renvoie 415 à un GET, c’est un bogue du serveur ; Google le traiterait comme un 4xx et retirerait la page. Contrôlez vos pages avec le [vérificateur de statut HTTP](https://yes-seo.com/fr/verificateur-code-http).

## Exemple

```
POST /api/v1/contacts HTTP/1.1
Host: api.example.com
Content-Type: text/plain

email=sara@example.com

HTTP/1.1 415 Unsupported Media Type
Content-Type: application/json

{"error":"Expected Content-Type: application/json"}
```

## Questions fréquentes

### Quelle est la différence entre 415 et 400 ?

400 est un message général : « cette requête est mal formée ». 415 est précis : le serveur ne sait pas traiter le format du corps que vous avez envoyé, en général à cause de l’en-tête Content-Type.

### Comment corriger une erreur 415 dans fetch ou Postman ?

Définissez l’en-tête Content-Type en accord avec le corps, en général application/json pour du JSON, et vérifiez que le corps est bien dans ce format.

### Une erreur 415 affecte-t-elle le SEO ?

Pas directement, puisque les robots n’envoient aucun corps de requête. Elle compte pour le travail avec les API, comme les outils de soumission d’URL, et une page qui renvoie 415 à un GET serait retirée comme n’importe quelle page 4xx.

