API

Crea y gestiona enlaces cortos desde tu propio código. La API forma parte del plan Pro.

Autenticación

Crea una clave en la página de tu cuenta y envíala en la cabecera Authorization de cada solicitud. Mantén la clave en secreto: cualquiera que la tenga puede gestionar tus enlaces.

Authorization: Bearer skr_…

Endpoints

POST/api/v1/linksCrear un enlace
GET/api/v1/linksListar tus enlaces (limit, offset)
GET/api/v1/links/{slug}Obtener un enlace
PATCH/api/v1/links/{slug}Cambiar la caducidad o el límite de aperturas
DELETE/api/v1/links/{slug}Eliminar un enlace
GET/api/v1/links/{slug}/statsTotales diarios y principales países, dispositivos, navegadores y procedencias (days = 1–365)

Crear un enlace

curl -X POST https://skr.me/api/v1/links \
  -H "Authorization: Bearer $SKR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/page?utm_source=news", "slug": "launch", "expires": "never"}'

Envía JSON o datos de formulario. Solo url es obligatorio.

urlLa dirección de destino (http o https).
slugDirección personalizada opcional, de al menos 4 caracteres.
passwordContraseña opcional que deben introducir los visitantes.
expires1h, 1d, 7d, 14d, 30d, 60d, 90d o never (predeterminado).
max_clicksNúmero opcional de aperturas tras el cual el enlace deja de funcionar.
cleanElimina los parámetros de rastreo del destino. Predeterminado: true.

Respuesta

HTTP/1.1 201 Created
{
  "link": {
    "slug": "launch",
    "short_url": "https://skr.me/launch",
    "target_url": "https://example.com/page",
    "status": "ok",
    "custom": true,
    "password_protected": false,
    "clicks": 0,
    "max_clicks": null,
    "created_at": "2026-09-26T12:00:00+00:00",
    "expires_at": null
  },
  "removed_parameters": ["utm_source"]
}

Estadísticas

curl https://skr.me/api/v1/links/launch/stats?days=30 \
  -H "Authorization: Bearer $SKR_KEY"

Las estadísticas son los mismos agregados diarios que ves en el panel. Nunca contienen información sobre visitantes individuales.

Errores

Los errores usan códigos de estado HTTP estándar (400, 401, 403, 404, 422, 429) y un cuerpo JSON con un código legible por máquina.

{ "error": { "code": "invalid_slug", "field": "slug", "message": "This address is already taken." } }

Límites

Cada clave puede hacer 1000 solicitudes al día. Cada respuesta incluye las cabeceras X-RateLimit-Limit y X-RateLimit-Remaining.