Nous annonçons l'API AfiniTwin pour intégrateurs
Cinq endpoints REST authentifiés par clé API. Sers ton AfiniTwin comme system prompt depuis ton CRM, ton assistant propre ou ton pipeline nocturne. Inclus dans ton abonnement afini.ai. Aujourd'hui.
I. Le geste minimum
L'AfiniTwin Portable se télécharge depuis le dashboard depuis quelques mois. Ça marche : tu copies le preset, tu le colles dans Claude, ChatGPT ou Gemini, et l'IA te parle comme si elle te connaissait depuis le premier tour. Mais copier-coller ne passe pas à l'échelle. Si ton intégration B2B est sérieuse — un CRM, un assistant propre, un pipeline nocturne de traitement —, il te faut autre chose : que l'AfiniTwin entre tout seul, programmatiquement, à chaque appel que ton système fait au LLM.
C'est ce qu'on libère aujourd'hui. Une API REST authentifiée qui sert ton AfiniTwin comme system prompt, prête à être injectée depuis le code que tu écris.
Une clé, un appel :
curl -H "X-Twin-Key: atk_live_xxxxxxxx_yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" \
"https://api.afini.ai/v1/public/twin/preset/estandar?format=json&lang=fr"
Renvoie le méta-prompt complet du preset demandé, dans le format demandé. Tu le charges en system dans ton client Anthropic, OpenAI, Mistral ou autre, et à partir de là chaque tour est calibré sur ton profil cognitif. Sans réentraînement. Sans fine-tuning. Sans passer par notre infrastructure au-delà de la lecture initiale du snapshot.
System prompt, def.: la façon dont un LLM se souvient de qui il est avant d'oublier qui tu es. L'API B2B se charge de lui préserver la mémoire.
II. Cinq endpoints, une seule idée
/v1/public/twin/health — un ping pour valider que la clé est vivante sans dépenser de quota mensuel. Pour tes health checks de déploiement.
/v1/public/twin/me — identité de la clé, plan du propriétaire, quota utilisé et restant, dernier Twin disponible. Ce que tu appelleras au démarrage de ton intégration pour détecter une rétrogradation de plan ou une révocation de clé.
/v1/public/twin/historic — listing de tes snapshots, un pour chaque AfiniTwin que ton abonnement génère mois après mois. Utile si ton intégration veut laisser l'utilisateur choisir parmi plusieurs.
/v1/public/twin/snapshots/:id — métadonnées d'un snapshot précis.
/v1/public/twin/preset/:slug?format=...&lang=...&variant=...&includeNarratives=... — l'endpoint avec de la viande. Renvoie l'artefact en .txt, .md, .json ou .yaml, en six langues, avec ou sans narratifs Opus intégrés.
Tous les endpoints sauf /health comptent pour le quota mensuel. Par défaut dix mille requêtes par mois, configurable jusqu'à un million par clé. Chaque réponse inclut les en-têtes X-Twin-Quota-{Limit,Used,Remaining} pour que ton intégration sache combien il lui reste sans avoir à deviner.
III. Pourquoi clé API, pas OAuth
OAuth aurait du sens si l'intégration était un tiers accédant au profil d'un autre utilisateur. Ce n'est pas le cas. L'API B2B sert ton AfiniTwin à ton intégration — ton CRM, ton assistant, ton agent. Une clé API personnelle, générée dans ton dashboard, copiée dans le coffre de ton intégration, est le modèle qui colle le mieux : zéro friction de consentement, révocation instantanée, une clé par intégration pour borner le rayon d'explosion d'une fuite.
Clé API, def.: secret qui conserve sa condition de secret exactement entre la ligne où il est généré et la première fois qu'on le colle, par distraction, dans un dépôt public. C'est pour ça que la révocation est rapide.
Les clés sont des secrets au sens fort : en base de données on garde uniquement le hash SHA-256, format atk_live_<8 hex>_<32 hex>. Le plaintext n'est montré qu'une fois à la création. Si tu le perds, révoque et crée-en une autre. Si tu publies la clé par accident dans un repo public — ça arrive, tu n'es pas le premier —, révoque depuis le dashboard et c'est hors ligne en millisecondes.
IV. Partie de ton abonnement
La génération de clés est incluse dans ton abonnement afini.ai, par abonnement Stripe actif ou voucher vivant. Les endpoints publics servent indistinctement, à condition que ta clé ait été émise sur un compte avec abonnement actif. Si ton abonnement s'interrompt, les clés restent stockées mais les endpoints renvoient 403 jusqu'à ce que tu le réactives. On ne les supprime pas : on les laisse en pause, à attendre.
L'API est une fonctionnalité de plus de l'abonnement, pas un extra qui s'achète à part. Les intégrations B2B impliquent une charge soutenue sur notre infrastructure — le snapshot vit dans notre BDD, les en-têtes viennent de notre proxy — et c'est déjà couvert par le quota mensuel. Pas de petites caractères : si tu es abonné, tu l'as.
V. Quota et rate-limit : deux ceintures
Le quota mensuel mesure le volume agrégé. Le rate-limit par IP et par clé mesure les rafales. Aujourd'hui on te sert soixante requêtes par minute sur chaque endpoint lourd, cent vingt par minute sur /health. Si ton intégration tombe dans une boucle infinie accidentelle, le rate-limit l'attrape avant de drainer ton quota mensuel. Pas une seule ligne de défense.
Quota mensuel, def.: pitié temporelle que l'infrastructure accorde à l'intégrateur négligent, exprimée en requêtes. Elle se renouvelle le premier du mois ; le deux, l'épreuve recommence.
VI. Ce qu'on n'EST PAS
Ce n'est pas un endpoint ramène-moi le profil de l'utilisateur X où X est quelqu'un d'autre que le titulaire de la clé. La clé authentifie le propriétaire et renvoie toujours son AfiniTwin. Pas de chemins multi-tenant. Pas d'admin distant.
Ce n'est pas non plus un endpoint pour entraîner des modèles aux dépens de l'utilisateur. Ce qu'on sert est ce qui est déjà dans son snapshot immuable. Si notre fournisseur d'inférence (Anthropic) change sa politique de rétention, ça n'affecte pas rétroactivement les snapshots déjà générés.
Et ce n'est pas un substitut au journaling, au coaching ni à la thérapie. C'est un composant technique pour intégrateurs. Les questions humaines restent humaines.
VII. Comment commencer aujourd'hui
- Abonne-toi ou utilise ton voucher sur
https://afini.ai/preciossi ce n'est pas déjà fait. - Génère ton AfiniTwin depuis le dashboard si tu ne l'as pas encore. L'API fonctionne sans Twin — renvoie 403
NO_TWIN_PURCHASED—, mais sans Twin il n'y a pas grand-chose à servir. - Génère ta première clé sur
https://afini.ai/fr/dashboard/twin/api. Copie-la dans le coffre de ton intégration. Ne la committe pas dans un repo. - Appelle
/v1/public/twin/healthpour vérifier qu'elle est vivante. Ne consomme pas de quota. - Lis la documentation complète sur
https://afini.ai/fr/afinitwin/api. Exemples cURL, Node.js et Python, table complète des erreurs, recommandations de sécurité.
Si ton cas d'intégration a des exigences particulières — quotas supérieurs à un million par mois, scopes spécifiques, support SLA —, écris à info@afini.ai. Il y a de la marge de négociation.
VIII. Roadmap honnête
Aujourd'hui (v1.0) : les cinq endpoints ci-dessus, scope unique twin:read, inclus dans l'abonnement afini.ai, quota configurable jusqu'à un million.
Prochaines semaines : webhooks pour te notifier quand un nouveau snapshot est ready — sans polling —, scope twin:write pour intégrations voulant ensemencer des faits vitaux avec consentement explicite, métriques d'usage depuis le dashboard.
Quand il le faudra : SDK officiel TypeScript et Python, exemples canoniques d'intégration avec Anthropic et OpenAI, plan Enterprise avec SLA et quotas au-delà du million.
On ne promet pas ce qui n'existe pas. Si tu en as besoin et que ce n'est pas encore là, dis-le et c'est priorisé.
— Ricardo
