# 415 Unsupported Media Type: el formato del cuerpo de la solicitud es incorrecto

> 415 Unsupported Media Type significa que el servidor rechaza el cuerpo de la solicitud por su formato, normalmente por un Content-Type ausente o erróneo.

URL: https://yes-seo.com/es/codigos-http/415

**415 Unsupported Media Type** significa que el servidor no acepta el cuerpo de la solicitud por su formato. Enviaste datos de formulario a un endpoint que espera JSON, olvidaste la cabecera `Content-Type` o usaste una compresión que el servidor no sabe descodificar.

## Definición

La [RFC 9110, sección 15.5.16](https://www.rfc-editor.org/rfc/rfc9110#section-15.5.16) dice que el problema puede venir del `Content-Type` de la solicitud, de su `Content-Encoding` o de que el servidor inspeccione los datos directamente. Cuando la causa es una codificación de contenido no admitida, la respuesta debería incluir una cabecera `Accept-Encoding` con las codificaciones que sí acepta. Para PATCH, la RFC 5789 define `Accept-Patch` para enumerar los formatos de parche admitidos.

No lo confundas con [406 Not Acceptable](https://yes-seo.com/es/codigos-http/406): el 415 trata de lo que el cliente *envía*; el 406, de lo que está dispuesto a *recibir*.

## Causas habituales

- Un `Content-Type` ausente o erróneo, como `application/x-www-form-urlencoded` o `text/plain` enviado a una API de JSON. Frameworks como Spring y ASP.NET Core los rechazan con 415.

- Una subida con un tipo de archivo que el endpoint no acepta.

- Un cuerpo de solicitud comprimido con gzip enviado a un servidor que no descomprime las solicitudes.

- Llamadas `fetch()` de JavaScript que envían `JSON.stringify(data)` sin establecer la cabecera, de modo que el cuerpo sale como `text/plain`.

## Cómo solucionarlo

```
# curl: declara el cuerpo 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' })
});
```

En el servidor, devuelve un mensaje que nombre los tipos aceptados para que quienes integran tu API puedan corregir su llamada enseguida.

## Impacto en el SEO

Los rastreadores no envían cuerpos de solicitud, así que el 415 no tiene efecto directo en la indexación. Sí aparece en el trabajo de SEO a través de las API: enviar URL a [IndexNow](https://yes-seo.com/es/glosario/indexnow) por POST, por ejemplo, requiere un cuerpo JSON con la cabecera correcta, algo que el [enviador de IndexNow](https://yes-seo.com/es/enviar-indexnow) gestiona por ti. Si una página normal devuelve 415 a un GET, es un fallo del servidor; Google lo trataría como un 4xx y descartaría la página. Comprueba las páginas con el [comprobador de códigos de estado HTTP](https://yes-seo.com/es/comprobador-codigo-http).

## Ejemplo

```
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"}
```

## Preguntas frecuentes

### ¿Cuál es la diferencia entre 415 y 400?

El 400 es un “esta solicitud está mal formada” general. El 415 es específico: el servidor no puede gestionar el formato del cuerpo que enviaste, normalmente por la cabecera Content-Type.

### ¿Cómo arreglo un error 415 en fetch o Postman?

Establece la cabecera Content-Type para que coincida con el cuerpo, normalmente application/json para JSON, y asegúrate de que el cuerpo realmente tiene ese formato.

### ¿Un error 415 afecta al SEO?

No directamente, ya que los rastreadores no envían cuerpo de solicitud. Importa en el trabajo con API, como las herramientas de envío de URL, y una página que devuelva 415 a un GET se descartaría como cualquier página 4xx.

