AVANZADO

Docs

Enlaces por la API

El enlace es el objeto central en Kilo, y cinco endpoints cubren toda su vida por HTTP: crearlo, listar tus enlaces, leer uno, actualizar a dónde apunta y retirarlo. Cada ejemplo de abajo usa una clave con ámbito de escritura en $KILO_API_KEY; una clave de lectura basta para las dos llamadas GET.

Crea un enlace

POST /api/links genera un enlace. Para un enlace de URL simple el único campo obligatorio es default_target, una URL http(s). También puedes pasar un slug propio (3–32 caracteres base62), un name legible (hasta 80), un group_id, una marca de tiempo expires_at en milisegundos de época y un placement de active (por defecto) o archived.

POST /api/links
curl https://qr2r.com/api/links \
  -H "Authorization: Bearer $KILO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "default_target": "https://example.com/landing", "name": "Spring flyer" }'

Una creación con éxito devuelve 201 con el objeto de enlace completo. El slug es el asa pública permanente; default_target es el destino editable detrás:

201 Created
{
  "id": 8231,
  "slug": "aA3k9",
  "name": "Spring flyer",
  "kind": "url",
  "data": null,
  "default_target": "https://example.com/landing",
  "expires_at": null,
  "disabled": false,
  "override_target": null,
  "expired_fallback_url": null,
  "group_id": null,
  "domain": null,
  "rule_count": 0,
  "created_at": 1719000000000,
  "updated_at": 1719000000000,
  "deleted_at": null,
  "reclaim_until": null,
  "paused_at": null,
  "pause_reason": null,
  "placement_country": null,
  "placement_region": null
}

La guarda del destino

Un destino no puede apuntar de vuelta a un host propiedad de Kilo ni a otro acortador de URL - eso bloquea el truco de encadenar redirecciones que usan los abusadores para lavar un enlace malo a través de uno de confianza. Esos se rechazan como 400 invalid_body. Un destino que dispara la comprobación de seguridad en vivo se rechaza con 422 destination_unsafe, antes de gastar ningún slug.

Lista y lee

GET /api/links devuelve tus enlaces de página en página. Acótalo con status (active, archived, paused o deleted - por defecto active), group_id y el par limit/offset (limit por defecto 50, tope 200). La respuesta lleva la página más contadores de toda la cuenta:

GET /api/links?status=active&limit=50
{
  "links": [ /* link objects, newest first */ ],
  "limit": 50,
  "offset": 0,
  "status": "active",
  "counts": { "active": 12, "archived": 3, "paused": 0, "deleted": 1 },
  "limits": { "active_links_max": 25, "archived_links_max": 100, "reclaim_window_days": 30 }
}

Lee un solo enlace por slug con GET /api/links/:slug; devuelve la misma forma de objeto que la creación. Un slug desconocido devuelve 404 not_found. Para un enlace en uno de tus dominios propios, añade ?domain=go.acme.com para que resuelva el enlace correcto.

Actualiza a dónde apunta

PUT /api/links/:slug toma un cuerpo parcial - envía solo los campos que cambias. El habitual es default_target; también puedes cambiar el name, moverlo a un group_id, fijar expires_at o archivarlo con disabled. Editar el destino surte efecto en el siguiente escaneo, en todas partes a la vez - que es todo el sentido de enrutar un código impreso a través de Kilo.

PUT /api/links/aA3k9
curl -X PUT https://qr2r.com/api/links/aA3k9 \
  -H "Authorization: Bearer $KILO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "default_target": "https://example.com/new-landing" }'

La llamada devuelve el objeto de enlace actualizado, con un updated_at fresco.

Retira un enlace

DELETE /api/links/:slug borra de forma reversible un enlace: deja de reenviar y pasa a la pestaña Eliminados, pero no ha desaparecido.

DELETE /api/links/aA3k9
{ "ok": true, "soft": true }

Puedes recuperarlo con POST /api/links/:slug/reclaim mientras está dentro de la ventana de reclamación, o eliminarlo para siempre con POST /api/links/:slug/purge. Nada se borra nunca de forma definitiva sin tu intervención con un simple delete - el mismo principio de nunca dejar un callejón sin salida que describe la guía del ciclo de vida del enlace, expresado como endpoints.

Ese es el objeto completo por HTTP. La última guía de la API cubre las dos cosas que más a menudo automatizarás en torno a un enlace: leer sus estadísticas y dirigir su tráfico.

Analítica y reglas por la API
SiguienteAnalítica y reglas por la APILee las estadísticas de un enlace y gestiona reglas de enrutamiento geo, de dispositivo y A/B por HTTP.Lee la guía