Erstelle Links mit Routing-Regeln, verwalte Tags und eigene Domains und lies Klick-Statistiken über eine REST-API mit OpenAPI-3.1-Spezifikation oder das typisierte TypeScript-SDK ohne Abhängigkeiten.
Schlüssel unter Profil → API erstellen
Zuletzt aktualisiert: November 2026
npm install revolink
Läuft in Node.js 18+ und jeder Umgebung mit globalem fetch. Keine Abhängigkeiten, vollständige TypeScript-Typen, aus der API-Spezifikation generiert.
In drei Schritten vom Nichts zum ersten Kurzlink.
Öffne in Revolink Profil → API und erstelle einen Schlüssel. Wähle nur die Berechtigungen, die er braucht.
Die Workspace-ID wird bei jeder Anfrage mitgesendet, sodass der Schlüssel immer in einem Workspace handelt.
Initialisiere den Client mit Schlüssel und Workspace-ID und rufe links.create auf.
Bewahre den Schlüssel auf deinem Server auf. Wer ihn hat, kann im Rahmen seiner Berechtigungen in deinem Workspace handeln.
Mit dem Revolink-SDK erstellst du Kurzlinks mit Routing-Regeln in wenigen Zeilen Code.
import {Revolink} from 'revolink';
const revolink = new Revolink({
apiKey: process.env.REVOLINK_API_KEY!,
workspaceId: process.env.REVOLINK_WORKSPACE_ID!,
});
const {shortLink} = await revolink.links.create({
url: 'https://example.com',
});
console.log(shortLink); // https://rvlnk.link/k3x9aAnfrage
await revolink.links.create({
url: 'https://example.com',
});Antwort
{
id: "65f1c0a2e4b0a1d2c3b4a5f6",
name: "example.com",
domain: "rvlnk.link",
slug: "k3x9a",
shortLink: "https://rvlnk.link/k3x9a",
url: "https://example.com",
active: true,
clicks: 0,
...
}Vier Ressourcen und ein me-Aufruf. Jede Methode entspricht einem REST-Endpunkt.
| Ressource | Methoden | Was sie tut |
|---|---|---|
| revolink.links | createupsertgetlistiterateupdatedeletecreateManyupdateManydeleteMany | Links erstellen, lesen, aktualisieren und löschen, Upsert per Slug, filtern und paginieren, alle Seiten durchlaufen und Massenoperationen (bis zu 100 pro Aufruf). |
| revolink.tags | listgetcreateupdatedelete | Tags erstellen, auflisten, umbenennen und löschen. |
| revolink.domains | listgetcreatedelete | Eine eigene Domain hinzufügen, ihren Verifizierungsstatus prüfen und sie entfernen. |
| revolink.analytics | linkworkspace | Klick-Statistiken für einen Link oder den ganzen Workspace in einem Datumsbereich. |
| revolink.me() | Wer mit dem Schlüssel handelt, der Workspace und die Berechtigungen des Schlüssels. |
Schicke verschiedene Besucher an verschiedene Ziele. Genau eine Regel ist der Standard; die anderen greifen nach Land, Gerät, Betriebssystem und weiteren Bedingungen.
await revolink.links.create({
name: 'App download',
rules: [
{isDefault: true, targetUrl: 'https://example.com/download'},
{
isDefault: false,
targetUrl: 'https://apps.apple.com/app/id1',
device: ['mobile'],
os: ['iOS'],
},
],
});Jeder Schlüssel trägt Scopes. Ein Endpunkt antwortet mit 403, wenn der nötige Scope fehlt - gib jeder Integration also nur, was sie nutzt.
Authorization: Bearer <key>Sende den Schlüssel als Bearer-Token.
X-Api-KeyOder sende den Schlüssel in diesem Header.
X-Workspace-IdErforderlich. Der Workspace, in dem die Anfrage handelt. Der Schlüsselinhaber muss Mitglied sein.
| Scope | Erlaubt |
|---|---|
links:read | Links auflisten und lesen |
links:write | Links erstellen, per Upsert anlegen und aktualisieren |
links:delete | Links löschen |
links:bulk | Massenweise erstellen, aktualisieren und löschen (bis zu 100 Links pro Anfrage) |
analytics:read | Klick-Statistiken lesen |
tags:read | Tags auflisten und lesen |
tags:write | Tags erstellen und aktualisieren |
tags:delete | Tags löschen |
domains:read | Eigene Domains auflisten und lesen |
domains:write | Eigene Domains hinzufügen |
domains:delete | Eigene Domains löschen |
API-Aufrufe zählen auf das monatliche API-Kontingent des Tarifs des Workspace-Inhabers. Stoppt ein Tariflimit eine Anfrage, lautet der Fehlercode license_limit_reached.
Jede fehlgeschlagene Anfrage wirft einen RevolinkError mit HTTP-Status, maschinenlesbarem Code und einer Meldung, was zu korrigieren ist.
import {RevolinkError} from 'revolink';
try {
await revolink.links.create({url: 'https://example.com', slug: 'taken'});
} catch (error) {
if (error instanceof RevolinkError) {
error.status; // 409
error.code; // 'conflict'
error.licenseLimitReached; // true when the plan's limit stopped the request
error.requiredPermission; // e.g. 'tags:write' when the key lacks a scope
error.retryAfter; // seconds, on 429
}
}Ein 429 wird immer nach der Wartezeit aus Retry-After wiederholt. Netzwerkfehler und 5xx-Antworten werden nur bei GET, PUT und DELETE wiederholt. Ein POST oder PATCH, der schon verarbeitet worden sein könnte, wird nie wiederholt, sodass kein Link doppelt entsteht. Standard: 30 Sekunden Timeout pro Versuch und 2 Wiederholungen; maxRetries auf 0 schaltet Wiederholungen ab.
| Code | Bedeutung |
|---|---|
invalid_request | Die Anfrage ist fehlerhaft (400). Die Meldung nennt den Grund. |
unauthorized | Kein Schlüssel oder ein ungültiger bzw. abgelaufener Schlüssel (401). |
forbidden | Dem Schlüssel fehlt eine Berechtigung oder deine Rolle darf das nicht (403). |
license_limit_reached | Das Tariflimit ist erreicht: Links, Tags, Domains oder API-Aufrufe (403). |
not_found | Dieses Element gibt es in diesem Workspace nicht (404). |
conflict | Existiert bereits, z. B. ein vergebener Slug oder Tag-Name (409). |
rate_limited | Mehr als 300 Anfragen pro Minute für den Schlüssel (429). |
network_error | Keine Antwort: Netzwerkfehler oder Timeout (der Status ist 0). |
Nein. Das SDK ist ein dünner, typisierter Wrapper um die REST-API. Du kannst https://api.revolink.link/apiv2 aus jeder Sprache direkt mit einem API-Schlüssel und dem Header X-Workspace-Id aufrufen oder einen Client aus der OpenAPI-3.1-Spezifikation generieren.
Node.js 18 oder neuer und jede Umgebung mit globalem fetch. Es hat keine Abhängigkeiten und liefert ESM- und CommonJS-Builds mit TypeScript-Typen aus der API-Spezifikation.
Anfragen sind auf 300 pro Minute und API-Schlüssel begrenzt. Darüber antwortet die API mit 429 und einem Retry-After-Header, und das SDK wartet und wiederholt selbstständig. Unabhängig davon zählen API-Aufrufe auf das monatliche Kontingent des Tarifs des Workspace-Inhabers.
API v1 ist eingefroren, ihre Antworten tragen Deprecation-Header. Neue Integrationen sollten API v2 nutzen.
Nein. Ein POST oder PATCH, der verarbeitet worden sein könnte, wird nie wiederholt. Nur 429-Antworten und idempotente Anfragen (GET, PUT, DELETE) werden wiederholt.
Ja. Der Revolink-MCP-Server lässt Claude, Cursor und andere MCP-Clients Links in natürlicher Sprache verwalten. Das SDK ist die Wahl für deinen eigenen Code und deine Skripte.
Schließen Sie sich Teams und Kreativen an, die jeden Klick mit intelligentem Routing kontrollieren. Starten Sie smartere Kampagnen, optimieren Sie Traffic in Echtzeit und wachsen Sie ohne Grenzen.
Kostenlos startenKostenloser Plan · Keine Kreditkarte · Jederzeit kündigen
Sie haben bereits Links? Importieren Sie sie