# 201 Created: confirmar que se ha creado un recurso

> 201 Created confirma que la solicitud tuvo éxito y creó un recurso nuevo, que normalmente se identifica con la cabecera Location.

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

**201 Created** confirma que la solicitud tuvo éxito y creó algo nuevo: una cuenta, un pedido, un archivo subido, un registro en una API. Es un estado propio de las operaciones de escritura, y la respuesta debe apuntar al nuevo recurso.

## Definición

La [RFC 9110, sección 15.3.2](https://www.rfc-editor.org/rfc/rfc9110#section-15.3.2) dice que la solicitud “se ha cumplido y ha dado lugar a la creación de uno o más recursos nuevos”. El recurso nuevo principal se identifica con la cabecera `Location` o, si no la hay, con la URL de la solicitud. El cuerpo suele describir el recurso nuevo y enlazarlo. Un 201 suele responder a un POST (crear dentro de una colección) o a un PUT (crear en una URL elegida por el cliente).

```
POST /api/v1/articles HTTP/1.1
Host: api.example.com
Content-Type: application/json

{"title":"HTTP status codes for SEO"}

HTTP/1.1 201 Created
Location: /api/v1/articles/4821
Content-Type: application/json

{"id":4821,"title":"HTTP status codes for SEO","status":"draft"}
```

Si el trabajo todavía no ha terminado, [202 Accepted](https://yes-seo.com/es/codigos-http/202) es más honesto. Si el recurso ya existe, plantéate [409 Conflict](https://yes-seo.com/es/codigos-http/409); si los datos de entrada no superan la validación, [422 Unprocessable Content](https://yes-seo.com/es/codigos-http/422).

## Impacto en el SEO

Las páginas pensadas para buscadores deben responder a GET con [200 OK](https://yes-seo.com/es/codigos-http/200), no con 201. [La documentación de Google](https://developers.google.com/search/docs/crawling-indexing/http-network-errors?hl=es) indica que, con 201 y 202, Googlebot espera el contenido durante un tiempo limitado y luego pasa lo que haya recibido al proceso de indexación. Así que una página servida con 201 todavía puede procesarse, pero ese estado apunta a un error de enrutamiento o de código; por ejemplo, un controlador pensado para crear registros que se reutiliza para mostrar una página pública. Corrígelo en lugar de confiar en la tolerancia de Google.

## Consejos para desarrolladores

- Envía siempre `Location` con la URL del recurso nuevo.

- Devuelve en el cuerpo la representación creada para ahorrarle al cliente una segunda solicitud.

- Haz que los endpoints de creación se puedan reintentar sin riesgo, por ejemplo con una clave de idempotencia, para que una solicitud repetida no cree duplicados.

## Cómo comprobarlo

Pasa las URL públicas por el [comprobador de códigos de estado HTTP](https://yes-seo.com/es/comprobador-codigo-http); todo lo que no sea un 200 en una página indexable merece una revisión. En los endpoints de una API, curl con `-i` muestra la línea de estado y la cabecera `Location`:

```
curl -i -X POST https://api.example.com/v1/articles \
  -H 'Content-Type: application/json' -d '{"title":"Draft"}'
```

## Preguntas frecuentes

### ¿Cuál es la diferencia entre 200 y 201?

200 OK es un éxito general. 201 Created indica específicamente que se creó un recurso nuevo, y suele incluir una cabecera Location con la URL de ese recurso.

### ¿Debe una respuesta 201 incluir cuerpo?

No es obligatorio, pero lo normal es que lo lleve: una descripción del recurso nuevo o el propio recurso, junto con un enlace a él. Así el cliente se ahorra una solicitud adicional.

### ¿Puede una página web devolver 201 a Googlebot?

No debería. Google dice que espera un tiempo limitado el contenido de un 201 y luego procesa lo que haya recibido, pero las páginas públicas deben devolver 200. Un 201 en una solicitud GET suele indicar un error de enrutamiento.

