Publishable Keys
Browser-veilige API-aanroepen. Zonder eigen backend.
Een Publishable Key (po_pk_) mag in de frontend staan: scope-beperkt, origin-gebonden en budget-gemaximeerd.
Voor Claude-artifacts, ChatGPT Canvas, Grok en elke eigen web-app.
- Eigen EU-infrastructuur Uw gegevens blijven in Europa.
- ISO 27001 actief Beveiliging gecertificeerd.
- SOC 2 Type II actief Internationale auditnormen.
- 24+ jaar ervaring Bewezen. Stabiel. Toekomstbestendig.
Direct vanuit de browser
Van de AI-Canvas direct naar de API-aanroep
U bouwt in Claude Artifacts, ChatGPT Canvas of Grok een PDF-naar-tekst-app. Zonder backend bleef de API-aanroep uit: CORS blokkeert, een geheime sleutel zou zichtbaar zijn in de broncode, en een open sleutel belast uw account. Precis dit gat vullen Publishable Keys.
Invoegen in Claude, ChatGPT of Grok
Een prompt die elke AI-Canvas verandert in een echte, door API ondersteunde demo — zonder backend.
Lees deze API doc:
https://api.paperoffice.ai/latest/docs/llms-full.txt Bouw een single-file React-app (Claude Artifact / ChatGPT Canvas / Grok):
De gebruiker uploadt een PDF, de app roept
/job/add/paperoffice_aiocr___generate direct vanuit de browser
aan en toont de geëxtraheerde tekst. Auth: Bearer po_pk_MY_PUBLISHABLE_KEY (vraag de gebruiker om de sleutel).
Gebruik processing_lane=instant voor synchronisatie resultaten. De Origin-header wordt ingesteld door de browser. Een preset kiezen, een sleutel aanmaken, plakken.
Het dashboard biedt presets voor scopes en budget. Origins blijven leeg — voer de Origin-header uit de browser-devtools in, kopieer vervolgens de sleutel naar uw 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" Eerste aanroep
fetch vanuit de browser, Origin wordt door de browser ingesteld
De aanroep gaat naar POST /latest/job/add/{pipeline} — hetzelfde eindpunt als met een Secret Key. Nieuw zijn alleen het key-type en de Origin-header die de browser automatisch meesturent.
- Origin komt van de browser
fetch zet de Origin-header zelf in. Scripts buiten de browser (cURL, Node) moeten deze expliciet versturen — anders antwoordt API met 403 ORIGIN_HEADER_REQUIRED.
- Resultaat inline
Met processing_lane=instant en client_wait=true houdt API de verbinding open en levert het resultaat direct in het antwoord.
- Duidelijke foutcodes
402 BUDGET_EXHAUSTED, 403 DOMAIN_NOT_ALLOWED, 403 SCOPE_NOT_GRANTED, 429 RATE_LIMIT_EXCEEDED — elke limiet geeft een eigen code terug.
Beveiligingsmatrix
Zes controles, allemaal server-side afgedwongen
Scope-beperkt, origin-gebonden, budget-gemaximeerd, altijd herroepbaar. Elke controle wordt server-side afgedwongen — daarom mag de sleutel in de frontend-code staan.
-
Scope-beperkt
Keys bereiken alleen de endpointgroepen die u expliciet vrijgeeft:
ocr:read,llm:generate,translate:texten meer. Aanroepen buiten de scope leveren HTTP 403 op. -
Origin-gebonden
Elke aanvraag moet een Origin-header bevatten die past bij de allow-list van de key (exacte host of subdomain-wildcard). Past deze niet, dan levert API HTTP 403 op.
-
Geen extra minutenlimiet
Er is geen aparte minutenlimiet alleen voor po_pk_. De normale token-rate-limieten van het account gelden; het verbruik wordt gemaximeerd door het lifetime-budget.
-
Budget-beperkt
Elke sleutel heeft een lifetime-budget. Is dit opgebruikt, dan levert API HTTP 402 BUDGET_EXHAUSTED — het verbruik stopt daar, niet pas bij de afrekening.
-
Altijd intrekken
Sleutels kunnen op elk moment worden ingetrokken in het account. Een ingetrokken sleutel wordt niet langer geaccepteerd door API.
-
Vast geblokkeerd
HTTP DELETE evenals account-login, sleutelbeheer, OAuth, partner-admin, betalingsmutatie en wachtwoord-crack blijven voor elke po_pk_ permanent geblokkeerd. Gedocumenteerde product-APIs — inclusief POST-verwijdering, webhooks, billing-lezen en CRM — zijn toegestaan.
Sleutelhiërarchie
Drie sleuteltypen, duidelijke verantwoordelijkheden
Secret Key voor de server, Publishable Key voor de browser — plus een User Token voor gebruikersgerelateerde, rate-limited toegang.
| Voorvoegsel | Type | Toepassing | Browserveilig | Standaardscope |
|---|---|---|---|---|
po_sk_ | Geheime sleutel | Server-naar-server, volledige API-toegang | Nee | Alle endpoints |
po_ut_ | User Token | Gebruikersgebonden, Tier-beperkt | Nee | Tier-gebaseerd |
po_pk_ | Publishable Key | Browser / AI canvas (Claude, ChatGPT, Grok) | Yes | Scope-lijst |
Drie presets
Eén klik. Eén sleutel. Eén doel.
Elke preset is afgestemd op een specifieke use-case — veilige defaults, gecureerde scopes, realistische budgetten. Alles altijd aanpasbaar in het dashboard.
-
DEFAULTVeilig lezenStandaard rechten voor eenvoudige demo's en interne tools: OCR, LLM, Translate, Documents, Search.
Machtigingsbereiken (scopes)
Met deze preset starten -
AIDEMOAI-speeltuin AanbevolenVoor Claude Artifacts, ChatGPT Canvas en Grok-demos. Alles wat u nodig heeft om AI-demos live te zetten.
Machtigingsbereiken (scopes)
Met deze preset starten -
WIDGETOpenbare websiteVoor contactformulieren, chatwidgets en boekingsknoppen op de eigen bedrijfswebsite.
Machtigingsbereiken (scopes)
Met deze preset starten
Eerste API-aanroep
Klaar voor de eerste aanroep vanuit de browser?
Sleutel maken, llms-full.txt openen, prompt invoegen — uw app roept API direct aan vanuit Claude, ChatGPT of Grok.
Publishable keys in actie
Zie hoe PaperOffice Publishable Keys in de praktijk werken — in de video.
Veelgestelde vragen
Alles belangrijk op een rij
Wat is het verschil tussen po_pk_ en po_sk_?
po_sk_ (Secret Key) is bedoeld voor server-naar-server-integratie — volledige toegang tot API, nooit in de browser laden. po_pk_ (Publishable Key) is gebouwd voor browsercode: scope-beperkt, origin-gebonden, budget-gelimiteerd. Dezelfde API, ander veiligheidsprofiel.
Waarom niet gewoon een reverse-proxy vanuit de eigen backend gebruiken?
Dat is de klassieke weg — maar deze vereist nog steeds een backend. AI-artifacts (Claude, ChatGPT, Grok) zijn ontworpen voor gebruik zonder eigen backend. Publishable Keys maken dit mogelijk zonder uw Secret Key prijs te geven: de grenzen worden serverzijdwijze afgedwongen.
Werkt dit in Claude-artifacts, ondanks hun CORS-sandbox?
Ja. De aanroep gebeurt direct vanuit de browser, de browser zet zelf de Origin-header. PaperOffice levert geen vendor-allow-list; u voert de Origin in bij het aanmaken van de sleutel uit de devtools.
Wat gebeurt er als mijn po_pk_ publiekelijk zichtbaar wordt?
De schade blijft beperkt: de Origin-lock blokkeert gebruik op vreemde domeinen, het budget-limiet stopt het verbruik, het rate-limit remt geautomatiseerde toegang. Intrekken van de sleutel in uw account — daarna accepteert API deze niet meer.
Kan ik mijn eigen domein toevoegen als toegestane Origin?
Ja. Bij het aanmaken van de sleutel voegt u elke Origin toe aan de Allow-List — als exacte host of als subdomain-wildcard. Het WIDGET-preset is precies daarvoor gebouwd: registreer uw eigen domein en embed chat-, boekings- of contactwidgets zonder backend.
Hoe stel ik het budget per sleutel in?
Bij het aanmaken kiest u een Lifetime-limiet; de presets hebben elk een standaardwaarde. Wanneer de limiet is bereikt, retourneert API HTTP 402 BUDGET_EXHAUSTED. U kunt de waarde op elk moment aanpassen in uw account.
Heeft een po_pk_ een eigen tarief nodig?
Nee. De Publishable Key is een extra beschikingslaag rond uw bestaande account: hij beperkt scopes, origins en budget. Welk plan bij uw setup past, toont de prijsopzet.
Welke endpoints zijn geblokkeerd voor po_pk_?
HTTP DELETE evenals account-login, gebruiker-admin, sleutelbeheer, OAuth, partner-admin, Stripe-checkout en wachtwoord-crack zijn permanent geblokkeerd. Gedocumenteerde product-APIs zijn toegestaan, waaronder POST-verwijdering, webhooks, billing-lezen, import en CRM. Workspace verwijderen, prullenbak legen en Legal-Hold-vrijgave blijven UI-only (403 UI_ONLY_ENDPOINT).
Bedrijfsvoering en vertrouwen
Wat enterprise-teams controleren voor het eerste gesprek
Contracten, veiligheid, ondersteuning en limieten, allemaal op één plek gelinkt.
- Veiligheid en naleving ISO 27001, SOC 2 Type II, eigen EU-infrastructuur.
- SLA 99,9% Beschikbaarheid per kalendermaand, contractueel gegarandeerd.
- Verwerking namens derden (DPA) AVG-conform verwerkersovereenkomst.
- Lijst van sub-verwerkers Alle onderverwerkers, transparant opgesomd.
- Technische ondersteuning Directe weg naar het supportteam, met ticket.
- Rate-limieten en headers Gedocumenteerde minimumwaarden per token, RateLimit-header in elk antwoord.
- Prijzen en credits Transparante creditprijzen per aanroep.
Volgende halte
Zo gaat het verder
De aanbevolen volgende stap in de developer-funnel en twee passende vertakkingen.