Liens traqués
Un lien traqué, c’est une adresse courte WhatSetter (https://app.whatsetter.com/l/insta-bio) qui ouvre une conversation WhatsApp avec un de tes agents et enregistre le clic. L’API expose tes liens et leurs statistiques en lecture seule ; tu les crées et les modifies dans le dashboard.
Endpoints
Section intitulée « Endpoints »| Méthode | Chemin | Scope |
|---|---|---|
| GET | /links |
links:read |
| GET | /links/{id} |
links:read |
Lister les liens
Section intitulée « Lister les liens »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 Instagram", "url": "https://app.whatsetter.com/l/insta-bio", "campaign_id": "acme-france-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 }}| Paramètre | Effet |
|---|---|
campaign_id |
Le slug de la campagne ou son id. |
status |
active ou inactive. |
limit, cursor |
Pagination. |
| Champ | Signification |
|---|---|
url |
L’adresse à partager. |
campaign_id |
La campagne (et donc le numéro WhatsApp) que le lien ouvre. |
channel |
auto quand la plateforme est lue à chaque clic, ou une plateforme forcée. |
clicks |
Total des clics depuis la création. Les robots d’aperçu et les crawlers ne sont pas comptés. |
Lire un lien avec ses statistiques sur 30 jours
Section intitulée « Lire un lien avec ses statistiques sur 30 jours »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 Instagram", "url": "https://app.whatsetter.com/l/insta-bio", "campaign_id": "acme-france-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 contient les mêmes chiffres que le tiroir du lien dans le dashboard : les clics des 30 derniers jours, ventilés par plateforme lue au clic, plus les conversations que le lien a amenées et combien ont été qualifiées.
Comment marche l’attribution
Section intitulée « Comment marche l’attribution »La plateforme est lue au moment du clic, jamais devinée dans le message : l’application depuis laquelle le lien a été ouvert (Instagram, TikTok, LinkedIn…), le referrer, ou la variante du lien que tu as partagée (?c=qr, ?c=email, ?c=sms pour les supports muets), sinon direct. Quand la personne écrit ensuite au numéro, WhatSetter regarde les clics sur les liens de ce numéro dans les 45 dernières minutes. Un seul clic, ou des clics d’une seule plateforme, donne une attribution certaine ; plusieurs plateformes dans la fenêtre donnent le clic le plus récent depuis le pays de la personne, marqué probable. Un message qui porte un signal publicitaire Meta est attribué à la pub, certain, sans aucun lien. Aucun clic du tout signifie que la personne a écrit spontanément : inbound.
Chaque lead porte ensuite source (la plateforme), tracked_link_id (l’id de ce lien) et source_confidence (certain ou probable). Filtre-les avec GET /leads?tracked_link_id= ou ?source=instagram.
Les erreurs que tu rencontreras
Section intitulée « Les erreurs que tu rencontreras »| HTTP | code |
Quand |
|---|---|---|
| 401 | missing_api_key, invalid_api_key |
Clé absente, inconnue ou révoquée. |
| 403 | insufficient_scope |
La clé n’a pas links:read. |
| 404 | not_found |
Lien inconnu, ou lien d’un autre espace de travail. |
| 422 | validation_error |
status inconnu, curseur invalide. |
| 429 | rate_limited |
Trop de requêtes cette minute. Respecte Retry-After. |

