Una redirección de página dirige a los lectores que acceden a una ruta antigua en tu centro de ayuda a un artículo o una colección. La API te permite listar, crear, actualizar y eliminar redirecciones de página, de modo que puedes importar cientos de URL antiguas tras una migración en lugar de añadirlas una a una en el panel de control. Los marcadores, los enlaces compartidos y los resultados de los motores de búsqueda siguen funcionando.
Para gestionar las redirecciones desde el panel de control, consulta la sección «Cómo gestionar las redirecciones de página» en tu centro de ayuda .
| Método | Camino | Alcance | Hace |
|---|---|---|---|
GET | /sites/{site_id}/page-redirects | read | Listas de redirecciones, las más recientes primero. |
POST | /sites/{site_id}/page-redirects | write | Crea una redirección |
PATCH | /sites/{site_id}/page-redirects/{redirect_id} | write | Actualiza una redirección |
DELETE | /sites/{site_id}/page-redirects/{redirect_id} | admin | Elimina una redirección |
La creación y actualización de redirecciones requiere un plan que incluya redirecciones de página.
Lista de redirecciones de página
La lista abarca todos los idiomas, del más reciente al más antiguo. Incluye las redirecciones que usted crea y las que Notiondesk crea automáticamente después de un cambio de slug.
curl "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/page-redirects?page_size=100" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16"{
"object": "list",
"data": [
{
"id": "3f1c2a9e-8b7d-4c6e-9a5f-1e2d3c4b5a69",
"locale": "en",
"type": "article",
"origin": "manual",
"source_path": "/legacy/getting-started",
"target_id": "1761580412",
"target_title": "Getting started",
"target_slug": "getting-started",
"target_status": "published"
}
],
"has_more": false,
"next_cursor": null
}| Campo | Significado |
|---|---|
id | El identificador de redirección, utilizado como redirect_id |
locale | El idioma del objetivo |
type | article o category (una colección) |
origin | manual para una redirección creada por alguien, system para una Notiondesk creada cuando se cambió un slug. |
source_path | El camino que redirige |
target_id | El id del artículo o colección de destino |
| __PRESERVADO_61__, __PRESERVADO_60__ | El título y el segmento de ruta del objetivo en locale |
target_status | El estado del objetivo, como published o draft. |
La lista muestra como máximo las 10 000 redirecciones más recientes. Si su integración elimina redirecciones mientras las muestra, vuelva a empezar desde la primera página: una eliminación desplaza los elementos siguientes, por lo que la siguiente página puede saltarse uno. Consulte las solicitudes de API de paginación y versión Notiondesk .
Crear una redirección de página
Todos los campos son obligatorios:
curl -X POST "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/page-redirects" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6f0d6b1e-create-getting-started" \
-d '{"type": "article", "source_path": "/legacy/getting-started", "target_id": "1761580412", "locale": "en"}'| Campo | Tipo | Notas |
|---|---|---|
type | cadena | __PRESERVADO_54__ o __PRESERVADO_53__ |
source_path | cadena | La ruta de redirección, de hasta 512 caracteres, por ejemplo /legacy/getting-started. Ninguna otra redirección del centro de ayuda puede utilizarla. |
target_id | cadena | El id del artículo o colección de destino, de la lista de artículos o colecciones . Hasta 255 caracteres. |
locale | cadena | El idioma del destino. El destino debe tener una traducción en él. |
La ruta responde a 201 Created con la nueva redirección, en los mismos campos que la lista.
- Una
source_pathotra redirección ya utiliza respuestas 409conflict_error, y el mensaje nombra la ruta.
- Un
target_idsin traducción enlocaleresponde 404not_found, y el mensaje nombra el id.
Envía un Idempotency-Key con cada creación. Un reintento con la misma clave y cuerpo responde con el mismo 201 sin crear una segunda redirección. Consulta Manejar errores de API, límites de velocidad y reintentos Notiondesk .
Actualizar una redirección de página
Envía únicamente los campos que deseas modificar. Los campos que omitas conservarán su valor actual.
Los campos siguen las reglas de creación. La ruta responde a 200 OK con la redirección actualizada.
La redirección debe seguir apuntando a un destino que exista en su locale después del cambio. Para que una redirección de artículo apunte a una colección, envíe type y target_id juntos.
Eliminar una redirección de página
La eliminación es irreversible, por lo que la ruta necesita dos medidas de seguridad:
curl -X PATCH "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/page-redirects/3f1c2a9e-8b7d-4c6e-9a5f-1e2d3c4b5a69" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16" \
-H "Content-Type: application/json" \
-d '{"source_path": "/legacy/start"}'curl -i -X DELETE "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/page-redirects/3f1c2a9e-8b7d-4c6e-9a5f-1e2d3c4b5a69" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'- el ámbito
admin;
- el cuerpo
{"confirm": true}, con el booleano JSONtrue.
La ruta responde 204 No Content. Los lectores que abren la ruta anterior dejan de ser redirigidos. Eliminar la misma redirección de nuevo responde 404 not_found, a menos que se vuelva a intentar con el mismo Idempotency-Key.
adminImportar redirecciones después de una migración
¿Viajas desde otra herramienta del centro de ayuda? Asigna cada ruta antigua a su nuevo artículo y luego crea una redirección por fila. Este script lee un archivo CSV con las columnas source_path,target_id,locale:
import { readFileSync } from "node:fs";
import { createHash } from "node:crypto";
const siteId = "c74781f6-1aea-4e17-ab23-bbb8b4d174b6";
const rows = readFileSync("redirects.csv", "utf8").trim().split(/\r?\n/).slice(1);
for (const row of rows) {
const [source_path, target_id, locale] = row.split(",");
const idempotencyKey = createHash("sha256").update(`${source_path}|${target_id}|${locale}`).digest("hex");
const response = await fetch(`https://api.notiondesk.so/sites/${siteId}/page-redirects`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.NOTIONDESK_API_KEY}`,
"nd-version": "2026-10-16",
"Content-Type": "application/json",
"Idempotency-Key": idempotencyKey,
},
body: JSON.stringify({ type: "article", source_path, target_id, locale }),
});
if (response.status === 429) {
const seconds = Number(response.headers.get("Retry-After")) || 5;
console.log(`Rate limited, waiting ${seconds}s`);
await new Promise((resolve) => setTimeout(resolve, seconds * 1000));
rows.push(row);
continue;
}
const result = await response.json();
console.log(response.status, source_path, response.ok ? result.id : result.code);
}- La clave se deriva de la fila, por lo que ejecutar el script dos veces no duplica la funcionalidad. Cada fila que se corrige obtiene una clave nueva.
- Una ruta que ya tiene un registro de redirección
conflict_error. Actualícela o déjela como está.
- Las escrituras están limitadas a 20 solicitudes por minuto por clave, por lo que 500 redirecciones tardan aproximadamente 25 minutos. El script espera cuando se alcanza el límite de solicitudes y luego vuelve a intentar la fila.
- Utilice únicamente una clave con los ámbitos
readywrite.
Errores
| Estado | Cuando | code |
|---|---|---|
| 400 | Falta un campo o está vacío, type o locale no se aceptan, un valor es demasiado largo, confirm no es true, o el cuerpo tiene un campo desconocido. | validation_error |
| 403 | La clave carece de read, write o admin, dependiendo de la ruta. | insufficient_scope |
| 403 | Tu plan no incluye redirecciones de página, o el creador de la clave no puede cambiar este centro de ayuda. | permission_denied |
| 404 | El centro de ayuda o la redirección no existen en tu espacio de trabajo, o el destino no tiene traducción en locale. | not_found |
| 409 | Otra redirección del centro de ayuda ya utiliza source_path. | conflict_error |
Consulte Handle Notiondesk Errores de API, límites de velocidad y reintentos para obtener el envoltorio de error y los demás códigos.
Preguntas frecuentes
¿Necesito crear redirecciones cuando cambio un slug?
Normalmente no. Notiondesk crea la redirección automáticamente cuando cambias un slug que configuraste manualmente en un artículo o colección publicados, las redirecciones automáticas están activadas para el centro de ayuda y tu plan incluye redirecciones de página. Estas redirecciones muestran origin: "system" en la lista. En cualquier otro caso, crea la redirección tú mismo. Obtén más información sobre los slugs en Cómo crear URL amigables para artículos y colecciones .
¿Puede una redirección apuntar a una URL externa?
No. Una redirección de página apunta a un artículo o a una colección del mismo centro de ayuda.
¿Por qué mi clave puede crear redirecciones pero no eliminarlas?
Para eliminar se necesita el ámbito admin, que no se requiere para crear ni actualizar. Añada admin a la clave y compruebe que su creador sea el propietario del espacio de trabajo o un administrador.