Dokumentation durchsuchen REST-API

REST-API

Erstelle Links, Smart Links, Formulare und Multilink-Seiten aus deinem eigenen Code und lies ihre Statistiken, mit denselben Regeln wie in der Walink-App.

Aktualisiert am 11. November 2026 Als Markdown ansehen

Mit der Walink-API erledigt ein Skript, ein Backend oder jedes No-Code-Tool, das HTTP-Anfragen sendet, was du sonst in der App machst. Jede Anfrage läuft durch die Regeln der App. Adressen, Kontingent und Eigentum werden also genauso geprüft. Jedes Erstellen ergibt einen Entwurf, außer bei einem kostenlosen Link. So geht nichts versehentlich online.

Diese Seite bringt dich bis zum ersten Aufruf. Jeder Endpunkt und jedes Feld steht in der vollständigen API-Referenz. Dort gibt es auch eine Konsole, um Anfragen auszuprobieren.

Was du automatisieren kannst

Ressource Was die API macht
Premium-Links (/v1/links) Auflisten, Entwürfe erstellen, bearbeiten, veröffentlichen, zum Entwurf machen, löschen, QR-Code gestalten
Smart Links (/v1/smart-links) Dasselbe, mit Zielen und Routing
Formulare (/v1/forms) Dasselbe, dazu die Antworten, die Leute gesendet haben
Multilink-Seiten (/v1/multilinks) Dasselbe
Kostenlose Links (/v1/free-links) Auflisten, erstellen, lesen, löschen
Statistiken (/v1/analytics) Zahlen und Aufschlüsselungen nach Land, Quelle, Gerät und mehr
Konto (/v1/account) Profil, genutztes Kontingent, vorhandene kostenlose Links

Jedes Walink-Konto kann die API nutzen. Entwürfe sind kostenlos. Das Veröffentlichen verbraucht das Kontingent deines Abos, und Statistiken brauchen ein Abo, wie in der App.

Ein Token erstellen

  1. Melde dich bei Walink an, öffne das Kontomenü (der runde Button oben rechts) und wähle Developers.
  2. Wähle unter API Tokens den Punkt Create token (Token erstellen).
  3. Gib ihm einen Name, etwa „Reporting-Skript“, und leg bei Expires after fest, wann es abläuft: 30 days, 90 days, 1 year (der Standard) oder No expiration (kein Ablauf).
  4. Hake unter Scopes (Berechtigungen) nur an, was das Token braucht. Quick presets füllt Read only (nur lesen) oder Full access (voller Zugriff) aus. Scopes lassen sich später nicht ändern.
  5. Wähle Create token. Das Fenster Save your token zeigt es ein einziges Mal: Kopiere es an einen sicheren Ort, etwa in einen Passwortmanager, und wähle dann I've saved it (ich habe es gespeichert).

Tokens beginnen mit wlk_live_, und ein Konto kann 25 aktive Tokens haben. In der Token-Tabelle gibt dir Rotate ein neues Token mit demselben Namen und denselben Scopes, während das alte noch 7 Tage funktioniert. Revoke (widerrufen) stoppt ein Token endgültig, innerhalb von 30 Sekunden.

Scopes

write schließt read ein. Nichts schließt publish, delete oder responses:read ein: Jeder davon wird einzeln vergeben, und keiner ist standardmäßig an.

Scope Erlaubt
links:read Premium-Links, Smart Links und kostenlose Links lesen
links:write Entwürfe erstellen und bearbeiten
links:publish Veröffentlichen, zum Entwurf machen, alles Veröffentlichte bearbeiten, kostenlose Links erstellen
links:delete Löschen
forms:*, multilinks:* Dieselben vier für Formulare und Multilink-Seiten
account:read Profil, Kontingent und Nutzung
analytics:read Statistiken
responses:read Formularantworten. Darin stehen persönliche Daten, die Leute dir gesendet haben

analytics:read und multilinks:read zeigen auch die Namen deiner veröffentlichten Links, Smart Links und Formulare, selbst ohne deren eigenen Lese-Scope.

Deine erste Anfrage

Die Basis-URL ist https://api.walink.com/v1. Sende das Token als Authorization: Bearer <token> und den Inhalt von Anfragen als JSON. Die Beispiele lesen das Token aus der Umgebungsvariable WALINK_API_TOKEN. So bleibt es aus deinem Code heraus.

Deine Premium-Links auflisten (braucht 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
}

Listen beginnen mit dem Neuesten. Dazu gibt es limit (standardmäßig 25, höchstens 100) und cursor: Übergib next_cursor, um die nächste Seite zu bekommen.

