Zum Inhalt springen
LinkProfit

Client-Bibliotheken

Offizielle LinkProfit-Clients für Node, Python und PHP: ein gemeinsamer Vertrag für Wiederholungen, Idempotenz und Paginierung, dazu ein Schnellstart je Sprache.

Aktualisiert 14. August 2026

Die REST-API ist schlichtes HTTP und JSON, und ein fetch-Aufruf ist ein völlig brauchbarer Weg, sie zu nutzen. Die Client-Bibliotheken gibt es für die Teile, die niemand gern zweimal schreibt: eine gedrosselte Anfrage korrekt zu wiederholen, ein wiederholtes Anlegen gefahrlos zu machen und einen Cursor bis ans Ende einer Liste zu verfolgen.

Drei Bibliotheken, ein Vertrag:

| Sprache | Paket | Quellcode | | --- | --- | --- | | Node.js / TypeScript | @linkprofit/sdk | packages/sdk-node | | Python | linkprofit | sdk/python | | PHP | linkprofit/linkprofit-php | sdk/php |

Installation

Die Pakete liegen noch nicht auf npm, PyPI oder Packagist. Die Veröffentlichung wartet auf die Registry-Konten; der Code ist vollständig und heute schon aus einem Checkout des Repositorys installierbar, und aus den Befehlen unten wird ein einzeiliges npm install @linkprofit/sdk (und seine Entsprechungen), sobald die Konten existieren.

Node, aus einem lokalen Checkout:

npm install /path/to/linkprofit/packages/sdk-node

Python, aus einem lokalen Checkout:

pip install /path/to/linkprofit/sdk/python

PHP, über ein Composer-Path-Repository in Ihrer composer.json:

{
  "repositories": [
    { "type": "path", "path": "/path/to/linkprofit/sdk/php" }
  ],
  "require": {
    "linkprofit/linkprofit-php": "*"
  }
}

Was alle drei gleich machen

Die Bibliotheken sind mit Absicht langweilig und mit Absicht gleich. Das Verhalten lernen Sie einmal, und es gilt in jeder Sprache.

Authentifizierung. Sie übergeben einen Workspace-Schlüssel (lp_live_…); der Client setzt bei jeder Anfrage den Authorization-Header. Die Basis-URL ist eine Option, derselbe Code läuft in Tests also auch gegen eine lokale Instanz. Berechtigungen und Schlüsselwechsel stehen unter Authentifizierung.

Wiederholungen, die den Server respektieren. Ein 429 oder ein vorübergehendes 5xx wird mit Backoff wiederholt, und Retry-After wird befolgt statt geraten — der Server weiß bereits, wann das Fenster wieder frei wird. Die Zahl der Versuche ist gedeckelt, und eine Anfrage, die aus eigenem Recht scheitert (validation_failed, conflict, not_found), wird nie wiederholt: Eine falsche Anfrage zu wiederholen verbraucht nur das Rate-Limit-Budget.

Idempotente Änderungen. Jeder verändernde Aufruf trägt einen Idempotency-Key, eine Wiederholung nach einem Netzwerk-Timeout liefert also die gespeicherte Antwort zurück, statt einen zweiten Link anzulegen. Sie können einen eigenen Schlüssel mitgeben — eine Bestellnummer, eine Job-ID —, wenn die Wiederholung aus einem anderen Prozess oder einem späteren Lauf kommen kann. Die Schlüssel werden 24 Stunden gespeichert; derselbe Schlüssel mit anderem Rumpf antwortet mit 409.

Cursor-Paginierung als Iterator. Listen-Endpunkte sind Cursor-paginiert, und die Clients machen daraus Iteratoren: Sie laufen über Links, der Client holt die nächste Seite, wenn die aktuelle zu Ende ist, und hört auf, sobald der Cursor null ist. Kein Rechnen mit Seiten, kein Risiko des Abzählfehlers, der stillschweigend einen Datensatz verschluckt.

Fehler als Ausnahmen. Fehlschläge lösen den natürlichen Fehlertyp der jeweiligen Sprache aus und tragen den API-code, die menschenlesbare Meldung und bei Validierungsfehlern die details je Feld. Verzweigen Sie über den Code, nicht über den Meldungstext — die Codes sind der dokumentierte Vertrag.

Die Anfrage- und Antworttypen des Node-Clients werden aus demselben OpenAPI-Dokument erzeugt, das auch die Referenz rendert — veröffentlicht unter /openapi.json —, die Typen können also nicht von der laufenden API abdriften. Die Clients für Python und PHP folgen demselben Dokument von Hand, in der Ausdrucksweise ihrer Sprache.

Schnellstart

Jedes Paket bringt eine README mit seinem vollständigen Umfang mit; die Schnipsel unten zeigen die Form, die alle drei teilen — einen Client mit einem Schlüssel bauen, die Ressourcengruppe aufrufen, ein typisiertes Objekt zurückbekommen.

Node

import { LinkProfit } from "@linkprofit/sdk";

const client = new LinkProfit({ apiKey: process.env.LINKPROFIT_API_KEY });

const created = await client.createLink({
  url: "https://example.com/summer-sale",
  title: "Summer sale",
});

console.log(created.data.short_url);

Python

import os

from linkprofit import LinkProfit

client = LinkProfit(os.environ["LINKPROFIT_API_KEY"])

created = client.create_link(
    {"url": "https://example.com/summer-sale", "title": "Summer sale"}
)

print(created["data"]["short_url"])

PHP

<?php

require __DIR__ . '/vendor/autoload.php';

use LinkProfit\LinkProfit;

$client = new LinkProfit(getenv('LINKPROFIT_API_KEY'));

$created = $client->createLink([
    'url' => 'https://example.com/summer-sale',
    'title' => 'Summer sale',
]);

echo $created['data']['short_url'];

Welche soll ich nehmen

  • Node / TypeScript — der vollständigste Umfang, weil die Typen direkt aus dem OpenAPI-Dokument kommen. Die natürliche Wahl für ein JavaScript-Backend, eine Serverless-Funktion oder ein Build-Skript.
  • Python — für Auswertungen und Datenarbeit: Analytics in ein Notebook, einen geplanten Job oder einen Dashboard-Feed ziehen.
  • PHP — für die Welt der Content-Systeme. Ein WordPress-Plugin oder ein Laravel-Service, der Links kürzt, während Inhalte veröffentlicht werden.
  • Keine davon — liegt Ihre Sprache anderswo, ist die API ganz gewöhnliches HTTP. Der Schnellstart beginnt mit curl, und alles, was die Clients tun (Wiederholungen, Idempotenz, Cursor), ist dokumentiertes Verhalten, das Sie in fünfzig Zeilen selbst bauen.

Was auch immer Sie wählen: Die API-Referenz ist die vollständige Liste der Endpunkte, Felder und Fehlercodes — die Bibliotheken sind eine Bequemlichkeit darüber, nie eine andere API.

Ebenfalls lesenswert

  • Rate-Limits — das Budget, in dem die Wiederholungslogik arbeitet.
  • Webhooks — Ereignisse zugestellt bekommen, statt sie abzufragen.
  • MCP-Server — dieselben Operationen aus einem KI-Assistenten heraus.