Référence API REST

Base URL : https://clicaven.com

Toutes les requêtes retournent du JSON. L'authentification utilise des clés API (Bearer).

OpenAPI : Télécharger le schéma OpenAPI (JSON) — Importable dans Postman, Insomnia, ou tout outil compatible OpenAPI 3.

Authentification

L'API ClicAven utilise des clés API pour l'authentification. Chaque requête doit inclure votre clé dans l'en-tête Authorization.

Comment obtenir une clé API
  1. Connectez-vous à votre compte ClicAven et accédez à la page Clés API
  2. Donnez un nom à votre clé et cliquez sur Créer
  3. Copiez la clé affichée — elle ne sera plus visible ensuite
Headers requis
Authorization: Bearer ca_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Les clés API n'expirent pas par défaut. Vous pouvez les révoquer à tout moment depuis votre espace Clés API. L'accès API est inclus dans tous les plans, y compris le plan gratuit.

POST/api/links

Créer un nouveau lien court. Nécessite une clé API valide.

Headers requis
Authorization: Bearer ca_votre_cle_api
Content-Type: application/json
Corps de la requête
{
  "url": "https://example.com/une-url-tres-longue",
  "title": "Promo Noël LinkedIn",
  "customSlug": "promo-noel",
  "domainHostname": "go.mon-domaine.com",
  "permanent": true
}

Le champ title est optionnel (120 caractères maximum). Il sert à retrouver le lien dans le tableau de bord et l'export CSV ; il n'est jamais affiché publiquement.

Champs du lien
Champ Type Accès Description
urlstringlecture / écritureURL de destination. Obligatoire.
titlestring|nulllecture / écritureLibellé pour retrouver le lien dans le tableau de bord et l'export. 120 caractères maximum, jamais affiché publiquement.
customSlugstring|nulllecture / écritureCode court personnalisé. Plans Pro et supérieurs. Généré automatiquement si absent.
domainHostnamestring|nulllecture / écritureUn de vos domaines personnalisés vérifiés. Le domaine par défaut est utilisé si absent.
permanentbooleanlecture / écrituretrue renvoie une redirection 301 (permanente), false une 302 (temporaire). true par défaut.
iduuidlecture seuleIdentifiant UUID du lien.
shortstringlecture seuleCode court généré.
shortUrlstringlecture seuleURL courte complète, prête à diffuser.
clickCountintegerlecture seuleNombre total de clics depuis la création.
createdAtdate-timelecture seuleDate de création.

Le schéma complet et à jour est publié au format OpenAPI 3.1 : /api/openapi.json et /api/openapi.yaml. Il est généré à partir du code, c'est donc lui qui fait foi.

Réponse (201 Created)
{
  "@context": "/api/contexts/Link",
  "@id": "/api/links/01a08b81-78ad-7720-a4c8-3133c7752bb9",
  "@type": "Link",
  "id": "01a08b81-78ad-7720-a4c8-3133c7752bb9",
  "url": "https://example.com/une-url-tres-longue",
  "short": "aB3xYz",
  "shortUrl": "https://clicaven.com/aB3xYz",
  "title": "Promo Noël LinkedIn",
  "clickCount": 0,
  "createdAt": "2026-04-18T12:00:00+00:00",
  "permanent": true,
  "domainHostname": null
}
Exemple curl
curl -s -X POST https://clicaven.com/api/links \
  -H "Authorization: Bearer ca_votre_cle_api" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/page-longue?utm_source=api","title":"Campagne API"}'

GET/api/links

Lister tous vos liens courts. Nécessite une clé API valide.

Exemple curl
curl -s https://clicaven.com/api/links \
  -H "Authorization: Bearer ca_votre_cle_api" | jq .
