Fiabilité
Vos utilisateurs continuent, même pendant nos pannes.
Une API de licensing est sur votre chemin de revenu. Chaque minute où nous sommes indisponibles est une minute où votre app peut ne plus démarrer. C'est pour ça que le SDK est conçu pour survivre à nos pannes, et qu'il reste toujours possible de partir.
Status en direct
Probes publiques d'uptime sur l'API et le dashboard, mises à jour chaque minute.
Grace period offline 72 h
Intégrée au SDK, activée par défaut.
Quand validate() retourne valid:true, le SDK écrit le verdict dans un cache local. Si l'appel suivant échoue parce que l'API est injoignable (erreur réseau, timeout, 5xx), le SDK rejoue le verdict caché pendant 72 h max, automatiquement. Les négatifs autoritaires comme la révocation, l'expiration ou tout 4xx ne sont jamais cachés et jamais contournés. Une licence révoquée reste révoquée.
- 72 h par défaut, configurable via gracePeriodMs (max 30 jours).
- Storage pluggable : memoryCache (défaut), fileSystemCache(path), ou le vôtre.
- Seuls les verdicts positifs sont mis en cache. Les révocations se propagent immédiatement.
- Les clés de licence sont hashées avant d'être utilisées comme clé de cache. Aucune clé en clair n'est écrite sur disque.
import { createClient, fileSystemCache } from '@paperkeyhq/sdk';
const paperkey = createClient({
apiKey: process.env.PAPERKEY_PK!,
cache: fileSystemCache({ path: app.getPath('userData') }),
});
const result = await paperkey.validate(licenseKey, fingerprint);
if (result.source === 'cache') {
// On tourne sur le dernier verdict vérifié.
// La session de l'utilisateur continue normalement.
}Disponible depuis @paperkeyhq/sdk v0.3.0.
Comment on tourne
Une stack petite et prévisible.
Pas de magie. Le SDK est MIT. La stack runtime est volontairement boring : une base managée unique, quelques replicas API stateless derrière un proxy edge, et une queue de jobs pour les webhooks sortants.
- Runtime API derrière un proxy edge avec TLS 1.3 et HTTP/3.
- Base managée avec backups quotidiens chiffrés et point-in-time recovery.
- Webhooks signés HMAC-SHA-256, timeout 5 secondes, auto-pause après 10 échecs consécutifs.
- Auth dashboard via cookie JWT httpOnly. API publique via clés Bearer avec rate limits par IP et par clé.
- Hébergé en UE. Les données de licence restent en UE.
Zero lock-in
Partir est toujours possible.
Vous ne pariez pas votre business sur notre survie à 5 ans. Des portes de sortie concrètes existent aujourd'hui, et on en ajoute régulièrement.
- SDK sous licence MIT : @paperkeyhq/sdk sur npm. Forkez-le, vendorisez-le, ou changez son baseUrl pour pointer vers n'importe quel backend compatible.
- Export self-custody : depuis le dashboard, vous téléchargez toutes les licences et activations par produit en CSV ou JSON, à tout moment.
- Runtime self-hostable : un release packagé fait tourner la stack en production sur votre propre serveur, sur la même recette que nous.
Liste honnête
Ce qu'on ne revendique pas (encore).
Un fournisseur de licensing qui exagère sa posture compliance est un risque.
- Pas de SLA formel. On en publiera un avant la GA, avec un historique public des incidents.
- Pas de SOC 2 ni ISO 27001. On n'est pas à l'échelle où ces audits ont du sens, et un faux badge n'aiderait personne.
- Pas de PCI. On ne traite pas de cartes bancaires. Vos clients paient via Stripe, Lemon Squeezy, Paddle, etc. Paperkey émet et valide uniquement la licence.
- Pas de badge "Trusted by 50+ startups" tant que 50+ startups n'auront pas réellement shippé avec nous.
Des questions sur comment on opère ?
Écrivez à un humain. Réponse en heures ouvrées, souvent plus rapide.
Vous hésitez encore ?
Lisez le quickstart de 5 minutes. Ou sautez-le : le SDK a des valeurs par défaut sensées et le dashboard se comprend tout seul.