API REST
Crea links, Smart Links, formularios y páginas Multilink desde tu propio código, y lee su analítica, con las mismas reglas que la app de Walink.
La API de Walink permite que un script, un backend o cualquier herramienta sin código que envíe solicitudes HTTP haga lo mismo que tú haces en la app. Cada solicitud pasa por las reglas de la app, así que las direcciones, el cupo y la propiedad se revisan de la misma forma, y cada creación hace un borrador, excepto la de un link gratis, para que nada se publique por accidente.
Esta página te lleva hasta tu primera llamada. Todos los endpoints y campos están en la referencia completa de la API, que también tiene una consola para probar solicitudes.
Qué puedes automatizar
| Recurso | Qué hace la API |
|---|---|
Links Premium (/v1/links) |
Listar, crear borradores, editar, publicar, pasar a borrador, eliminar, personalizar el QR |
Smart Links (/v1/smart-links) |
Lo mismo, con destinos y enrutamiento |
Formularios (/v1/forms) |
Lo mismo, más las respuestas que envió la gente |
Páginas Multilink (/v1/multilinks) |
Lo mismo |
Links gratis (/v1/free-links) |
Listar, crear, leer, eliminar |
Analítica (/v1/analytics) |
Cifras y desgloses por país, fuente, dispositivo y más |
Cuenta (/v1/account) |
Perfil, cupo en uso, links gratis que tiene |
Cualquier cuenta de Walink puede usar la API. Los borradores son gratis. Publicar usa el cupo de tu suscripción y la analítica necesita una suscripción, igual que en la app.
Crea un token
- Inicia sesión en Walink, abre el menú de la cuenta (el botón redondo de arriba a la derecha) y selecciona Desarrolladores.
- En Tokens de API, selecciona Crear token.
- Ponle un Nombre, como "Script de reportes", y elige cuándo vence en Vence después de: 30 días, 90 días, 1 año (el valor predeterminado) o Sin vencimiento.
- En Permisos, marca solo lo que el token necesita. Selección rápida llena Solo lectura o Acceso total. Los permisos no se pueden cambiar después.
- Selecciona Crear token. La ventana Guarda tu token lo muestra una sola vez: cópialo en un lugar seguro, como un administrador de contraseñas, y luego selecciona Ya lo guardé.
Los tokens empiezan con wlk_live_, y una cuenta puede tener 25 tokens activos. En la tabla de tokens, Rotar te da un token nuevo con el mismo nombre y los mismos permisos, mientras el anterior sigue funcionando 7 días. Revocar detiene un token para siempre, en menos de 30 segundos.
Permisos
write incluye read. Nada incluye publish, delete ni responses:read: cada uno se concede por separado, y ninguno viene activado de forma predeterminada.
| Permiso | Permite |
|---|---|
links:read |
Leer Links Premium, Smart Links y links gratis |
links:write |
Crear y editar borradores |
links:publish |
Publicar, pasar a borrador, editar cualquier cosa publicada, crear links gratis |
links:delete |
Eliminar |
forms:*, multilinks:* |
Los mismos cuatro para formularios y páginas Multilink |
account:read |
Perfil, cupo y uso |
analytics:read |
Analítica |
responses:read |
Respuestas de formularios, que contienen datos personales que te envió la gente |
analytics:read y multilinks:read también muestran los nombres de tus links, Smart Links y formularios publicados, aun sin su propio permiso de lectura.
Tu primera solicitud
La URL base es https://api.walink.com/v1. Envía el token como Authorization: Bearer <token> y los cuerpos de las solicitudes como JSON. Los ejemplos leen el token de una variable de entorno WALINK_API_TOKEN, para que quede fuera de tu código.
Lista tus Links Premium (necesita 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
}
Las listas van de lo más reciente a lo más antiguo. Aceptan limit (25 de forma predeterminada, 100 como máximo) y cursor: envía next_cursor para obtener la página siguiente.
Crea un borrador
Una creación siempre hace un borrador (necesita links:write). Este abre un chat con un número de Estados Unidos:
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 respuesta es 201 con el registro completo, su id y "status": "draft".
handlees la dirección que va después dewa.link/. No se puede cambiar después de crear el link, y un borrador no la aparta: se la queda la primera cuenta que publique con ella.planes el tipo de link:chat,catalog,channelogroup.Idempotency-Keyhace que un reintento sea seguro durante 24 horas: la misma clave y el mismo cuerpo devuelven la primera respuesta en lugar de un segundo borrador.
Publica
Publicar es una llamada aparte, y necesita links:publish:
curl -X POST https://api.walink.com/v1/links/lnk_3f2a9c1e-7b4d-4e8a-9f10-2c6d8e4b1a77/publish \
-H "Authorization: Bearer $WALINK_API_TOKEN"
Igual que Publicar en la app, usa una unidad de tu cupo de Links Premium ($9 USD al año por link). Sin una unidad libre, la respuesta es 402 pool_exhausted, con los números en details. Agrega cupo en la página de Facturación de la app (cómo funciona la facturación).
POST .../publish-checkes un ensayo: qué impide todavía la publicación y cuánto cupo usaría.POST .../unpublishsaca el link de línea y libera su unidad. Su dirección deja de funcionar, incluidos los códigos QR impresos, y otra cuenta puede tomarla desde ese momento.PATCH /v1/links/{id}cambia solo los campos que envías. En un link publicado el cambio se aplica al instante, así que también necesitalinks:publish.
Los Smart Links, los formularios y las páginas Multilink siguen los mismos pasos en sus propias rutas. Los Smart Links usan los permisos de links.
Links gratis en la API
/v1/free-links crea los links gratis que puede tener cada cuenta, hasta 5. Funcionan distinto:
- Un link gratis queda publicado en el momento en que se crea; nunca es borrador. Por eso crear uno necesita
links:publish, nolinks:write. - Walink elige su dirección aleatoria. Tú envías un número de teléfono o un nombre de usuario de WhatsApp, un mensaje opcional y un
titleprivado opcional, que no se puede cambiar después. - Se puede listar, leer y eliminar, nunca editar. Su id empieza con
fln_, y/v1/linksnunca lo muestra. - Para editarlo o ver su analítica hay que pasarlo a Premium en la app, lo que cambia su id a
lnk_.
Con 5 ya creados, una creación responde 409 free_link_limit_reached, y eliminar uno libera su espacio. Más en links gratis.
Errores y límites de uso
Todos los errores tienen la misma forma:
{
"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"] }
}
}
| Estado | Códigos comunes | Significado |
|---|---|---|
| 401 | invalid_token |
Token faltante, vencido o revocado |
| 402 | pool_exhausted, past_due_locked, subscription_required |
Cupo o facturación, se resuelve en la app |
| 403 | insufficient_scope |
details.required indica el permiso |
| 404 | not_found |
También para ids de otras cuentas |
| 409 | handle_taken, free_link_limit_reached |
La dirección está ocupada, o se llegó a un límite |
| 422 | validation_failed, handle_immutable |
Solicitud no válida. details.fields lista los problemas |
| 429 | rate_limited |
Espera Retry-After segundos |
| Solicitudes | Límite |
|---|---|
| Lecturas | 120 por minuto por token |
| Creaciones, ediciones, publicaciones y eliminaciones | 30 por minuto por cuenta |
| Analítica | 10 por minuto por cuenta |
| Revisiones de direcciones | 30 por minuto por cuenta |
Los límites son aproximados, y quedarse sin cupo nunca es un 429. Mediante la API, una cuenta puede tener hasta 500 borradores por producto. Cada respuesta trae un encabezado Request-Id: cítalo cuando contactes a soporte.
Referencia completa
- Referencia de la API: todos los endpoints y campos, con una consola.
- Documento OpenAPI 3.1 y enumeraciones y límites, sin necesidad de token.
- llms.txt: las reglas de la API, para herramientas de IA.
El mismo token también conecta asistentes de IA: consulta Conecta asistentes de IA.