Перейти до змісту
Огляд Огляд Новини Новини
Поділитися

Publishable Keys

Безпечні для браузера виклики API. Без власного бекенду.

Publishable Key (po_pk_) може бути розміщено у фронтенді: обмежений scope, прив'язаний до origin та лімітований бюджетом.

Для артефактів Claude, Canvas ChatGPT, Grok та будь-якого власного веб-додатку.

Власний префікс po_pk_ За замовчуванням прив'язано до Origin Можна відкликати в будь-який час

Безпосередньо з браузера

Від AI-Canvas безпосередньо до виклику API

Ви створюєте додаток для перетворення PDF у текст у Claude Artifacts, ChatGPT Canvas або Grok. Без бекенду виклик API залишався б неможливим: CORS блокує запити, секретний ключ був би видимий у вихідному коді, а відкритий ключ навантажував би ваш рахунок. Саме цю прогалину заповнюють публічні ключі.

Працює в Claude ArtifactsChatGPT CanvasGrokБудь-який браузерний додаток

Вставте у Claude, ChatGPT або Grok

Промпт, який перетворює будь-яку AI-Canvas на справжню демоверсію з підтримкою API — без бекенду.

Штучний інтелект - Canvas Промпт
Прочитайте цей документ 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 встановлюється браузером.

Оберіть пресет, створіть ключ, вставте його.

Панель керування надає пресети для scope та бюджету. Origins залишаються порожніми — введіть заголовок Origin з інструментів розробника браузера, а потім скопіюйте ключ у свій промпт.

Створити ключ
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());

Перший виклик

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 — кожна межа повідомляє про себе власним кодом.

Матриця безпеки

Шість контрольних точок, усі примусово виконуються на стороні сервера

Обмежений scope, прив'язаний до origin, лімітований бюджетом, відкликається будь-коли. Кожен контроль примусово виконується на стороні сервера — тому ключ може стояти у коді фронтенду.

  • Обмежені за областю дії

    Ключі доступні лише для груп ендпоінтів, які ви явно надаєте: ocr:read, llm:generate, translate:text та інші. Запити поза цією областю повертатимуть HTTP 403.

  • Прив'язані до джерела

    Кожен запит повинен містити заголовок Origin, який відповідає списку дозволених для ключа (точний хост або піддомен із підтримкою wildcard). Якщо він не збігається, повертається HTTP 403 з кодом помилки API.

  • Немає додаткового ліміту хвилин

    Немає окремого ліміту хвилин лише для po_pk_. Діють звичайні ліміти швидкості токенів акаунту; споживання лімітується Lifetime-бюджетом.

  • Обмежений бюджет

    Кожен ключ має ліміт життєвого циклу (Lifetime-Budget). Якщо його вичерпано, API повертає HTTP 402 BUDGET_EXHAUSTED — споживання припиняється негайно, а не після розрахунку.

  • Відкликання в будь-який час

    Ключі можна відкликати в особистому кабінеті в будь-який момент. Відкликаний ключ більше не приймається API.

  • Жорстке блокування

    HTTP DELETE, а також вхід в акаунт, управління ключами, OAuth, адміністрування партнерів, платежі та підбір паролів назавжди заблоковані для кожного po_pk_. Документовані продуктові API — включаючи POST-видалення, вебхуки, читання фінансових даних та CRM — дозволені.

Ієрархія ключів

Три типи ключів, чіткі обов'язки

Secret Key для сервера, Publishable Key для браузера — плюс User Token для доступу, пов'язаного з користувачем, з обмеженням частоти запитів.

Префікс Тип Випадок використання Безпечний для браузера Стандартний обсяг
po_sk_ Секретний ключ Сервер-до-сервера, повний доступ API Ні Усі кінцеві точки
po_ut_ User Token Користувацький, обмежений рівнем Ні На основі рівня
po_pk_ Publishable Key Браузер / AI-Canvas (Claude, ChatGPT, Grok) Так Список обсягів

Автентифікація та ключі

Три пресети

Один клік. Один ключ. Одна мета.

Кожен пресет налаштований під конкретний сценарій використання — безпечні значення за замовчуванням, відібрані області дій (scopes), реалістичні бюджети. Все можна змінити в будь-який час у панелі керування.

  • DEFAULT Безпечне читання

    Безпечні базові права для простих демо-версій та внутрішніх інструментів: OCR, LLM, переклад, документи, пошук.

    Області дій (scopes)

    ocr:readllm:generatetranslate:textdocuments:uploaddocuments:readsearch:query
    Почати з цим пресетом
  • WIDGET Публічний вебсайт

    Для контактних форм, чат-віджетів та кнопок бронювання на власному корпоративному вебсайті.

    Області дій (scopes)

    knowledge:readwidget:chatwidget:bookingwidget:formswidget:contactwidget:leadwidget:fingerprint
    Почати з цим пресетом

