Parcourir la documentation API REST

API REST

Créez des liens, des Smart Links, des formulaires et des pages Multilink depuis votre code, et lisez leurs statistiques, avec les règles de l’application.

Mis à jour le 11 novembre 2026 Voir en Markdown

L’API Walink permet à un script, à un backend ou à tout outil no-code capable d’envoyer des requêtes HTTP de faire ce que vous faites dans l’application. Chaque requête passe par les règles de l’application : les adresses, le quota et la propriété sont donc vérifiés de la même façon. Chaque création donne un brouillon, sauf pour un lien gratuit : rien n’est donc mis en ligne par accident.

Cette page vous amène jusqu’à un premier appel. Tous les points de terminaison et tous les champs figurent dans la référence complète de l’API, qui comporte aussi une console pour essayer des requêtes.

Ce que vous pouvez automatiser

Ressource Ce que fait l’API
Liens Premium (/v1/links) Lister, créer des brouillons, modifier, publier, dépublier, supprimer, personnaliser le code QR
Smart Links (/v1/smart-links) La même chose, avec les destinations et le routage
Formulaires (/v1/forms) La même chose, plus les réponses que les gens ont envoyées
Pages Multilink (/v1/multilinks) La même chose
Liens gratuits (/v1/free-links) Lister, créer, lire, supprimer
Statistiques (/v1/analytics) Chiffres et répartitions par pays, source, appareil et plus encore
Compte (/v1/account) Profil, quota utilisé, liens gratuits détenus

N’importe quel compte Walink peut utiliser l’API. Les brouillons sont gratuits. Publier utilise le quota de votre abonnement et les statistiques demandent un abonnement, comme dans l’application.

Créer un jeton

  1. Connectez-vous à Walink, ouvrez le menu du compte (le bouton rond en haut à droite) et sélectionnez Developers (développeurs).
  2. Sous API Tokens (jetons d’API), sélectionnez Create token (créer un jeton).
  3. Donnez-lui un Name (nom), comme « Script de rapports », et choisissez quand il expire sous Expires after (expire après) : 30 days, 90 days, 1 year (la valeur par défaut) ou No expiration (sans expiration).
  4. Sous Scopes (autorisations), ne cochez que ce dont le jeton a besoin. Quick presets (préréglages rapides) remplit Read only (lecture seule) ou Full access (accès complet). Les autorisations ne peuvent pas être modifiées ensuite.
  5. Sélectionnez Create token. La fenêtre Save your token (enregistrez votre jeton) ne l’affiche qu’une fois : copiez-le dans un endroit sûr, comme un gestionnaire de mots de passe, puis sélectionnez I’ve saved it (je l’ai enregistré).

Les jetons commencent par wlk_live_, et un compte peut avoir 25 jetons actifs. Dans le tableau des jetons, Rotate (renouveler) vous donne un nouveau jeton avec le même nom et les mêmes autorisations, tandis que l’ancien continue de fonctionner pendant 7 jours. Revoke (révoquer) arrête définitivement un jeton, en moins de 30 secondes.

Autorisations

write inclut read. Rien n’inclut publish, delete ni responses:read : chacune s’accorde séparément, et aucune n’est activée par défaut.

Autorisation Permet de
links:read Lire les Liens Premium, les Smart Links et les liens gratuits
links:write Créer et modifier des brouillons
links:publish Publier, dépublier, modifier tout ce qui est publié, créer des liens gratuits
links:delete Supprimer
forms:*, multilinks:* Les quatre mêmes pour les formulaires et les pages Multilink
account:read Profil, quota et utilisation
analytics:read Statistiques
responses:read Les réponses aux formulaires, qui contiennent des données personnelles que les gens vous ont envoyées

analytics:read et multilinks:read montrent aussi les noms de vos liens, Smart Links et formulaires publiés, même sans leur propre autorisation de lecture.

Votre première requête

L’URL de base est https://api.walink.com/v1. Envoyez le jeton sous la forme Authorization: Bearer <token> et les corps de requête en JSON. Les exemples lisent le jeton dans une variable d’environnement WALINK_API_TOKEN : il reste ainsi en dehors de votre code.

Lister vos Liens Premium (demande links:read) :

curl https://api.walink.com/v1/links \
  -H "Authorization: Bearer $WALINK_API_TOKEN"
{
	"data": [
		{
			"id": "lnk_3f2a9c1e-7b4d-4e8a-9f10-2c6d8e4b1a77",
			"title": "Tienda Luna orders",
			"handle": "tienda-luna",
			"plan": "chat",
			"status": "published",
			"url": "https://wa.link/tienda-luna",
			"created_at": "2026-11-05T14:32:07.000Z",
			"updated_at": "2026-11-05T14:32:07.000Z"
		}
	],
	"has_more": false,
	"next_cursor": null
}