Réponse (200 OK)
{
  "@context": "/api/contexts/Link",
  "@id": "/api/links",
  "@type": "Collection",
  "totalItems": 1,
  "member": [
    {
      "@id": "/api/links/01a08b81-78ad-7720-a4c8-3133c7752bb9",
      "@type": "Link",
      "id": "01a08b81-78ad-7720-a4c8-3133c7752bb9",
      "url": "https://example.com/page-longue",
      "short": "aB3xYz",
      "shortUrl": "https://clicaven.com/aB3xYz",
      "title": "Promo Noël LinkedIn",
      "clickCount": 14,
      "createdAt": "2026-04-18T12:00:00+00:00",
      "permanent": true,
      "domainHostname": null
    }
  ]
}

GET/api/links/{id}

Récupérer les détails d'un lien spécifique, y compris le compteur de clics.

Exemple curl
curl -s https://clicaven.com/api/links/01a08b81-78ad-7720-a4c8-3133c7752bb9 \
  -H "Authorization: Bearer ca_votre_cle_api" | jq .
Réponse (200 OK)
{
  "@context": "/api/contexts/Link",
  "@id": "/api/links/01a08b81-78ad-7720-a4c8-3133c7752bb9",
  "@type": "Link",
  "id": "01a08b81-78ad-7720-a4c8-3133c7752bb9",
  "url": "https://example.com/page-longue",
  "short": "aB3xYz",
  "shortUrl": "https://clicaven.com/aB3xYz",
  "title": "Promo Noël LinkedIn",
  "clickCount": 14,
  "createdAt": "2026-04-18T12:00:00+00:00",
  "permanent": true,
  "domainHostname": null
}

DELETE/api/links/{id}

Supprimer définitivement un lien. La redirection sera immédiatement inactive. Cette action est irréversible.

Exemple curl
curl -s -X DELETE https://clicaven.com/api/links/01a08b81-78ad-7720-a4c8-3133c7752bb9 \
  -H "Authorization: Bearer ca_votre_cle_api"
# → 204 No Content (succès, aucun corps)

6. Codes d'erreur

Code HTTP Signification Cause fréquente
400Bad RequestURL manquante ou invalide dans le corps
401UnauthorizedClé API manquante, expirée ou invalide
403ForbiddenAccès à un lien appartenant à un autre utilisateur
404Not FoundL'ID du lien n'existe pas
429Too Many RequestsQuota mensuel de liens atteint (rate limit)
500Server ErrorErreur interne — contactez le support via /contact
Format d'erreur
{
  "error": "authentication_failed",
  "message": "Invalid or expired API key."
}

Exemples PHP & JavaScript

Vous n'avez pas besoin de SDK : l'API est une simple API REST JSON. Voici des exemples copier-coller pour les langages les plus courants.

PHP
<?php
// ClicAven API — PHP example (no SDK needed)
$apiKey = 'ca_votre_cle_api';
$url    = 'https://example.com/une-url-tres-longue';

$ch = curl_init('https://clicaven.com/api/links');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['url' => $url]),
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);

echo $response['shortUrl'];
// => https://clicaven.com/aB3xYz
JavaScript (Node.js / fetch)
const API_KEY = 'ca_votre_cle_api';

const res = await fetch('https://clicaven.com/api/links', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ url: 'https://example.com/une-url-tres-longue' }),
});

const link = await res.json();
console.log(link.shortUrl);
// => https://clicaven.com/aB3xYz
Lien avec slug personnalisé (Pro+)
curl -s -X POST https://clicaven.com/api/links \
  -H "Authorization: Bearer ca_votre_cle_api" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/promo","customSlug":"ma-promo"}'
{
  "id": 43,
  "short": "rT9kWm",
  "customSlug": "ma-promo",
  "shortUrl": "https://clicaven.com/ma-promo",
  "url": "https://example.com/promo",
  "clickCount": 0,
  "createdAt": "2026-04-25T14:00:00+00:00"
}

Les slugs personnalisés nécessitent un plan Pro ou supérieur. 3 à 60 caractères, lettres, chiffres et tirets.

Des questions sur l'API ? Contactez-nous. Voir aussi la documentation générale.