Naar inhoud springen
Overzicht Overzicht Nieuws Nieuws
Delen

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 prefix po_pk_ Standaard gebonden aan de oorsprong Altijd herroepbaar

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.

Werkt in Claude ArtifactsChatGPT CanvasGrokElke browser-app

Invoegen in Claude, ChatGPT of Grok

Een prompt die elke AI-Canvas verandert in een echte, door API ondersteunde demo — zonder backend.

AI canvas Prompt
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.

Sleutel aanmaken
JavaScript
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());

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:text en 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

Authenticatie & keys

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.

  • DEFAULT Veilig lezen

    Standaard rechten voor eenvoudige demo's en interne tools: OCR, LLM, Translate, Documents, Search.

    Machtigingsbereiken (scopes)

    ocr:readllm:generatetranslate:textdocuments:uploaddocuments:readsearch:query
    Met deze preset starten
  • WIDGET Openbare website

    Voor contactformulieren, chatwidgets en boekingsknoppen op de eigen bedrijfswebsite.

    Machtigingsbereiken (scopes)

    knowledge:readwidget:chatwidget:bookingwidget:formswidget:contactwidget:leadwidget:fingerprint
    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.

Eigen prefix Zonder backend Altijd herroepbaar
Video

Publishable keys in actie

Zie hoe PaperOffice Publishable Keys in de praktijk werken — in de video.

Publishable keys in actie

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).

Waar wilt u PaperOffice testen?

Computer en smartphone zijn verbonden: workspace op de computer, vastleggen op de telefoon.

Uw proefversie is klaar

Waar wilt u beginnen?

De volledige workspace is geoptimaliseerd voor de computer. De mobiele versie is geschikt voor het vastleggen, controleren en goedkeuren van documenten.

app.paperoffice.ai

Start op de computer

We sturen uw persoonlijke toegangslink naar uw e-mailadres.

Gratis registreren App openen PaperOffice-app Het volledige product: web, desktop en mobiel. Documenten vastleggen, organiseren, zoeken en bewerken met het team. Gratis account vereist Playground openen Playground Probeer geselecteerde functies direct — zonder registratie, met een beperkte demo-API-sleutel. Wel een beperkte demo-API-sleutel