Publishable Keys
Chiamate API sicure nel browser. Senza un backend proprietario.
Un Publishable Key (po_pk_) può trovarsi nel frontend: limitato per ambito, vincolato all'origine e coperto da budget.
Per artefatti Claude, Canvas ChatGPT, Grok e ogni sua applicazione web.
- Infrastruttura EU proprietaria I suoi dati rimangono in Europa.
- ISO 27001 attivo Sicurezza certificata.
- SOC 2 Type II attivo Standard internazionali per audit.
- Oltre 24 anni di esperienza Collaudato. Stabile. Futuro garantito.
Direttamente dal browser
Dalla AI-Canvas direttamente alla chiamata API
Sta costruendo un'app PDF-to-text in Claude Artifacts, ChatGPT Canvas o Grok. Senza un backend, la chiamata a API è finora mancata: CORS blocca, una chiave segreta sarebbe visibile nel codice sorgente e una chiave aperta graverebbe sul suo account. È proprio questa lacuna che chiudono le Publishable Keys.
Inserire in Claude, ChatGPT o Grok
Un prompt che trasforma ogni AI-Canvas in una demo reale, supportata da API — senza backend.
Leggi questo documento API:
https://api.paperoffice.ai/latest/docs/llms-full.txt Crea un'app React a file singolo (Artifact Claude / Canvas ChatGPT / Grok):
L'utente carica un PDF, l'app chiama
/job/add/paperoffice_aiocr___generate direttamente dal browser
e mostra il testo estratto. Autenticazione: Bearer po_pk_MY_PUBLISHABLE_KEY (chiedi all'utente la chiave).
Usa processing_lane=instant per risultati sincroni. L'intestazione Origin è impostata dal browser. Scegliere un preset, creare una chiave, incollarla.
Il dashboard fornisce preset per ambiti e budget. Le origini rimangono vuote: inserisci l'intestazione Origin dagli Strumenti di sviluppo del browser, quindi copia la chiave nel suo prompt.
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" Prima chiamata
fetch dal browser, l'Origin è impostato dal browser
La chiamata va a POST /latest/job/add/{pipeline} — lo stesso endpoint usato con una chiave segreta. Nuovi sono solo il tipo di chiave e l'intestazione Origin, che il browser invia automaticamente.
- L'origine proviene dal browser
fetch imposta automaticamente l'intestazione Origin. Gli script al di fuori del browser (cURL, Node) devono inviarla esplicitamente — altrimenti la API risponde con 403 ORIGIN_HEADER_REQUIRED.
- Risultato inline
Con processing_lane=instant e client_wait=true, la API mantiene la connessione aperta e restituisce il risultato direttamente nella risposta.
- Codici di errore chiari
402 BUDGET_EXHAUSTED, 403 DOMAIN_NOT_ALLOWED, 403 SCOPE_NOT_GRANTED, 429 RATE_LIMIT_EXCEEDED — ogni limite segnala con un codice specifico.
Matrice di sicurezza
Sei controlli, tutti applicati lato server
Limitato per ambito, vincolato all'origine, coperto da budget, revocabile in qualsiasi momento. Ogni controllo viene applicato lato server; pertanto la chiave può trovarsi nel codice frontend.
-
Limitato all'ambito
Le chiavi raggiungono solo i gruppi di endpoint che ha esplicitamente autorizzato:
ocr:read,llm:generate,translate:texte altri. Le chiamate al di fuori dell'ambito restituiscono HTTP 403. -
Vincolato all'origine
Ogni richiesta deve includere un header Origin che corrisponde alla lista consentita della chiave (host esatto o wildcard di sottodominio). Se non corrisponde, viene restituito HTTP 403 con codice API.
-
Nessun limite extra di minuti
Non esiste un limite di minuti specifico solo per po_pk_. Si applicano i normali limiti di velocità dei token dell'account; il consumo è coperto dal budget lifetime.
-
Budget limitato
Ogni chiave ha un budget lifetime. Una volta esaurito, API restituisce HTTP 402 BUDGET_EXHAUSTED — il consumo si interrompe immediatamente, non solo in fase di fatturazione.
-
Revoca in qualsiasi momento
Le chiavi possono essere revocate in qualsiasi momento dall'account. Una chiave revocata non viene più accettata da API.
-
Blocco permanente
HTTP DELETE, accesso all'account, gestione delle chiavi, OAuth, amministrazione partner, transazioni di pagamento e cracking della password rimangono fissamente bloccati per ogni po_pk_. Le API documentate del prodotto — inclusa l'eliminazione POST, i webhook, la lettura dei dati di fatturazione e il CRM — sono consentite.
Gerarchia delle chiavi
Tre tipi di chiave, responsabilità chiare
Secret Key per il server, Publishable Key per il browser — più un User Token per l'accesso utente con rate limiting.
| Prefisso | Tipo | Caso d'uso | Sicuro per il browser | Ambito predefinito |
|---|---|---|---|---|
po_sk_ | Chiave segreta | Server-to-Server, accesso completo a API | No | Tutti gli endpoint |
po_ut_ | User Token | Utente, limitato per livello | No | Basato sul livello |
po_pk_ | Publishable Key | Browser / AI canvas (Claude, ChatGPT, Grok) | Sì | Elenco degli ambiti |
Tre preset
Un clic. Una chiave. Uno scopo.
Ogni preset è configurato per un caso d'uso specifico: impostazioni predefinite sicure, ambiti curati, budget realistici. Tutto modificabile in qualsiasi momento dalla dashboard.
-
DEFAULTLettura sicuraAutorizzazioni predefinite sicure per demo semplici e strumenti interni: OCR, LLM, Traduzione, Documenti, Ricerca.
Ambiti di autorizzazione (Scopes)
Iniziare con questo preset -
AIDEMOArea di prova AI ConsigliatoPer Claude Artifacts, ChatGPT Canvas e demo Grok. Tutto ciò che serve per attivare le demo AI in tempo reale.
Ambiti di autorizzazione (Scopes)
Iniziare con questo preset -
WIDGETSito web pubblicoPer moduli di contatto, widget di chat e pulsanti di prenotazione sul sito web aziendale.
Ambiti di autorizzazione (Scopes)
Iniziare con questo preset
Prima chiamata API
Pronto per la prima chiamata dal browser?
Chiave pubblica creata, llms-full.txt aperto, prompt inserito — La sua app chiama direttamente API da Claude, ChatGPT o Grok.
Chiavi Pubblicabili in Azione
Veda come funzionano le Publishable Keys di PaperOffice nella pratica — nel video.
Domande frequenti
Tutto ciò che è importante in una panoramica
In cosa si differenzia po_pk_ da po_sk_?
po_sk_ (Chiave Segreta) è destinata all'integrazione server-to-server — accesso completo a API, non includere mai nel browser. po_pk_ (Chiave Pubblicabile) è costruita per il codice del browser: scope limitato, legato all'origine, con budget limitato. Stessa API, diverso profilo di sicurezza.
Perché non usare semplicemente un reverse-proxy dal proprio backend?
Questa è la via classica, ma richiede comunque un backend. Gli AI Artifacts (Claude, ChatGPT, Grok) sono progettati per funzionare senza un backend proprietario. Le Publishable Keys lo rendono possibile senza rivelare il suo Secret Key: i limiti vengono applicati lato server.
Funziona negli Artifacts di Claude, nonostante la loro sandbox CORS?
Sì. La chiamata avviene direttamente dal browser; l'intestazione Origin è impostata automaticamente dal browser. PaperOffice non fornisce una lista consentita dai vendor; inserisci l'origine durante la creazione della chiave dagli Strumenti di sviluppo.
Cosa succede se la mia po_pk_ diventa pubblicamente visibile?
Il danno rimane contenuto: il blocco Origin impedisce l'utilizzo su domini terzi, il limite di budget interrompe il consumo, il limite di frequenza rallenta gli accessi automatizzati. Revoca la chiave nell'account — dopo ciò, API non la accetterà più.
Posso aggiungere il mio dominio come origine consentita?
Sì. Durante la creazione della chiave, aggiunga ogni origine alla Allow-List — come host esatto o come wildcard di sottodominio. Il preset WIDGET è stato costruito esattamente per questo: registri il suo dominio e integri widget di chat, prenotazione o contatto senza backend.
Come imposto il budget per chiave?
Durante la creazione, selezioni un limite Lifetime; i preset includono ciascuno una preimpostazione. Una volta raggiunto il limite, API restituisce HTTP 402 BUDGET_EXHAUSTED. Può modificare il valore in qualsiasi momento dall'account.
Un po_pk_ richiede un piano tariffario separato?
No. Il Publishable Key è uno strato di protezione aggiuntivo intorno al suo account esistente: limita ambiti, origini e budget. La panoramica dei prezzi mostra quale piano si adatta al suo setup.
Quali endpoint sono bloccati per po_pk_?
HTTP DELETE, accesso all'account, amministrazione utenti, gestione delle chiavi, OAuth, amministrazione partner, Stripe Checkout e cracking della password sono fissamente bloccati. Le API documentate del prodotto sono consentite, tra cui l'eliminazione POST, i webhook, la lettura dei dati di fatturazione, l'importazione e il CRM. L'eliminazione di Workspace, lo svuotamento del cestino e il rilascio della conservazione legale rimangono solo tramite interfaccia utente (403 UI_ONLY_ENDPOINT).
Operazioni e fiducia
Cosa i team enterprise verificano prima della prima chiamata
Contratti, sicurezza, supporto e limiti, tutti linkati in un unico luogo.
- Sicurezza e conformità ISO 27001, SOC 2 Type II, propria infrastruttura UE.
- SLA 99,9% Disponibilità per ogni mese civile, garantita contrattualmente.
- Trattamento dei dati per conto terzi (DPA) Contratto conforme al GDPR per il trattamento dei dati per conto terzi.
- Elenco dei sub-fornitori Tutti i sub-fornitori, elencati in modo trasparente.
- Supporto tecnico Canale diretto verso il team di supporto, con ticket.
- Limiti di frequenza e intestazioni Valori minimi documentati per token, intestazioni RateLimit in ogni risposta.
- Prezzi e Credits Prezzi trasparenti dei Credits per chiamata.
Prossima fermata
Come procedere
Il prossimo passo consigliato nel funnel degli sviluppatori e due diramazioni pertinenti.