Einen Entwurf erstellen

Ein Erstellen ergibt immer einen Entwurf (braucht links:write). Dieser hier öffnet einen Chat mit einer US-Nummer:

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"
  }'

Die Antwort ist 201 mit dem vollständigen Datensatz, seiner id und "status": "draft".

  • handle ist die Adresse nach wa.link/. Die Adresse lässt sich nicht mehr ändern, sobald der Link erstellt ist, und ein Entwurf reserviert sie nicht: Das erste Konto, das unter ihr veröffentlicht, bekommt sie.
  • plan ist der Linktyp: chat, catalog, channel oder group.
  • Idempotency-Key macht eine Wiederholung 24 Stunden lang sicher: Derselbe Schlüssel mit demselben Inhalt liefert die erste Antwort statt eines zweiten Entwurfs.

Veröffentlichen

Das Veröffentlichen ist ein eigener Aufruf und braucht links:publish:

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

Wie Publish in der App verbraucht es eine Einheit deines Premium-Links-Kontingents ($9 USD pro Jahr pro Link). Ohne freie Einheit ist die Antwort 402 pool_exhausted, mit den Zahlen in details. Kontingent fügst du auf der Seite Billing der App hinzu (so funktioniert die Abrechnung).

  • POST .../publish-check ist ein Probelauf: was das Veröffentlichen noch blockiert und wie viel Kontingent es verbrauchen würde.
  • POST .../unpublish nimmt den Link offline und gibt seine Einheit frei. Seine Adresse funktioniert nicht mehr, auch nicht auf gedruckten QR-Codes, und ein anderes Konto kann sie sich dann sichern.
  • PATCH /v1/links/{id} ändert nur die Felder, die du sendest. Bei einem veröffentlichten Link ist die Änderung sofort online. Dafür brauchst du deshalb ebenfalls links:publish.

Smart Links, Formulare und Multilink-Seiten folgen denselben Schritten unter ihren eigenen Pfaden. Smart Links nutzen die links-Scopes.

/v1/free-links erstellt die kostenlosen Links, von denen jedes Konto bis zu 5 haben kann. Diese Links funktionieren anders:

  • Ein kostenloser Link ist online, sobald er erstellt ist, und nie ein Entwurf. Deshalb braucht das Erstellen links:publish, nicht links:write.
  • Walink wählt seine zufällige Adresse. Du sendest eine Telefonnummer oder einen WhatsApp-Benutzernamen, optional eine Nachricht und optional einen privaten title, der sich später nicht ändern lässt.
  • Er lässt sich auflisten, lesen und löschen, aber nie bearbeiten. Seine ID beginnt mit fln_, und /v1/links zeigt ihn nie.
  • Um ihn zu bearbeiten oder seine Statistiken zu sehen, brauchst du ein Upgrade auf Premium in der App. Dabei ändert sich seine ID zu lnk_.

Sind es schon 5, antwortet ein Erstellen mit 409 free_link_limit_reached. Löschst du einen, wird sein Platz frei. Mehr dazu unter Kostenlose Links.

Fehler und Ratenlimits

Jeder Fehler hat denselben Aufbau:

{
	"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"] }
	}
}
Status Häufige Codes Bedeutung
401 invalid_token Token fehlt, ist abgelaufen oder widerrufen
402 pool_exhausted, past_due_locked, subscription_required Kontingent oder Abrechnung, in der App zu beheben
403 insufficient_scope details.required nennt den Scope
404 not_found Auch bei IDs anderer Konten
409 handle_taken, free_link_limit_reached Die Adresse ist vergeben, oder eine Grenze ist erreicht
422 validation_failed, handle_immutable Ungültige Anfrage. details.fields listet die Probleme auf
429 rate_limited Warte Retry-After Sekunden
Anfragen Limit
Lesen 120 pro Minute pro Token
Erstellen, Bearbeiten, Veröffentlichen und Löschen 30 pro Minute pro Konto
Statistiken 10 pro Minute pro Konto
Adressprüfungen 30 pro Minute pro Konto

Die Limits sind Richtwerte, und ein aufgebrauchtes Kontingent ist nie ein 429. Über die API kann ein Konto bis zu 500 Entwürfe pro Produkt haben. Jede Antwort trägt einen Request-Id-Header: Nenn ihn, wenn du dich an den Support wendest.

Vollständige Referenz

Dasselbe Token verbindet auch KI-Assistenten: siehe KI-Assistenten verbinden.