Le connecteur LLM
Une seule intégration pour diffuser des publicités Permile dans la barre de chargement de Claude, ChatGPT, Gemini, Mistral ou Perplexity : une API REST minimaliste, ou un SDK JavaScript à coller tel quel.
1. Servir une publicité
GET /api/ads — paramètres : llm (claude | chatgpt | gemini | mistral | perplexity) et topics (liste de centres d'intérêt séparés par des virgules). Le ciblage LLM est strict : seule une campagne qui cible ce LLM peut être servie ; les topics sont préférentiels. Sans campagne correspondante, la réponse est un 200 avec ad: null (no fill) ; un llm inconnu renvoie un 400.
curl "https://VOTRE-DOMAINE/api/ads?llm=claude&topics=tech,voyage"
{
"ad": {
"id": "ad_cmp_notion_lz3k9",
"campaignId": "cmp_notion",
"advertiser": "Notion",
"headline": "Notion AI organise vos idées pendant que l'IA réfléchit",
"body": "Essayez l'espace de travail tout-en-un préféré des équipes produit.",
"cta": "Essayer gratuitement",
"url": "https://www.notion.so",
"color": "#3987e5",
"topic": "tech"
},
"meta": {
"format": "loading-bar",
"payouts": { "impression": 0.05, "click": 0.25, "conversionCashback": 1.5 },
"track": "/api/track"
}
}2. Tracker vue, clic, achat
POST /api/track — envoyez impression quand la pub s'affiche, click quand l'utilisateur clique, conversion à l'achat. La réponse contient le montant crédité à l'utilisateur. Une campagne en pause ou dont le budget est épuisé renvoie un 409 et n'est plus facturée.
curl -X POST "https://VOTRE-DOMAINE/api/track" \
-H "Content-Type: application/json" \
-d '{ "campaignId": "cmp_notion", "event": "impression" }'3. Ou en une balise : le SDK
Le SDK récupère une pub, l'affiche dans vos conteneurs [data-permile] et envoie automatiquement l'impression et les clics au tracking.
<!-- 1. Un conteneur là où la barre de chargement s'affiche -->
<div data-permile></div>
<!-- 2. Le SDK : il remplit tous les conteneurs [data-permile].
data-uid = l'identifiant Permile de l'utilisateur qui a installé
le connecteur : ses gains remontent sur son portefeuille. -->
<script
src="https://VOTRE-DOMAINE/sdk.js"
data-llm="claude"
data-topics="tech,voyage"
data-uid="usr_votre_id"
defer
></script>2 bis. Format « status line » (IDE & terminaux)
Pour Claude Code, Cursor et tout outil en ligne de commande : GET /api/statusline?llm=claude-code&uid=usr_xxx renvoie une ligne de texte brut prête à afficher dans une barre de statut, et crédite l'impression sur le portefeuille du uid. Installation clé en main pour Claude Code sur la page /dev.
curl "https://VOTRE-DOMAINE/api/statusline?llm=claude-code&uid=usr_xxx" # → ▌ Sentry — Le code généré par l'IA casse aussi. Sachez-le avant vos users · sentry.io
3 bis. Extension navigateur (côté utilisateur)
Pour les LLM fermés (claude.ai, chatgpt.com, gemini.google.com, chat.mistral.ai, perplexity.ai), l'utilisateur installe le connecteur dans SON navigateur. Deux formats : l'extension Chrome native (Manifest V3 — dossier extension/ du repo, publiable telle quelle sur le Chrome Web Store), ou le userscript Tampermonkey. Dans les deux cas : détection du LLM hôte, pub affichée pendant la génération, gains crédités sur le portefeuille de l'utilisateur — sans rien demander aux plateformes.
4. Le portefeuille de l'utilisateur
Quand le SDK (ou votre intégration) envoie un uid avec les événements, les gains s'accumulent sur le portefeuille serveur de cet utilisateur — quel que soit le LLM ou le site hôte. Consultez-le avec GET /api/wallet. Essayez le connecteur installé en conditions réelles sur la page de démo.
curl "https://VOTRE-DOMAINE/api/wallet?uid=usr_votre_id"
# → { "ok": true, "uid": "usr_votre_id",
# "wallet": { "balance": 4.35, "lifetime": 12.85, "views": 41, "clicks": 9 } }