Publishable Keys
Appels API sécurisés côté navigateur. Sans backend propre.
Un Publishable Key (po_pk_) peut figurer dans le frontend: limité par la portée, lié à l'origine et plafonné par le budget.
Pour les artefacts Claude, Canvas ChatGPT, Grok et toute application web personnalisée.
- Infrastructure propre en UE Vos données restent en Europe.
- ISO 27001 actif Sécurité certifiée.
- SOC 2 Type II actif Normes d'audit internationales.
- Plus de 24 ans d'expérience Eprouvé. Stable. Avenir sécurisé.
Directement depuis le navigateur
De l'AI-Canvas directement à l'appel API
Vous construisez une application PDF-to-texte dans Claude Artifacts, ChatGPT Canvas ou Grok. Sans backend, l'appel API restait impossible : CORS bloque, une clé secrète serait visible dans le code source, et une clé ouverte surchargerait votre compte. C'est exactement ce vide que comblent les clés publiable.
À insérer dans Claude, ChatGPT ou Grok
Un prompt qui transforme n'importe quelle AI-Canvas en une véritable démo soutenue par API — sans backend.
Lisez ce document API :
https://api.paperoffice.ai/latest/docs/llms-full.txt Créez une application React en un seul fichier (Artifact Claude / Canvas ChatGPT / Grok) :
L'utilisateur télécharge un PDF, l'appelle
/job/add/paperoffice_aiocr___generate directement depuis le navigateur
et affiche le texte extrait. Auth : Bearer po_pk_MY_PUBLISHABLE_KEY (demander la clé à l'utilisateur).
Utiliser processing_lane=instant pour des résultats synchrones. L'en-tête Origin est défini par le navigateur. Choisissez un preset, créez une clé, collez-la.
Le tableau de bord fournit des préréglages pour les portées et le budget. Les origines restent vides — saisissez l'en-tête Origin depuis les outils de développement du navigateur, puis copiez la clé dans votre invite.
const form = new FormData();form.append("file_1", fileInput.files[0]);form.append("processing_lane", "instant");form.append("client_wait", "true");const response = await fetch("https://api.paperoffice.ai/latest/job/add/paperoffice_aiocr___generate", { method: "POST", headers: { Authorization: "Bearer po_pk_YOUR_PUBLISHABLE_KEY" }, body: form,});console.log(await response.json()); curl -X POST "https://api.paperoffice.ai/latest/job/add/paperoffice_aiocr___generate" \ -H "Authorization: Bearer po_pk_YOUR_PUBLISHABLE_KEY" \ -H "Origin: https://app.example.com" \ -F "[email protected]" \ -F "processing_lane=instant" \ -F "client_wait=true" Premier appel
fetch depuis le navigateur, l'Origin est défini par le navigateur
L'appel est adressé à POST /latest/job/add/{pipeline} — le même point de terminaison qu'avec une clé secrète. Seuls le type de clé et l'en-tête Origin, envoyé automatiquement par le navigateur, sont nouveaux.
- Origin provient du navigateur
fetch définit automatiquement l'en-tête Origin. Les scripts en dehors du navigateur (cURL, Node) doivent l'envoyer explicitement — sinon la réponse sera API avec un code 403 ORIGIN_HEADER_REQUIRED.
- Résultat en ligne
Avec processing_lane=instant et client_wait=true, la API maintient la connexion et renvoie le résultat directement dans la réponse.
- Codes d'erreur clairs
402 BUDGET_EXHAUSTED, 403 DOMAIN_NOT_ALLOWED, 403 SCOPE_NOT_GRANTED, 429 RATE_LIMIT_EXCEEDED — chaque limite signale avec son propre code.
Matrice de sécurité
Six contrôles, tous appliqués côté serveur
Limité par la portée, lié à l'origine, plafonné par le budget, révocable à tout moment. Chaque contrôle est appliqué côté serveur — c'est pourquoi la clé peut figurer dans le code frontend.
-
Limité au périmètre
Les clés n'accèdent qu'aux groupes de points de terminaison que vous autorisez explicitement :
ocr:read,llm:generate,translate:textet d'autres. Les appels hors périmètre renvoient HTTP 403. -
Lié à l'origine
Chaque requête doit inclure un en-tête Origin correspondant à la liste autorisée de la clé (hôte exact ou joker de sous-domaine). Si cela ne correspond pas, API renvoie HTTP 403.
-
Aucune limite de minutes supplémentaire
Il n'existe pas de limite de minutes spécifique à po_pk_. Les limites normales de taux de jetons du compte s'appliquent; la consommation est plafonnée par le budget à vie.
-
Budget plafonné
Chaque clé dispose d'un budget à vie. Une fois épuisé, API renvoie HTTP 402 BUDGET_EXHAUSTED — la consommation s'arrête immédiatement, et non pas lors de la facturation.
-
Révocation à tout moment
Les clés peuvent être révoquées à tout moment depuis le compte. Une clé révoquée n'est plus acceptée par API.
-
Bloqué de manière fixe
HTTP DELETE, ainsi que la connexion au compte, la gestion des clés, OAuth, l'administration partenaire, les mutations de paiement et le crack de mot de passe restent strictement bloqués pour tout po_pk_. Les API produits documentés — y compris la suppression POST, les webhooks, la lecture de facturation et CRM — sont autorisés.
Hiérarchie des clés
Trois types de clés, responsabilités claires
Clé secrète pour le serveur, clé publiable pour le navigateur — plus un jeton utilisateur pour un accès utilisateur avec limitation de débit.
| Préfixe | Type | Cas d'utilisation | Navigateur sécurisé | Portée par défaut |
|---|---|---|---|---|
po_sk_ | Clé secrète | Serveur-à-Serveur, accès complet API | Non | Toutes les extrémités |
po_ut_ | User Token | Utilisateur, Limité par niveau | Non | Basé sur le niveau |
po_pk_ | Publishable Key | Navigateur / AI-Canvas (Claude, ChatGPT, Grok) | Oui | Liste de portée |
Trois préréglages
Un clic. Une clé. Un objectif.
Chaque preset est configuré pour un cas d'utilisation spécifique — des paramètres par défaut sécurisés, des étendues sélectionnées, des budgets réalistes. Tout peut être ajusté à tout moment dans le tableau de bord.
-
DEFAULTLecture sécuriséeDroits par défaut sécurisés pour des démos simples et des outils internes : OCR, LLM, Traduction, Documents, Recherche.
Étendues d'autorisation (Scopes)
Commencer avec ce preset -
AIDEMOJeu d'essai IA RecommandéPour Claude Artifacts, ChatGPT Canvas et les démos Grok. Tout ce dont vous avez besoin pour activer les démos IA en direct.
Étendues d'autorisation (Scopes)
Commencer avec ce preset -
WIDGETSite Web publicPour les formulaires de contact, les widgets de chat et les boutons de réservation sur votre site web d'entreprise.
Étendues d'autorisation (Scopes)
Commencer avec ce preset
Premier appel API
Prêt à effectuer votre premier appel depuis le navigateur ?
Créer une clé, ouvrir llms-full.txt, insérer le prompt — Votre application appelle directement API depuis Claude, ChatGPT ou Grok.
Publishable Keys en action
Découvrez Publishable Keys de PaperOffice en pratique — en vidéo.
Questions fréquentes
Tout l'essentiel en un coup d'œil
En quoi po_pk_ diffère-t-il de po_sk_?
po_sk_ (Clé secrète) est conçu pour les intégrations serveur-à-serveur — accès complet à la API, ne jamais intégrer dans le navigateur. po_pk_ (Clé publiable) est conçu pour le code côté navigateur : portée limitée, lié à l'origine, plafonné par budget. Même API, profil de sécurité différent.
Pourquoi ne pas simplement utiliser un proxy inverse depuis son propre backend ?
C'est la voie classique — elle nécessite toutefois toujours un backend. Les AI-Artifacts (Claude, ChatGPT, Grok) sont conçus pour fonctionner sans backend propre. Les Publishable Keys le rendent possible sans révéler votre Secret Key : les limites sont appliquées côté serveur.
Cela fonctionne-t-il dans les Artifacts Claude, malgré leur bac à sable CORS ?
Oui. L'appel s'effectue directement depuis le navigateur, l'en-tête Origin est défini par le navigateur lui-même. PaperOffice ne fournit pas de liste d'autorisation fournisseur; saisissez l'origine lors de la création de la clé depuis les outils de développement.
Que se passe-t-il si ma po_pk_ devient publiquement visible ?
Les dégâts restent limités : le verrouillage d'origine bloque l'utilisation sur des domaines tiers, la limite de budget arrête la consommation, la limite de débit ralentit les accès automatisés. Révoquez la clé dans votre compte — après cela, la API ne l'acceptera plus.
Puis-je ajouter ma propre domaine à la liste d'origines autorisées ?
Oui. Lors de la création de la clé, ajoutez chaque origine à la liste d'autorisation — sous forme d'hôte exact ou de joker de sous-domaine. Le preset WIDGET est conçu exactement pour cela : enregistrez votre propre domaine et intégrez des widgets de chat, réservation ou contact sans backend.
Comment définir le budget par clé ?
Lors de la création, vous définissez une limite à vie ; les préréglages incluent chacun une valeur par défaut. Une fois la limite atteinte, API renvoie HTTP 402 BUDGET_EXHAUSTED. Vous pouvez modifier cette valeur à tout moment depuis votre compte.
Un po_pk_ nécessite-il son propre tarif ?
Non. Le Publishable Key est une couche de protection supplémentaire autour de votre compte existant: il limite les portées, les origines et le budget. Le tableau comparatif des prix indique quel plan convient à votre configuration.
Quels endpoints sont bloqués pour un po_pk_ ?
HTTP DELETE, ainsi que la connexion au compte, l'administration utilisateur, la gestion des clés, OAuth, l'administration partenaire, Stripe Checkout et le crack de mot de passe sont strictement bloqués. Les API produits documentés sont autorisés, y compris la suppression POST, les webhooks, la lecture de facturation, l'importation et CRM. La suppression de Workspace, le vidage de la corbeille et la levée du hold légal restent réservés à l'interface utilisateur uniquement (403 UI_ONLY_ENDPOINT).
Exploitation et confiance
Ce que les équipes Enterprise vérifient avant le premier appel
Contrats, sécurité, support et limites, tous liés au même endroit.
- Sécurité et conformité ISO 27001, SOC 2 Type II, infrastructure propre en UE.
- SLA 99,9 % Disponibilité par mois civil, garantie contractuellement.
- Traitement des données pour le compte (DPA) Contrat de traitement des données conforme au RGPD.
- Liste des sous-traitants Tous les sous-traitants, listés de manière transparente.
- Support technique Accès direct à l'équipe de support via un ticket.
- Limites de taux et en-têtes Valeurs minimales documentées par jeton, en-têtes RateLimit dans chaque réponse.
- Tarifs et crédits Prix transparents des crédits par appel.
Prochaine étape
Voici comment continuer
L'étape suivante recommandée dans l'entonnoir des développeurs et deux branches correspondantes.