Les listes vont du plus récent au plus ancien. Elles acceptent limit (25 par défaut, 100 au maximum) et cursor : transmettez next_cursor pour obtenir la page suivante.

Créer un brouillon

Une création donne toujours un brouillon (demande links:write). Celui-ci ouvre une discussion avec un numéro américain :

curl -X POST https://api.walink.com/v1/links \
  -H "Authorization: Bearer $WALINK_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: tienda-luna-promo-1" \
  -d '{
    "handle": "tienda-luna-promo",
    "plan": "chat",
    "title": "Tienda Luna promo",
    "phone": "4155550123",
    "country_code": "1",
    "country_alpha": "US",
    "message": "Hello Tienda Luna, I saw your promo"
  }'

La réponse est un 201 avec l’enregistrement complet, son id et "status": "draft".

  • handle est l’adresse qui suit wa.link/. Elle ne peut plus être modifiée une fois le lien créé, et un brouillon ne la réserve pas : le premier compte qui publie avec elle l’obtient.
  • plan est le type de lien : chat, catalog, channel ou group.
  • Idempotency-Key rend une nouvelle tentative sans risque pendant 24 heures : la même clé et le même corps renvoient la première réponse au lieu de créer un second brouillon.

Publier

La publication est un appel à part, et elle demande links:publish :

curl -X POST https://api.walink.com/v1/links/lnk_3f2a9c1e-7b4d-4e8a-9f10-2c6d8e4b1a77/publish \
  -H "Authorization: Bearer $WALINK_API_TOKEN"

Comme Publish (publier) dans l’application, elle utilise une unité de votre quota de Liens Premium ($9 USD par an et par lien). Sans unité libre, la réponse est 402 pool_exhausted, avec les chiffres dans details. Ajoutez du quota sur la page Billing de l’application (fonctionnement de la facturation).

  • POST .../publish-check est un essai à blanc : ce qui bloque encore la publication et la quantité de quota qu’elle utiliserait.
  • POST .../unpublish met le lien hors ligne et libère son unité. Son adresse cesse de fonctionner, codes QR imprimés compris, et un autre compte peut alors l’obtenir.
  • PATCH /v1/links/{id} ne change que les champs que vous envoyez. Sur un lien publié, le changement est en ligne aussitôt : il demande donc aussi links:publish.

Les Smart Links, les formulaires et les pages Multilink suivent les mêmes étapes, sous leurs propres chemins. Les Smart Links utilisent les autorisations links.

Les liens gratuits dans l’API

/v1/free-links crée les liens gratuits que chaque compte peut détenir, jusqu’à 5. Ils fonctionnent différemment :

  • Un lien gratuit est en ligne dès sa création, jamais en brouillon. C’est pourquoi en créer un demande links:publish, pas links:write.
  • Walink choisit son adresse aléatoire. Vous envoyez un numéro de téléphone ou un nom d’utilisateur WhatsApp, un message facultatif et un title privé facultatif, qui ne peut pas être modifié ensuite.
  • Il peut être listé, lu et supprimé, jamais modifié. Son id commence par fln_, et /v1/links ne le montre jamais.
  • Le modifier ou voir ses statistiques demande de le passer à Premium dans l’application, ce qui change son id en lnk_.

Avec 5 liens déjà présents, une création répond 409 free_link_limit_reached, et en supprimer un libère son emplacement. Pour en savoir plus, voir les liens gratuits.

Erreurs et limites de débit

Toutes les erreurs ont la même forme :

{
	"error": {
		"code": "insufficient_scope",
		"message": "This token needs the links:publish scope.",
		"param": null,
		"doc_url": "https://api.walink.com/docs#description/errors",
		"request_id": "req_4f1c9a0b7d2e4c8f9a1b3c5d7e9f0a2b",
		"details": { "required": ["links:publish"] }
	}
}
Statut Codes courants Signification
401 invalid_token Jeton manquant, expiré ou révoqué
402 pool_exhausted, past_due_locked, subscription_required Quota ou facturation, à régler dans l’application
403 insufficient_scope details.required nomme l’autorisation
404 not_found Aussi pour les id d’autres comptes
409 handle_taken, free_link_limit_reached L’adresse est prise, ou une limite est atteinte
422 validation_failed, handle_immutable Requête invalide. details.fields détaille les problèmes
429 rate_limited Attendez Retry-After secondes
Requêtes Limite
Lectures 120 par minute et par jeton
Créations, modifications, publications et suppressions 30 par minute et par compte
Statistiques 10 par minute et par compte
Vérifications d’adresse 30 par minute et par compte

Les limites sont approximatives, et un quota épuisé ne donne jamais un 429. Par l’API, un compte peut avoir jusqu’à 500 brouillons par produit. Chaque réponse porte un en-tête Request-Id : citez-le quand vous contactez l’assistance.

Référence complète

Le même jeton connecte aussi les assistants IA : voir Connecter des assistants IA.