Medir clics de un enlace
Un enlace corto que nadie mide es solo una redirección. Esta API recupera el historial de clics de una URL corta —conteos, referentes, geografía aproximada, desglose por dispositivo— y lo entrega como datos estructurados que puede conectar directo a un panel, un reporte o un modelo de atribución, sin tener que raspar la interfaz de ningún panel de analítica.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
La pregunta que responde
Una vez que un enlace corto está activo, la siguiente pregunta es simple: ¿funcionó? Quién hizo clic, desde dónde, en qué dispositivo y cuándo. Responder eso mirando un panel web no escala más allá de un puñado de enlaces, y la mayoría de los paneles no se diseñaron para consultarse mediante programación. dev.short_url_stats existe para convertir esa pregunta en una llamada de API: le da un enlace corto y le devuelve los números detrás de él.
Qué contiene realmente la respuesta
Envía el enlace corto (o su identificador) sobre el que quiere datos, y la tarea devuelve los conteos de clics en la ventana disponible, las fuentes de referencia conocidas, un desglose por dispositivo y navegador, y una distribución geográfica aproximada: la señal útil para atribución sin volverse invasiva. Como todos los endpoints de aquí, la llamada es asíncrona: recibe un task_id de inmediato, y las estadísticas compiladas llegan por webhook firmado o por un enlace firmado de 24 horas cuando están listas.
Quién necesita realmente este nivel de detalle
Equipos de crecimiento y marketing que comparan el desempeño de canales en campañas con la misma oferta pero distintos enlaces cortos. Equipos de producto que validan si un enlace de referidos dentro de la app realmente se está usando antes de invertir más en esa función. Equipos de soporte y antifraude que revisan si un enlace con tráfico inusual está siendo mal utilizado. Cualquiera con un link-in-bio o un esquema de afiliados que necesita el rendimiento de cada enlace sin entrar a un panel distinto por cada uno.
Por qué el referente y la geografía son inherentemente aproximados
Vale la pena decirlo claramente: los navegadores y las apps a veces omiten el encabezado de referencia por privacidad, y la geografía se infiere del origen de red, no de un GPS, así que es una aproximación razonable y no una ubicación precisa. No es una limitación de nuestra API en particular, es como funciona HTTP, pero condiciona lo que los números pueden decirle honestamente.
Cómo encaja en un pipeline de reportes
Como los resultados llegan como datos estructurados por webhook, puede programar una consulta de estadísticas al terminar una campaña, o pedirla bajo demanda cuando alguien pregunte '¿cómo va ese enlace?'. Combínela con dev.short_url para que la creación de enlaces y su rendimiento vivan en el mismo flujo en vez de en dos herramientas desconectadas.
Qué puede hacer con ella
Comparación de campañas
Consulte los clics de cada enlace corto en una campaña multicanal para ver qué canal realmente generó tráfico, no solo cuál tuvo más impresiones.
Validación de programa de referidos
Revise si los enlaces de referidos generados dentro de su app reciben clics antes de decidir si ampliar esa función.
Revisión de anomalías
Consulte la geografía y el desglose por dispositivo de un enlace con un pico de tráfico inusual para evaluar si parece orgánico o automatizado.
Reportes de afiliados y link-in-bio
Genere un resumen de rendimiento por enlace para creadores o socios sin darles acceso al panel completo de su cuenta.
Preguntas frecuentes
¿Qué datos devuelve la API de estadísticas de enlaces?
Conteos de clics, fuentes de referencia conocidas, desglose por dispositivo y navegador, y distribución geográfica aproximada de un enlace corto dado.
¿Rastrea usuarios individuales?
No: los datos que devuelve están agregados (conteos y desgloses), no es un registro personal ligado a visitantes identificables.
¿La geografía es precisa a nivel de ciudad exacta?
La geografía se infiere del origen de red, así que es una aproximación razonable, normalmente confiable a nivel de país o región y no una ubicación exacta.
¿Puedo obtener estadísticas de cualquier enlace corto o solo de los míos?
Solo de los enlaces cortos creados en su cuenta; no puede consultar analítica de enlaces que no le pertenecen.
¿Hay alguna forma gratuita de probarla?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Cómo recibo las estadísticas?
Por webhook firmado (recomendado) o por un enlace firmado válido por 24 horas, siguiendo el mismo patrón de entrega de toda la plataforma.
¿Cuánto cuesta cada solicitud de estadísticas?
0.002 dólares por solicitud, y nunca se cobra una solicitud que falla tras los reintentos.
¿Puedo pedir estadísticas de muchos enlaces a la vez?
Sí: envíe una solicitud por enlace de forma asíncrona y recolecte los resultados conforme llega cada webhook, sin necesidad de revisar un panel enlace por enlace.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev/short-url-stats \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/dev/short-url-stats", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/short-url-stats",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/short-url-stats", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/short-url-stats", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"input": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.short_url_stats",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |