Documentación de la API
API REST para acortar y administrar URLs desde cualquier aplicación externa, usando las mismas reglas y redirecciones que la web (http://rwsn.ar).
- Base URL:
https://rwsn.ar/api/v1 - Formato: JSON (pedís y recibís
application/json) - Autenticación: Bearer token, uno por usuario/aplicación
1. Obtener un token
Los tokens se generan desde tu cuenta, no vía API (por seguridad, no hay endpoint para crear tokens con otro token).
- Iniciá sesión y andá a tu menú de cuenta (arriba a la derecha) → API Tokens
- Ponele un nombre al token (ej.
"Mi App") y creá - Copiá el token en ese momento — se muestra una sola vez y no se puede recuperar después
- Podés revocar cualquier token desde esa misma pantalla en cualquier momento
Cada link que crees vía API queda asociado a la cuenta dueña del token, igual que si lo hubieras creado logueado en la web.
2. Autenticación
Todas las peticiones requieren el header:
Authorization: Bearer <TU_TOKEN>
Accept: application/json
Sin token válido, la API responde 401:
{ "message": "Unauthenticated." }
3. Endpoints
Crear (acortar una URL)
POST /api/v1/urls
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
long_url |
string | Sí | La URL a acortar. Debe ser una URL válida (con esquema, ej. https://). |
custom_key |
string | No | Keyword personalizada en vez de una generada al azar. Entre 3 y 11 caracteres, solo letras/números/guiones, no puede estar ya en uso. |
Ejemplo:
curl -X POST https://rwsn.ar/api/v1/urls \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"long_url":"https://ejemplo.com/pagina-muy-larga"}'
Respuesta 201:
{
"data": {
"keyword": "1ee17",
"short_url": "https://rwsn.ar/1ee17",
"long_url": "https://ejemplo.com/pagina-muy-larga",
"title": "Título obtenido automáticamente de la página",
"is_custom": false,
"created_at": "2026-08-26T22:26:30.000000Z",
"updated_at": "2026-08-26T22:26:30.000000Z"
}
}
Con keyword personalizada:
curl -X POST https://rwsn.ar/api/v1/urls \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"long_url":"https://ejemplo.com","custom_key":"mi-link"}'
Consultar detalle / estadísticas
GET /api/v1/urls/{keyword}
curl https://rwsn.ar/api/v1/urls/1ee17 \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json"
Cualquier usuario autenticado puede consultar el detalle de cualquier keyword (igual que la página pública de detalle de la web).
Editar
PUT /api/v1/urls/{keyword}
Solo el dueño del link (o un admin) puede editarlo. title es opcional — si no se envía, se conserva el título actual.
curl -X PUT https://rwsn.ar/api/v1/urls/1ee17 \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"long_url":"https://ejemplo.com/nueva-pagina"}'
Borrar
DELETE /api/v1/urls/{keyword}
Solo el dueño del link (o un admin) puede borrarlo. Devuelve 204 si se borró correctamente.
curl -X DELETE https://rwsn.ar/api/v1/urls/1ee17 \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json"
4. Errores
Todas las respuestas de error son JSON.
401 |
Token ausente, inválido o revocado. |
403 |
El link existe pero no te pertenece (para editar/borrar). |
404 |
El keyword no existe. |
422 |
Validación fallida o URL interna/blacklisteada. |
503 |
El servicio alcanzó su capacidad máxima de keywords generables (mantenimiento). |
5. Reglas heredadas de la web
- No se pueden acortar URLs que apunten al propio dominio.
- No se pueden usar dominios de la lista negra interna.
- La keyword personalizada debe tener entre 3 y 11 caracteres, solo letras/números/guiones.
- El link corto redirige exactamente igual que cualquiera creado desde la web.
6. Notas de seguridad
- Tratá cada token como una contraseña: no lo publiques en repos públicos ni en el frontend de tu app.
- Si un token se filtra, revocalo desde API Tokens en tu cuenta — es inmediato.
- Podés tener varios tokens (uno por aplicación) para revocar acceso a una integración sin afectar a las demás.