L’API REST ClicPlus permet de créer, lister, modifier et supprimer des liens courts et QR codes par programmation. Disponible sur les plans Pro (1 clé, 30 req/min) et Business (3 clés, 120 req/min).
Authentification#
L’API s’authentifie via le header X-API-Key :
curl https://api.yannick.services/clicplus/urls \
-H "X-API-Key: votre_clé"Les clés API sont disponibles sur les plans Pro (1 clé) et Business (3 clés).
Créer une clé API#
- Ouvrez le dashboard ClicPlus
- Section Clés API (visible uniquement sur les plans Pro et Business)
- Cliquez Créer une clé API
- Copiez immédiatement la clé — elle ne sera plus affichée
Conservez votre clé en lieu sûr. Elle ne peut pas être récupérée après création. En cas de compromission, révoquez-la immédiatement et créez-en une nouvelle.
URL de base#
https://api.yannick.services/clicplusEndpoints — Liens courts#
Créer un lien#
curl -X POST https://api.yannick.services/clicplus/urls \
-H "X-API-Key: votre_clé" \
-H "Content-Type: application/json" \
-d '{
"longUrl": "https://example.com/page-longue",
"tags": ["campagne", "été"],
"slugLength": 6
}'Paramètres du body :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
longUrl | string | Oui | URL de destination (HTTPS, max 2 000 caractères) |
slug | string | Non | Slug personnalisé (4-30 chars, [a-zA-Z0-9_-]) |
slugLength | number | Non | Longueur du slug aléatoire (4-8, défaut 6) |
tags | array | Non | Tags (max 5, format [a-z0-9-]{1,30}) |
expireHours | number | Non | Expiration en heures (1-8760, 0 = illimité) |
expireClicks | number | Non | Expiration en clics (1-100, 0 = illimité) |
Réponse (201) :
{
"id": "abc123-uuid",
"slug": "HPiKhp",
"shortUrl": "https://clicpl.us/HPiKhp",
"longUrl": "https://example.com/page-longue",
"tags": ["campagne", "été"],
"status": "pending_moderation",
"createdAt": "2026-07-25T10:30:00.000Z"
}Lister ses liens#
curl https://api.yannick.services/clicplus/urls?limit=10 \
-H "X-API-Key: votre_clé"Paramètres query :
| Champ | Type | Description |
|---|---|---|
limit | number | Nombre de résultats (1-50, défaut 20) |
nextToken | string | Token de pagination |
tag | string | Filtrer par tag |
Obtenir un lien#
curl https://api.yannick.services/clicplus/urls/{id} \
-H "X-API-Key: votre_clé"Modifier un lien#
curl -X PUT https://api.yannick.services/clicplus/urls/{id} \
-H "X-API-Key: votre_clé" \
-H "Content-Type: application/json" \
-d '{
"longUrl": "https://example.com/nouvelle-page",
"tags": ["campagne", "automne"]
}'Modifier
longUrl déclenche une re-modération automatique. Le lien peut être suspendu si le nouveau contenu est rejeté.Supprimer un lien#
curl -X DELETE https://api.yannick.services/clicplus/urls/{id} \
-H "X-API-Key: votre_clé"Statistiques d’un lien#
curl https://api.yannick.services/clicplus/urls/{id}/stats \
-H "X-API-Key: votre_clé"Réponse :
{
"totalClicks": 142,
"last30Days": 47
}Historique de stats (90 jours)#
curl https://api.yannick.services/clicplus/urls/{id}/stats/history \
-H "X-API-Key: votre_clé"Endpoints — QR codes#
Créer un QR code#
curl -X POST https://api.yannick.services/qrcode/generate \
-H "X-API-Key: votre_clé" \
-H "Content-Type: application/json" \
-d '{
"contentType": "url",
"content": "https://example.com",
"dynamic": true,
"tags": ["vitrine"],
"backgroundColor": "#FFFFFF",
"fillColor": "#1a1a2e"
}'Paramètres du body :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
contentType | string | Oui | url, text, vcard, wifi, file |
content | string/object | Oui | Contenu à encoder (format selon le type) |
dynamic | boolean | Non | QR dynamique (URL uniquement, défaut false) |
tags | array | Non | Tags (max 5) |
backgroundColor | string | Non | Couleur de fond hex (défaut #FFFFFF) |
fillColor | string | Non | Couleur des modules hex (défaut #000000) |
imageUrl | string | Non | Logo central (URL HTTPS) |
errorCorrection | string | Non | Low, Medium, Quartile, High (défaut Low) |
border | number | Non | Bordure 1-10 (défaut 4) |
boxSize | number | Non | Taille modules 5-20 (défaut 10) |
Formats de contenu par type :
{
"contentType": "url",
"content": "https://example.com",
"dynamic": true
}{
"contentType": "text",
"content": "Votre message ici (1-1000 caractères)"
}{
"contentType": "vcard",
"content": {
"firstName": "Yannick",
"lastName": "Tocquet",
"phone": "+33612345678",
"email": "contact@example.com",
"organization": "Mon Entreprise",
"title": "Directeur",
"url": "https://example.com"
}
}{
"contentType": "wifi",
"content": {
"ssid": "MonReseau",
"password": "motdepasse123",
"encryption": "WPA"
}
}Valeurs encryption : WPA, WEP, nopass
La réponse retourne le QR code en statut
pending_moderation. Le QR est généré après approbation (sauf WiFi, qui est immédiat). Pollez GET /qrcode/records/{id} pour vérifier le statut.Lister ses QR codes#
curl https://api.yannick.services/qrcode/records \
-H "X-API-Key: votre_clé"Obtenir un QR code#
curl https://api.yannick.services/qrcode/records/{id} \
-H "X-API-Key: votre_clé"Modifier la destination (QR dynamique)#
curl -X PUT https://api.yannick.services/qrcode/records/{id} \
-H "X-API-Key: votre_clé" \
-H "Content-Type: application/json" \
-d '{
"content": "https://example.com/nouvelle-page"
}'Supprimer un QR code#
curl -X DELETE https://api.yannick.services/qrcode/records/{id} \
-H "X-API-Key: votre_clé"Stats de scans (QR dynamique)#
curl https://api.yannick.services/qrcode/records/{id}/track \
-H "X-API-Key: votre_clé"Endpoints — Tags#
Lister les tags#
Retourne les tags distincts avec leur nombre d’occurrences :
curl https://api.yannick.services/clicplus/tags \
-H "X-API-Key: votre_clé"Codes d’erreur#
| Code HTTP | Signification |
|---|---|
| 200 | Succès |
| 201 | Ressource créée |
| 400 | Paramètre invalide (voir message dans la réponse) |
| 401 | Authentification manquante ou invalide |
| 403 | Clé API sans le scope clicplus, ou quota dépassé |
| 404 | Ressource non trouvée |
| 429 | Rate limit atteint (attendre avant de réessayer) |
| 503 | Service temporairement indisponible |
Rate limiting#
| Plan | Limite |
|---|---|
| Pro | 30 requêtes / minute |
| Business | 120 requêtes / minute |
En cas de dépassement, l’API retourne un code 429. Attendez quelques secondes avant de réessayer.
Exemple complet — Script de création en masse#
#!/bin/bash
API_KEY="votre_clé_ici"
BASE_URL="https://api.yannick.services/clicplus/urls"
urls=(
"https://monsite.fr/page-1"
"https://monsite.fr/page-2"
"https://monsite.fr/page-3"
)
for url in "${urls[@]}"; do
curl -s -X POST "$BASE_URL" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d "{\"longUrl\": \"$url\", \"tags\": [\"batch\"]}" | jq .shortUrl
sleep 2 # Respecter le rate limit
done



