Crea y gestiona redireccionamientos, rutas personalizadas, códigos QR y páginas desde tu propio código. Una API REST pequeña, con JSON de entrada y de salida.
Todo lo que haces en el panel con redireccionamientos, rutas personalizadas, códigos QR y las páginas que muestran también se puede hacer con la API: crear un redireccionamiento cuando un cliente se registra, añadir rutas de campaña desde un script o generar códigos QR para imprimir en lote.
Cada solicitud necesita una clave de API, enviada en el encabezado Authorization como token Bearer.
export R301_KEY="r301_…" # your key, from the dashboard
curl https://api.redirect-301.com/v1/me \ -H "Authorization: Bearer $R301_KEY"
{
"email": "you@example.com",
"plan": "studio",
"maxRedirects": 5
}Trata las claves como contraseñas: guárdalas en tu servidor, nunca en una página o app que otros puedan inspeccionar. Si una clave se filtra, revócala en el panel; deja de funcionar de inmediato.
Las llamadas correctas devuelven 200, 201 (creado) o 204 (eliminado, sin cuerpo). Los errores siempre tienen la misma forma: un code estable que tu código puede comprobar y un message legible.
{
"error": {
"code": "plan_limit_reached",
"message": "Your plan allows 5 redirect(s)."
}
}| Status | Código | Cuándo |
|---|---|---|
| 400 | validation_error | Falta un campo o no es válido. El mensaje dice cuál. |
| 401 | invalid_api_key | Sin clave, o la clave es incorrecta o fue revocada. |
| 403 | api_not_enabled | Tu plan actual no incluye la API. |
| 403 | account_inactive | La cuenta está inactiva (por ejemplo, la suscripción fue cancelada). |
| 404 | not_found | El redireccionamiento, la ruta, el código QR o la página no existe en tu cuenta. |
| 409 | plan_limit_reached | Ya tienes tantos redireccionamientos como permite tu plan. |
| 409 | host_taken | El dominio ya está registrado. |
| 409 | path_exists | Esa ruta ya existe en el redireccionamiento. |
| 429 | rate_limited | Demasiadas solicitudes: espera los segundos del encabezado Retry-After. |
Cada clave puede hacer 60 solicitudes por minuto.
Un redireccionamiento envía cada visita a uno de tus dominios (host) a otra URL (redirectTo). Se identifica por el nombre del dominio.
/redirectsLista tus redireccionamientos, con el maxRedirects de tu plan./redirectsCrea un redireccionamiento./redirects/{host}Devuelve un redireccionamiento./redirects/{host}Cambia redirectTo, noDestination, redirectType, followPath o followQueryString./redirects/{host}Elimina el redireccionamiento, con sus rutas, códigos QR y estadísticas./redirects/{host}/statusEstado del DNS y del certificado (ver abajo).| Campo | Tipo | Descripción |
|---|---|---|
host | string | El dominio que redirige, como marca-antigua.com. Obligatorio al crear; no se puede cambiar. |
redirectTo | string | URL de destino completa (http:// o https://), en otro dominio. Obligatorio al crear, salvo que noDestination sea true. |
noDestination | boolean | Cuando es true, el dominio responde 404 (no encontrado), salvo en sus rutas a una URL o página y en los códigos QR. El redirectTo se conserva, así que volver a false restaura el redireccionamiento. Por defecto false. |
redirectType | number | 301 (permanente, el predeterminado) o 302 (temporal). |
followPath | boolean | Conserva la ruta visitada: marca-antigua.com/nosotros → marca-nueva.com/nosotros. Predeterminado true. |
followQueryString | boolean | Conserva la query string (?utm_source=…). Predeterminado true. |
status | string | not_configured (el DNS aún no apunta), pending (certificado en emisión), active, disabled o error. Solo lectura. |
dns | object | El registro DNS a crear en tu proveedor de dominio. Solo lectura. |
curl -X POST https://api.redirect-301.com/v1/redirects \
-H "Authorization: Bearer $R301_KEY" \
-H "Content-Type: application/json" \
-d '{"host": "old-brand.com", "redirectTo": "https://new-brand.com"}'{
"host": "old-brand.com",
"redirectTo": "https://new-brand.com",
"noDestination": false,
"redirectType": 301,
"followPath": true,
"followQueryString": true,
"status": "not_configured",
"dns": { "type": "A", "name": "old-brand.com", "value": "18.215.89.131" },
"certificateExpiresAt": null,
"errorMessage": null,
"createdAt": "2026-09-26T14:02:11"
}Después crea el registro A de dns en tu proveedor de dominio. En cuanto el dominio apunta a nosotros, emitimos el certificado HTTPS y el status pasa a pending y luego a active. Llama al endpoint de status para comprobar el DNS e iniciar el certificado enseguida:
curl https://api.redirect-301.com/v1/redirects/old-brand.com/status \ -H "Authorization: Bearer $R301_KEY"
{
"host": "old-brand.com",
"status": "pending",
"dns": {
"expected": { "type": "A", "name": "old-brand.com", "value": "18.215.89.131" },
"resolved": ["18.215.89.131"],
"pointing": true
},
"certificate": { "expiresAt": null },
"errorMessage": null
}curl -X PATCH https://api.redirect-301.com/v1/redirects/old-brand.com \
-H "Authorization: Bearer $R301_KEY" \
-H "Content-Type: application/json" \
-d '{"redirectType": 302, "followPath": false}'Una ruta personalizada envía una ruta de tu dominio a un lugar específico, como marca-antigua.com/promo → marca-nueva.com/rebajas. Las demás rutas siguen la regla principal del redireccionamiento.
/redirects/{host}/pathsLista las rutas del redireccionamiento./redirects/{host}/pathsCrea una ruta./redirects/{host}/paths/{id}Cambia cualquier campo./redirects/{host}/paths/{id}Elimina la ruta.| Campo | Tipo | Descripción |
|---|---|---|
fromPath | string | La ruta en tu dominio, como /promo. La / inicial se añade si falta; las rutas no distinguen mayúsculas y son únicas por redireccionamiento. Obligatorio. /q y las rutas bajo ella están reservadas para los códigos QR. |
redirectTo | string | A dónde va. Una ruta en el destino del redireccionamiento (/rebajas; responde 404 cuando el redireccionamiento no tiene destino), o una URL completa cuando absolute es true. Obligatorio salvo que envíes pageId; null en las respuestas cuando la ruta muestra una página. |
pageId | number | Una de tus páginas (mira Páginas), mostrada en la ruta en lugar de redirigir. Envía redirectTo o pageId, no ambos. En PATCH, pageId cambia la ruta a esa página y redirectTo la vuelve a una URL. null cuando la ruta redirige. |
absolute | boolean | true para enviar la ruta a cualquier URL, incluso en otro dominio. Predeterminado false. |
statusCode | number | 301 (predeterminado), 302, 307 o 308. |
curl -X POST https://api.redirect-301.com/v1/redirects/old-brand.com/paths \
-H "Authorization: Bearer $R301_KEY" \
-H "Content-Type: application/json" \
-d '{"fromPath": "/promo", "redirectTo": "/summer-sale"}'{
"id": 42,
"fromPath": "/promo",
"redirectTo": "/summer-sale",
"pageId": null,
"absolute": false,
"statusCode": 301,
"createdAt": "2026-09-26T14:05:40"
}curl -X PATCH https://api.redirect-301.com/v1/redirects/old-brand.com/paths/42 \
-H "Authorization: Bearer $R301_KEY" \
-H "Content-Type: application/json" \
-d '{"pageId": 27}'{
"id": 42,
"fromPath": "/promo",
"redirectTo": null,
"pageId": 27,
"absolute": false,
"statusCode": 301,
"createdAt": "2026-09-26T14:05:40"
}Un código QR es una dirección corta en el dominio del redireccionamiento, https://{host}/q/{code}, que envía cada escaneo a su propio redirectTo. Cambia redirectTo cuando quieras, incluso después de imprimirlo: el código impreso sigue siendo el mismo. Los escaneos se cuentan por código QR en tus estadísticas.
/redirects/{host}/qr-codesLista los códigos QR del redireccionamiento./redirects/{host}/qr-codesCrea un código QR./redirects/{host}/qr-codes/{id}Cambia label, redirectTo, pageId, color o format. El code nunca cambia./redirects/{host}/qr-codes/{id}Elimina el código QR./redirects/{host}/qr-codes/{id}/imageLa imagen: format=png (predeterminado) o svg, size en píxeles de 64 a 2048 (predeterminado 512).| Campo | Tipo | Descripción |
|---|---|---|
label | string | El nombre que le das, como “Flyer A5”. Obligatorio. |
redirectTo | string | URL completa (http:// o https://) a donde van los escaneos. Obligatorio al crear salvo que envíes pageId; null en las respuestas cuando el código QR muestra una página. |
pageId | number | Una de tus páginas (mira Páginas), mostrada al escanear el código en lugar de redirigir. Envía redirectTo o pageId, no ambos. En PATCH, pageId cambia a esa página y redirectTo vuelve a una URL. |
code | string | El código corto de su dirección, generado por nosotros. Solo lectura. |
color | string | Color hexadecimal del código, como #0A0E14 (el predeterminado). |
format | string | Formato de descarga preferido en el panel: png, svg o pdf. |
url | string | Lo que codifica el código QR. Solo lectura. |
curl -X POST https://api.redirect-301.com/v1/redirects/old-brand.com/qr-codes \
-H "Authorization: Bearer $R301_KEY" \
-H "Content-Type: application/json" \
-d '{"label": "Flyer A5", "redirectTo": "https://new-brand.com/summer-sale", "color": "#0A0E14"}'{
"id": 7,
"label": "Flyer A5",
"code": "Kp7xQm",
"redirectTo": "https://new-brand.com/summer-sale",
"pageId": null,
"color": "#0A0E14",
"format": "png",
"url": "https://old-brand.com/q/Kp7xQm",
"imageUrl": "/v1/redirects/old-brand.com/qr-codes/7/image",
"createdAt": "2026-09-26T14:07:02"
}curl -o flyer.png "https://api.redirect-301.com/v1/redirects/old-brand.com/qr-codes/7/image?format=png&size=1024" \ -H "Authorization: Bearer $R301_KEY"
Las imágenes se generan al momento y no caducan, así que puedes volver a descargarlas cuando quieras. Una vez impreso un código QR, consérvalo: si lo eliminas, el código impreso deja de funcionar.
Una página es una página de enlaces al estilo link en la bio (perfil, botones, platos del menú, fotos…) que armas en el panel, en Páginas. Una ruta personalizada o un código QR puede mostrar una página en lugar de redirigir: el visitante ve la página directamente en esa dirección de tu dominio (HTTP 200, con HTTPS).
/pagesLista tus páginas: id, name, uses (las direcciones que la muestran) y updatedAt.curl https://api.redirect-301.com/v1/pages \ -H "Authorization: Bearer $R301_KEY"
{
"data": [
{
"id": 27,
"name": "Restaurant",
"uses": ["old-brand.com/menu"],
"updatedAt": "2026-10-13T15:35:01"
}
]
}Para mostrar una página, envía su id como pageId al crear o cambiar una ruta o un código QR (mira arriba).
Por ahora, crear y editar el contenido de una página se hace en el panel; la API lista las páginas y apunta rutas y códigos QR a ellas.
No dudes en contactarnos con cualquier pregunta. ¡Estamos aquí para ayudarte! Escanea el código QR o haz clic en el botón de abajo para unirte a nuestro grupo de WhatsApp.
Abrir WhatsApp →