Aller au contenu
LinkProfit

Bibliothèques clientes

Clients officiels LinkProfit pour Node, Python et PHP : un contrat commun pour les reprises, l’idempotence et la pagination, plus un démarrage rapide par langage.

Mis à jour le 14 août 2026

L’API REST n’est que du HTTP et du JSON, et un appel fetch est une façon parfaitement convenable de s’en servir. Les bibliothèques clientes existent pour les parties que personne n’aime écrire deux fois : reprendre correctement une requête refusée par la limite de débit, rendre sûre une création réessayée, et dérouler un curseur jusqu’au bout d’une liste.

Trois bibliothèques, un seul contrat :

| Langage | Paquet | Sources | | --- | --- | --- | | Node.js / TypeScript | @linkprofit/sdk | packages/sdk-node | | Python | linkprofit | sdk/python | | PHP | linkprofit/linkprofit-php | sdk/php |

Installation

Les paquets ne sont pas encore publiés sur npm, PyPI ni Packagist. La publication attend les comptes de registre ; le code est complet et s’installe dès aujourd’hui depuis une copie locale du dépôt, et les commandes ci-dessous deviendront un simple npm install @linkprofit/sdk (et ses équivalents) dès que les comptes existeront.

Node, depuis une copie locale :

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

Python, depuis une copie locale :

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

PHP, via un dépôt Composer de type path dans votre composer.json :

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

Ce que les trois font de la même façon

Les bibliothèques sont délibérément ennuyeuses et délibérément semblables. Apprenez le comportement une fois, il vaut dans tous les langages.

Authentification. Vous passez une clé d’espace de travail (lp_live_…) ; le client pose l’en-tête Authorization sur chaque requête. L’URL de base est une option : le même code peut donc tourner contre une instance locale dans les tests. Voir Authentification pour les portées et la rotation.

Des reprises qui respectent le serveur. Un 429 ou un 5xx passager est réessayé avec un délai croissant, et Retry-After est respecté plutôt que deviné — le serveur sait déjà quand la fenêtre se libère. Le nombre de tentatives est plafonné, et une requête qui échoue sur le fond (validation_failed, conflict, not_found) n’est jamais réessayée : répéter une requête fausse ne fait que gaspiller le budget de la limite de débit.

Des mutations idempotentes. Chaque appel de mutation porte une Idempotency-Key : une reprise après un délai d’attente réseau renvoie donc la réponse stockée au lieu de créer un second lien. Vous pouvez fournir votre propre clé — un identifiant de commande, un identifiant de tâche — quand la reprise peut venir d’un autre processus ou d’une exécution ultérieure. Les clés sont conservées 24 heures ; la même clé avec un corps différent répond 409.

La pagination par curseur sous forme d’itérateur. Les endpoints de liste sont paginés par curseur, et les clients les exposent comme des itérateurs : vous bouclez sur les liens, le client va chercher la page suivante quand la page courante est épuisée et s’arrête quand le curseur vaut null. Aucune arithmétique de pages, aucun risque de décalage d’une unité qui perd une ligne en silence.

Les erreurs sous forme d’exceptions. Un échec lève le type d’erreur naturel du langage, qui porte le code de l’API, le message lisible et, pour les échecs de validation, les details champ par champ. Branchez sur le code, pas sur le texte du message — ce sont les codes qui forment le contrat documenté.

Les types de requête et de réponse du client Node sont générés à partir du document OpenAPI que rend la référence — publié sur /openapi.json — si bien que les types ne peuvent pas s’écarter de l’API en service. Les clients Python et PHP suivent le même document à la main, dans l’idiome de leur langage.

Démarrage rapide

Chaque paquet est livré avec un README qui décrit toute sa surface ; les extraits ci-dessous montrent la forme commune aux trois — construire un client avec une clé, appeler le groupe de ressources, récupérer un objet typé.

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'];

Laquelle choisir

  • Node / TypeScript — la surface la plus complète, parce que ses types viennent directement du document OpenAPI. Le choix naturel pour un backend JavaScript, une fonction serverless ou un script de build.
  • Python — pour le reporting et le travail sur les données : tirer les statistiques dans un notebook, une tâche planifiée ou l’alimentation d’un tableau de bord.
  • PHP — pour le monde des CMS. Un plugin WordPress ou un service Laravel qui raccourcit les liens au fil de la publication du contenu.
  • Aucune des trois — si votre langage est ailleurs, l’API n’est que du HTTP ordinaire. Le démarrage rapide est écrit d’abord pour curl, et tout ce que font les clients (reprises, idempotence, curseurs) est un comportement documenté que vous pouvez implémenter en cinquante lignes.

Quel que soit votre choix, la référence de l’API donne la liste complète des endpoints, des champs et des codes d’erreur — les bibliothèques ne sont qu’une commodité par-dessus, jamais une autre API.

À lire aussi

  • Limites de débit — le budget dans lequel travaille la logique de reprise.
  • Webhooks — recevoir les événements poussés au lieu d’aller les chercher.
  • Serveur MCP — les mêmes opérations depuis un assistant IA.