Publishable Keys
浏览器安全的 API 调用。 无需自有后端。
一个 Publishable Key (po_pk_) 可以出现在前端:范围受限、绑定到源域且预算封顶。
适用于 Claude 工件、ChatGPT Canvas、Grok 及任何自定义 Web 应用。
- 自有欧盟基础设施 您的数据保留在欧洲。
- ISO 27001 有效 安全已获认证。
- SOC 2 Type II 有效 国际审计标准。
- 24+年经验 经证实。稳定。面向未来。
直接来自浏览器
从 AI Canvas 直接调用 API
您在 Claude Artifacts、ChatGPT Canvas 或 Grok 中构建 PDF 转文本应用。若无后端,API 调用此前无法进行:CORS 被阻止,密钥明文暴露于源代码中,且开放密钥会消耗您的账户额度。可发布密钥正是为了解决这一空白而生。
粘贴到 Claude、ChatGPT 或 Grok
一个提示词,将任何 AI Canvas 转变为真正由 API 支持的演示——无需后端。
阅读此 API 文档:
https://api.paperoffice.ai/latest/docs/llms-full.txt 构建一个单文件 React 应用(Claude Artifact / ChatGPT Canvas / Grok):
用户上传 PDF,应用直接从浏览器调用
/job/add/paperoffice_aiocr___generate
并显示提取的文本。认证:Bearer po_pk_MY_PUBLISHABLE_KEY(提示用户输入密钥)。
使用 processing_lane=instant 获取同步结果。Origin 头由浏览器设置。 选择一个预设,创建一个密钥并粘贴。
仪表板提供用于范围和预算的预设。来源字段保持为空——请从浏览器开发者工具中复制来源标头,然后将密钥粘贴到您的提示中。
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" 首次调用
从浏览器 fetch,Origin 由浏览器设置
请求发送至 POST /latest/job/add/{pipeline} —— 与使用密钥相同的端点。新增的仅是密钥类型以及浏览器自动发送的 Origin 头。
- Origin 来自浏览器
fetch 会自动设置 Origin 头。浏览器外的脚本(如 cURL、Node)必须显式发送该头——否则 API 将返回 403 ORIGIN_HEADER_REQUIRED。
- 结果内联
通过设置 processing_lane=instant 和 client_wait=true,API 会保持连接并将结果直接返回在响应中。
- 清晰的错误代码
402 BUDGET_EXHAUSTED, 403 DOMAIN_NOT_ALLOWED, 403 SCOPE_NOT_GRANTED, 429 RATE_LIMIT_EXCEEDED — 每个限制都会返回其专属的错误代码。
安全矩阵
六项控制措施,全部由服务器端强制执行
范围受限、绑定来源、预算封顶、随时可撤销。每项控制均在服务器端强制执行——因此密钥可以放在前端代码中。
-
作用域受限
密钥仅能访问您明确授权的端点组:
ocr:read、llm:generate、translate:text等。超出作用域的调用将返回 HTTP 403。 -
绑定来源
每个请求必须携带与密钥白名单匹配的 Origin 头(精确主机名或子域名通配符)。若不匹配,API 将返回 HTTP 403。
-
无额外分钟数限制
没有仅针对 po_pk_ 的独立分钟限制。适用账户的正常令牌速率限制;消耗由终身预算封顶。
-
预算限额
每个密钥都带有生命周期预算。一旦用完,API 将返回 HTTP 402 BUDGET_EXHAUSED —— 消费在此终止,而非等到结算时。
-
随时撤销
密钥可随时在账户中撤销。被撤销的密钥将不再被API接受。
-
已锁定
HTTP DELETE、账户登录、密钥管理、OAuth、合作伙伴管理员、支付变更和密码破解对每个 po_pk_ 始终处于锁定状态。记录的产品 APIs(包括 POST 删除、Webhooks、计费读取和 CRM)是允许的。
关键层次结构
三种密钥类型,职责明确
服务器的密钥,浏览器的可发布密钥——以及用于用户相关、速率限制访问的用户令牌。
| 前缀 | 类型 | 用例 | 浏览器安全 | 默认作用域 |
|---|---|---|---|---|
po_sk_ | 密钥 | 服务器到服务器,完整 API 访问权限 | 否 | 所有端点 |
po_ut_ | User Token | 用户范围,分层限制 | 否 | 基于层级 |
po_pk_ | Publishable Key | 浏览器 / AI画布 (Claude, ChatGPT, Grok) | 是 | 范围列表 |
首次 API 调用
准备好从浏览器发起首次调用了吗?
创建密钥,打开llms-full.txt,插入提示词——您的应用直接从API、Claude、ChatGPT或Grok调用。
Publishable Keys 实战演示
观看 PaperOffice Publishable Keys 在实际中如何运作——通过视频。
常见问题
一切重要信息概览
po_pk_ 与 po_sk_ 有何区别?
po_sk_(密钥)用于服务器到服务器的集成——拥有对 API 的完全访问权限,切勿嵌入浏览器。po_pk_(可发布密钥)专为浏览器代码设计:作用域受限、绑定来源域名、预算封顶。虽然同样使用 API,但安全配置不同。
为什么不直接使用后端中的反向代理?
这是经典的方式——但它仍然需要一个后端。AI-Artifacts (Claude, ChatGPT, Grok) 专为无需自有后端的运营而设计。Publishable Keys 使得在不泄露您的 Secret Key 的情况下成为可能:限制由服务器端强制执行。
在具有 CORS 沙箱的 Claude 工件中是否可行?
是的。调用直接从浏览器发起,Origin 头由浏览器自动设置。PaperOffice 不提供 Vendor-Allow-List;请在创建密钥时从 DevTools 中填入 Origin。
如果我的 po_pk_ 公开可见会发生什么?
损害将受到限制:来源锁定会阻止在其他域名上使用,预算限制会终止消耗,速率限制会自动减缓自动化访问。请在账户中撤销该密钥——之后 API 将不再接受它。
我可以将自己的域名添加为允许的来源吗?
可以。在创建密钥时,您可以将每个来源添加到允许列表中——作为精确主机名或子域通配符。WIDGET 预设正是为此构建:注册您自己的域名并嵌入聊天、预订或联系小部件,无需后端。
如何为每个密钥设置预算?
创建时选择终身限额;预设值各自带有默认值。达到限额后,API 将返回 HTTP 402 BUDGET_EXHAUSTED。您可以随时在账户中调整该值。
po_pk_ 是否需要独立的套餐?
否。Publishable Key 是围绕您现有账户的额外保护层:它限制作用域(Scopes)、来源(Origins)和预算。价格概览将显示哪个计划适合您的设置。
哪些端点被 po_pk_ 锁定?
HTTP DELETE 以及账户登录、用户管理、密钥管理、OAuth、合作伙伴管理、Stripe 结账和密码破解均被永久锁定。允许执行文档化的产品 APIs,包括 POST 删除、Webhooks、账单读取、导入和 CRM。Workspace 删除、清空回收站和法律保留释放仍仅限 UI 操作(返回 403 UI_ONLY_ENDPOINT)。
下一站
后续步骤
开发者漏斗中推荐的下一步以及两个合适的分支。