Enlaces rastreados
Un enlace rastreado es una dirección corta de WhatSetter (https://app.whatsetter.com/l/insta-bio) que abre una conversación de WhatsApp con uno de tus agentes y registra el clic. La API expone tus enlaces y sus estadísticas en solo lectura; los creas y editas en el dashboard.
Endpoints
Sección titulada «Endpoints»| Método | Ruta | Scope |
|---|---|---|
| GET | /links |
links:read |
| GET | /links/{id} |
links:read |
Listar enlaces
Sección titulada «Listar enlaces»curl "https://app.whatsetter.com/api/v1/links?status=active&limit=25" \ -H "Authorization: Bearer ws_live_…"const res = await fetch('https://app.whatsetter.com/api/v1/links?status=active&limit=25', { headers: { Authorization: 'Bearer ws_live_…' },});const { data: links, pagination } = await res.json();import requests
r = requests.get( "https://app.whatsetter.com/api/v1/links", params={"status": "active", "limit": 25}, headers={"Authorization": "Bearer ws_live_…"},)links = r.json()["data"]{ "data": [ { "id": "66f1a2b3c4d5e6f7a8b9c0f1", "slug": "insta-bio", "name": "Bio de Instagram", "url": "https://app.whatsetter.com/l/insta-bio", "campaign_id": "acme-espana-1-ab12", "status": "active", "channel": "auto", "clicks": 128, "last_click_at": "2026-09-18T10:00:00.000Z", "created_at": "2026-09-01T08:00:00.000Z" } ], "pagination": { "has_more": false, "next_cursor": null }}| Parámetro | Qué hace |
|---|---|
campaign_id |
El slug de la campaña o su id. |
status |
active o inactive. |
limit, cursor |
Paginación. |
| Campo | Significado |
|---|---|
url |
La dirección para compartir. |
campaign_id |
La campaña (y por tanto el número de WhatsApp) que abre el enlace. |
channel |
auto cuando la plataforma se lee en cada clic, o una plataforma forzada. |
clicks |
Total de clics desde la creación. Los robots de vista previa y los rastreadores no se cuentan. |
Leer un enlace con sus estadísticas de 30 días
Sección titulada «Leer un enlace con sus estadísticas de 30 días»curl "https://app.whatsetter.com/api/v1/links/66f1a2b3c4d5e6f7a8b9c0f1" \ -H "Authorization: Bearer ws_live_…"const res = await fetch('https://app.whatsetter.com/api/v1/links/66f1a2b3c4d5e6f7a8b9c0f1', { headers: { Authorization: 'Bearer ws_live_…' },});const { data: link } = await res.json();import requests
r = requests.get( "https://app.whatsetter.com/api/v1/links/66f1a2b3c4d5e6f7a8b9c0f1", headers={"Authorization": "Bearer ws_live_…"},)link = r.json()["data"]{ "data": { "id": "66f1a2b3c4d5e6f7a8b9c0f1", "slug": "insta-bio", "name": "Bio de Instagram", "url": "https://app.whatsetter.com/l/insta-bio", "campaign_id": "acme-espana-1-ab12", "status": "active", "channel": "auto", "clicks": 128, "last_click_at": "2026-09-18T10:00:00.000Z", "created_at": "2026-09-01T08:00:00.000Z", "stats_30d": { "clicks": 128, "by_channel": { "instagram": 90, "tiktok": 30, "direct": 8 }, "leads": 41, "qualified": 12 } }}stats_30d contiene las mismas cifras que el panel del enlace en el dashboard: los clics de los últimos 30 días, desglosados por la plataforma leída en cada clic, más las conversaciones que trajo el enlace y cuántas se calificaron.
Cómo funciona la atribución
Sección titulada «Cómo funciona la atribución»La plataforma se lee en el momento del clic, nunca se adivina a partir del mensaje: la app desde la que se abrió el enlace (Instagram, TikTok, LinkedIn…), el referrer, o la variante del enlace que compartiste (?c=qr, ?c=email, ?c=sms para soportes mudos), si no direct. Cuando la persona escribe después al número, WhatSetter mira los clics en los enlaces de ese número en los últimos 45 minutos. Un solo clic, o clics de una sola plataforma, da una atribución certain (segura); varias plataformas en la ventana dan el clic más reciente desde el país de la persona, marcado probable. Un mensaje que lleva una señal publicitaria de Meta se atribuye al anuncio, segura, sin ningún enlace. Ningún clic significa que la persona escribió por su cuenta: inbound.
Cada lead lleva después source (la plataforma), tracked_link_id (el id de este enlace) y source_confidence (certain o probable). Fíltralos con GET /leads?tracked_link_id= o ?source=instagram.
Errores que encontrarás
Sección titulada «Errores que encontrarás»| HTTP | code |
Cuándo |
|---|---|---|
| 401 | missing_api_key, invalid_api_key |
Clave ausente, desconocida o revocada. |
| 403 | insufficient_scope |
La clave no tiene links:read. |
| 404 | not_found |
Enlace desconocido, o enlace de otro espacio de trabajo. |
| 422 | validation_error |
status desconocido, cursor inválido. |
| 429 | rate_limited |
Demasiadas peticiones este minuto. Respeta Retry-After. |

