po_sk_ Serveur à serveur Clé secrète
- Accès complet dans le cadre du compte
- Jamais livré dans le code du navigateur
- Aucun en-tête Origin requis
- Bloqué pour MCP
Authentification et Clés
Chaque point de terminaison produit de PaperOffice-API attend l'en-tête Authorization: Bearer. Aucun flux OAuth, aucun renouvellement.
Deux types de jetons, dix portées d'autorisation, limites de débit documentées.
curl -X POST "https://api.paperoffice.ai/latest/job/add/workflow" \ -H "Authorization: Bearer po_ut_YOUR_API_KEY" \ -F "[email protected]" \ -F "idp_collection=invoice" \ -F "model=basic-pro-max" import requestsresponse = requests.post( "https://api.paperoffice.ai/latest/job/add/workflow", headers={"Authorization": "Bearer po_ut_YOUR_API_KEY"}, files={"file_1": open("invoice.pdf", "rb")}, data={"idp_collection": "invoice", "model": "basic-pro-max"},)print(response.json()) const form = new FormData();form.append("file_1", new Blob([await readFile("invoice.pdf")]), "invoice.pdf");form.append("idp_collection", "invoice");form.append("model", "basic-pro-max");const response = await fetch("https://api.paperoffice.ai/latest/job/add/workflow", { method: "POST", headers: { Authorization: "Bearer po_ut_YOUR_API_KEY" }, body: form,});console.log(await response.json()); Premier appel
Le chemin vers /latest/job/add/ est le nom de la file d'attente du job : généralement sous la forme handler___command (par exemple paperoffice_aiocr___generate), pour IDP structuré, utilisez votre propre workflow de pipeline.
Authorization: Bearer po_ut_… — un point de terminaison produit n'a pas besoin de plus. po_sk_ et po_ut_ n'envoient pas d'en-tête Origin.
handler___command avec trois underscores ; workflow est l'exception avec son propre slug. La notation par points répond à API avec HTTP 400 JOB_CONFIG_INVALID.
client_wait est par défaut true : API maintient la connexion et renvoie le résultat en ligne. Si la fenêtre temporelle est insuffisante, HTTP 202 avec job_id et poll_url pour GET /latest/job/get/{job_id} est retourné.
Pour idp_collection=invoice, basic-pro-max est le modèle recommandé : l'OCR-first limite les collections imprimées avec des positions de toute façon à basic-pro-max ; un model=premium envoyé sera renvoyé en tant que model: basic-pro-max.
Types de jetons
Les deux doivent être envoyés au serveur. Ils sont créés, rotatifs et révoqués dans l'application sous Compte → API.
po_sk_ Serveur à serveur po_ut_ Lié à l'utilisateur Les appels directs depuis le navigateur ne passent pas par ces deux jetons, mais par la clé publishable po_pk_ — liée à l'origine, avec budget et limites de taux. Voir les clés publishable
Autorisations
Un jeton utilisateur porte exactement les domaines que vous lui attribuez lors de sa création. Si un domaine manque, la réponse API renvoie HTTP 403.
documents Téléchargement, téléchargement, traitement
workspaces Gérer les dossiers et la structure
ai_jobs OCR, IDP, Extraction
billing Lire l'utilisation et le solde du compte
users Gérer les membres de l'équipe
webhooks Recevoir des événements
knowledge_base Base de connaissances et FAQ
agents Configurer les agents IDP
workflows Créer des automatisations
compliance Audit, RGPD, archivage
Limites de taux
La facturation se fait par token ; sans Bearer, par adresse IP. Les valeurs suivantes sont les minima documentés applicables à chaque tarif.
Les en-têtes RateLimit-* et X-RateLimit-* de chaque réponse indiquent ce qui reste disponible dans la fenêtre actuelle.
L'erreur API renvoie RATE_LIMIT_EXCEEDED. Réessayez l'appel après le délai indiqué dans l'en-tête Retry-After.
Les tarifs payants sont supérieurs à ces valeurs minimales. Le détail de l'étendue de chaque tarif figure sur la page des prix.
Sécurité
Six mécanismes qui s'activent en production — chacun avec un code de statut vérifiable ou un emplacement dans l'application.
Les clés sont créées, listées, rotées et révoquées dans l'application sous Compte → API. Un token révoqué répond par HTTP 401 TOKEN_NOT_FOUND.
Les jetons expirés ou erronés renvoient HTTP 401 INVALID_TOKEN. Les clés publishable expirent au plus tard après 365 jours.
Les limites de débit sont comptées par jeton, et non par compte. Une clé compromise n'affecte donc pas l'ensemble de l'exploitation.
Les clés publishable exigent un Origin dans la liste autorisée pour chaque requête ; sinon, l'API répond 403 ORIGIN_HEADER_REQUIRED ou DOMAIN_NOT_ALLOWED.
Chaque réponse facturée contient un bloc _billing ; l'évaluation par appel fournit GET /latest/billing/usage-detail.
La connexion au compte, la gestion des clés, OAuth, l'administration des partenaires, la mutation de paiement et le crack de mot de passe sont bloqués pour les clés de navigateur. Le produit APIs incluant la lecture de facturation et les webhooks sont autorisés. La suppression de Workspace, le vidage de la corbeille et l'autorisation Legal-Hold ne sont possibles que dans l'application (403 UI_ONLY_ENDPOINT).
Pour aller plus loin
Les pages qui couvrent tout ce qui tourne autour de l'authentification.
Commencer
Vous créez la clé dans l'application sous Compte → API. Le premier appel est expliqué étape par étape dans le Premier appel API.
Exploitation et confiance
Contrats, sécurité, support et limites, tous liés au même endroit.
Prochaine étape
L'étape suivante recommandée dans l'entonnoir des développeurs et deux branches correspondantes.