Respuesta directa
La API de RedirHub vive en https://api.redirhub.com/v1 y usa un token Bearer. Crea una redirección con POST /links y handler redirect. Cambia o elimina muchos enlaces a la vez con PUT /bulk o DELETE /bulk y un filtro, después de previsualizar el cambio con POST /bulk/summary. La API está incluida en Core, Pro y Enterprise.
1. Obtén un token y pruébalo#
Crea un token como se describe en Crea y administra tokens de API. Cada token pertenece a un workspace. Guárdalo en tu servidor, nunca en código del navegador.
bashexport REDIRHUB_TOKEN="your-token"
curl "https://api.redirhub.com/v1/test" \
-H "Authorization: Bearer $REDIRHUB_TOKEN"2. Crea una redirección#
Para una redirección, url es el origen (un dominio, o un dominio y una ruta, sin https://) y destination es la URL de destino completa. Un dominio sin ruta redirige todas las rutas en él.
bashcurl -X POST "https://api.redirhub.com/v1/links" \
-H "Authorization: Bearer $REDIRHUB_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"handler": "redirect",
"url": "old-site.com/pricing",
"destination": "https://new-site.com/pricing",
"type": "301",
"forward_query": true,
"tags": ["migration"]
}'La respuesta devuelve el nuevo enlace dentro de un array data, con su id. Usa handler migration para asignaciones de migración de sitios web y short-url o qr (con host y alias en lugar de url) para enlaces de marca y códigos QR.
3. Crea cientos desde un archivo#
Recorre un CSV con las mismas columnas que la importación del panel (source_url, destination, type) y envía una solicitud por fila. Respeta los límites de tasa y reintenta en 429. Para una importación única, la importación CSV en el panel es más rápida y muestra primero una revisión.
pythonimport csv, os, time, requests
API = "https://api.redirhub.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REDIRHUB_TOKEN']}"}
with open("redirects.csv", newline="") as f:
for row in csv.DictReader(f):
body = {
"handler": "redirect",
"url": row["source_url"],
"destination": row["destination"],
"type": row.get("type") or "301",
}
while True:
r = requests.post(f"{API}/links", json=body, headers=HEADERS)
if r.status_code != 429:
break
time.sleep(int(r.headers.get("Retry-After", 5)))
print(row["source_url"], r.status_code, r.json().get("errors", ""))4. Buscar enlaces#
bashcurl -G "https://api.redirhub.com/v1/links" \
-H "Authorization: Bearer $REDIRHUB_TOKEN" \
--data-urlencode "filter[host]=old-site.com" \
--data-urlencode "filter[handler]=redirect"Los resultados están paginados por cursor: sigue meta.cursor.next hasta que esté vacío. Otros filtros incluyen etiquetas, destino, búsqueda, created_after y created_before; consulta Filtrado y ordenación.
5. Cambiar un enlace#
bashcurl -X PUT "https://api.redirhub.com/v1/links/LINK_ID" \
-H "Authorization: Bearer $REDIRHUB_TOKEN" \
-H "Content-Type: application/json" \
-d '{"destination": "https://new-site.com/plans"}'La URL de origen de un enlace no se puede cambiar después de crearlo. Para mover un origen, crea un enlace nuevo y elimina el anterior.
6. Cambiar muchas destinos a la vez#
Vista previa primero. POST /bulk/summary devuelve cuántos enlaces coincide el filtro, cuántos tuvieron visitas en las últimas cuatro semanas y los cinco primeros cambios:
bashcurl -X POST "https://api.redirhub.com/v1/bulk/summary" \
-H "Authorization: Bearer $REDIRHUB_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filter": {"tags": "migration"},
"destination_find": "new-site.com",
"destination_replace": "new-brand.com"
}'Luego envía el mismo cuerpo a PUT /bulk para aplicarlo. La respuesta te indica cuántos enlaces se vieron afectados. Para añadir parámetros UTM a cada destino en su lugar, envía destination_params, por ejemplo {"utm_campaign": "fall-2026"}.
bashcurl -X PUT "https://api.redirhub.com/v1/bulk" \
-H "Authorization: Bearer $REDIRHUB_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filter": {"tags": "migration"},
"destination_find": "new-site.com",
"destination_replace": "new-brand.com"
}'7. Eliminar en masa#
No undo
DELETE /bulk elimina todos los enlaces que coincidan con el filtro y no se puede deshacer. Ejecuta primero POST /bulk/summary con el mismo filtro y enumera los enlaces con GET /links si quieres una copia.
bashcurl -X DELETE "https://api.redirhub.com/v1/bulk" \
-H "Authorization: Bearer $REDIRHUB_TOKEN" \
-H "Content-Type: application/json" \
-d '{"filter": {"tags": "summer-sale"}}'Al menos un filtro debe tener un valor, para que una solicitud no coincida accidentalmente con todo el espacio de trabajo. La respuesta devuelve affected (enlaces eliminados) y pending (enlaces que aún se están eliminando en segundo plano).
Trabajando en su lugar desde un asistente de IA#
El servidor MCP de RedirHub permite que Claude, ChatGPT o Cursor hagan las mismas tareas en lenguaje natural, incluida la importación de hasta unos 5.000 filas en una sola llamada. Los cambios masivos a través de MCP siempre devuelven primero una simulación y solo se aplican después de que lo confirmes.
Referencia completa: referencia de la API de RedirHub.
Preguntas frecuentes
Core, Pro y Enterprise. Cada token de API está limitado a un solo espacio de trabajo.
Envía POST https://api.redirhub.com/v1/links con handler redirect, url (el origen, como old-site.com/pricing), destination (la URL de destino completa) y opcionalmente type, como 301.
Sí. POST /bulk/summary con el mismo filtro y cambio muestra cuántos enlaces coinciden, cuántos tuvieron visitas recientes y los cinco primeros destinos antes y después.
No. Previsualízalo con POST /bulk/summary y conserva una copia de GET /links antes de llamar a DELETE /bulk.