Перший виклик API

Готові до першого виклику з браузера?

Створіть ключ, відкрийте llms-full.txt, вставте промпт — ваша програма викликає API напряму з Claude, ChatGPT або Grok.

Власний префікс Без бекенду Можна анулювати в будь-який час
Відео

Публічні ключі в дії

Дивіться, як працюють PaperOffice Publishable Keys на практиці — у відео.

Публічні ключі в дії

Часті запитання

Все важливе в огляді

Чим po_pk_ відрізняється від po_sk_?

po_sk_ (Secret Key) призначений для інтеграції сервер-до-сервера — повний доступ до API, ніколи не вставляйте його у браузері. po_pk_ (Publishable Key) створено для коду в браузері: обмежений обсяг прав, прив'язка до origin, ліміт бюджету. Той самий API, інший профіль безпеки.

Чому б просто не використовувати зворотний проксі з власного бекенду?

Це класичний шлях — але він все одно передбачає наявність бекенду. AI-артефакти (Claude, ChatGPT, Grok) розраховані на роботу без власного бекенду. Publishable Keys роблять це можливим, не розкриваючи ваш Secret Key: обмеження примусово застосовуються на стороні сервера.

Чи працює це в артефактах Claude, попри їхній CORS-пісочницю?

Так. Виклик відбувається напряму з браузера, заголовок Origin встановлюється самим браузером. PaperOffice не надає Vendor-Allow-List; при створенні ключа ви вводите Origin з інструментів розробника.

Що станеться, якщо мій po_pk_ стане публічно видимим?

Збитки залишаться обмеженими: блокування за Origin перешкоджає використанню на сторонніх доменах, ліміт бюджету зупиняє витрати, ліміт частоти запитів (Rate-Limit) сповільнює автоматизований доступ. Відкликати ключ можна в особистому кабінеті — після цього API більше не прийме його.

Чи можу я додати свій власний домен як дозволене джерело (Origin)?

Так. Під час створення ключа ви можете додати будь-який origin до списку дозволених — як точний хост або як піддомен із wildcard. Пресет WIDGET саме для цього й створений: зареєструйте свій власний домен і вбудуйте чат, бронювання або контактні віджети без бекенду.

Як встановити бюджет на кожен ключ?

Під час створення вибирайте ліміт на весь термін дії; пресети мають власні передвстановлені значення. Якщо ліміт вичерпано, API повертає HTTP 402 BUDGET_EXHAUSTED. Ви можете змінити це значення в обліковому записі будь-коли.

Чи потрібен po_pk_ власний тариф?

Ні. Publishable Key є додатковим захисним шаром навколо вашого існуючого акаунту: він обмежує scope, origins та бюджет. Який план підходить для вашої конфігурації, показано в огляді цін.

Які ендпоінти заблоковані для po_pk_?

HTTP DELETE, а також вхід в акаунт, адміністрування користувачів, управління ключами, OAuth, адміністрування партнерів, Stripe Checkout та підбір паролів назавжди заблоковані. Документовані продуктові API дозволені, включаючи POST-видалення, вебхуки, читання фінансових даних, імпорт та CRM. Видалення Workspace, очищення кошика та зняття Legal-Hold залишаються лише через інтерфейс (403 UI_ONLY_ENDPOINT).

Де ви хочете спробувати PaperOffice?

Комп'ютер і смартфон підключені: робочий простір на комп'ютері, захоплення на телефоні.

Ваша пробна версія готова

З чого ви хочете почати?

Повний робочий простір оптимізовано для комп'ютера. Мобільна версія підходить для захоплення, перевірки та затвердження документів.

app.paperoffice.ai

Почати на комп'ютері

Ми надішлемо ваше особисте посилання для входу на електронну пошту.

Зареєструватися безкоштовно Відкрити застосунок Застосунок PaperOffice Повний продукт: веб, комп’ютер і мобільні пристрої. Захоплюйте, організовуйте, шукайте документи та працюйте з ними разом із командою. Потрібен безкоштовний обліковий запис Відкрити Playground Playground Вибрані функції одразу — без реєстрації, з обмеженим демо-ключем API. Без реєстрації, але з обмеженим демо-ключем API