REST API v1.0
Acceso Público (CORS *)
Documentación de la API
Crea enlaces acortados, personaliza alias, define tiempos de expiración y consulta estadísticas de visitas desde tus terminales o aplicaciones.
Base URL
https://short.290102.xyz
Uso rápido desde consola / Terminal (Texto Plano)
Si agregas format=text (o envías la cabecera Accept: text/plain), la API devuelve únicamente la URL acortada, lista para usar en tuberías (pipes) de bash:
curl -s "https://short.290102.xyz/api/shorten?url=https://ejemplo.com&format=text"
Ejemplos de Integración
Selecciona tu entorno o lenguaje para ver el código de ejemplo listo para copiar.
POST /api/shorten
curl -s -X POST https://short.290102.xyz/api/shorten \
-H "Content-Type: application/json" \
-d '{
"url": "https://290102.xyz/descargas",
"alias": "descargas",
"ttl": 86400
}'
Respuesta JSON (HTTP 200):
{
"ok": true,
"shortUrl": "https://short.290102.xyz/descargas",
"slug": "descargas",
"targetUrl": "https://290102.xyz/descargas",
"expiresAt": 1792559582,
"createdAt": 1792473182
}
Parámetros Aceptados (/api/shorten)
La API acepta tanto JSON en POST, formularios codificados, como parámetros en URL (GET).
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| url | string | Sí | La URL de destino completa (debe iniciar con http:// o https://). |
| alias / customSlug | string | No | Alias deseado (2 a 32 caracteres alfanuméricos). Si se omite, se genera uno corto Base62. |
| ttl / ttlSeconds | number | No | Tiempo de vida en segundos. Por defecto 2592000 (30 días). Mínimo 300 (5m), máximo 31536000 (1 año). |
| format | string | No | Si se pasa format=text, la API responde únicamente la URL en texto plano (ideal para scripts de terminal). |
Códigos de Estado y Respuestas de Error
| Código | Error | Causa |
|---|---|---|
| 200 OK | - | Enlace acortado con éxito o consulta de estadísticas correcta. |
| 302 Found | - | Redirección al destino con cabeceras de caché Edge. |
| 400 Bad Request | invalid_url | La URL no inicia con http:// o https://, o intenta acortar el propio dominio. |
| 404 Not Found | not_found | El alias no existe o ha expirado. |
| 409 Conflict | slug_taken | El alias personalizado ya se encuentra en uso activo por otro enlace. |